커플 링 을 최소화하는 것이 매우 중요한 경우 REST를 사용해야합니다.분산 응용 프로그램에서 클라이언트와 서버 구성 요소 간의 .
제어 할 수없는 여러 클라이언트에서 서버를 사용할 경우에 해당 될 수 있습니다 . 서버를 정기적으로 업데이트 하려는 경우에도 마찬가지입니다.클라이언트 소프트웨어를 업데이트 할 필요없이 입니다.
이 낮은 수준의 결합을 달성하는 것은 쉽지 않다는 것을 확신 할 수 있습니다 . 성공하려면 REST의 모든 제약 조건을 따르는 것이 중요합니다. 순전히 상태 비 저장 연결을 유지하는 것은 어렵습니다. 올바른 미디어 유형을 선택하고 데이터를 형식으로 압축하는 것은 까다 롭습니다. 자신 만의 미디어 유형을 만드는 것은 훨씬 더 어려울 수 있습니다.
풍부한 서버 동작을 균일 한 HTTP 인터페이스에 적용하는 것은 혼란 스러울 수 있으며 상대적으로 간단한 RPC 접근 방식에 비해 현명하게 보일 수 있습니다.
어려움에도 불구하고 HTTP 프로토콜의 일관된 사용으로 인해 클라이언트 개발자가 쉽게 이해할 수있는 서비스가 있다는 이점이 있습니다. 하이퍼 미디어로 인해 서비스를 쉽게 검색 할 수 있어야하며 클라이언트는 서버의 변경 사항에 대해 매우 탄력적 이어야 합니다. .
하이퍼 미디어의 이점과 세션 상태의 회피로로드 밸런싱이 간단하고 서비스 파티셔닝이 가능합니다. 합니다. HTTP 규칙에 대한 엄격한 준수는 디버거 및 캐싱 프록시와 같은 도구의 가용성을 훌륭하게 만듭니다.
최신 정보
REST는 또 다른 '패션의 마지막 단어'인 것 같습니다 (또는 REST를 실제로 본 적이 없기 때문에 완전히 틀릴 수 있습니다).
SOA 유형의 프로젝트를 수행하려는 사람들이 SOAP 스택을 사용하여 약속 된 이점을 실현하지 못하고 있음을 발견했기 때문에 REST가 유행이되었다고 생각합니다. 사람들은 간단한 통합 방법론의 예로 웹을 계속 사용합니다. 불행히도 사람들은 웹을 만드는 데 필요한 계획과 예지력을 과소 평가하고 웹에서 발생하는 우연한 재사용을 허용하기 위해 수행해야하는 작업을 지나치게 단순화한다고 생각합니다.
실제로 REST를 본 적이 없다고 말하지만 웹 브라우저를 사용한다면 사실 일 수 없습니다. 웹 브라우저는 REST 클라이언트입니다.
- 누군가 웹 사이트에서 일부 html을 변경할 때 브라우저 업데이트를 수행 할 필요가없는 이유는 무엇입니까?
- 웹 사이트에 완전한 새 페이지 세트를 추가 할 수 있고 "클라이언트"가 업데이트 없이도 새 페이지에 계속 액세스 할 수있는 이유는 무엇입니까?
- http://example.org/images/cat 로 이동할 때 반환 유형이 jpeg 이미지가 될 것임을 알리기 위해 웹 브라우저에 "service-description-language"를 제공 할 필요가없는 이유는 무엇입니까? 에
http://example.org/description/cat
반환 형식은 text / html과 것인가?
- 웹 브라우저를 사용하여 브라우저가 출시되었을 때 존재하지 않았던 사이트를 방문 할 수있는 이유는 무엇입니까? 클라이언트는 이러한 사이트에 대해 어떻게 알 수 있습니까?
이것들은 어리석은 질문처럼 들릴지 모르지만 답을 알고 있다면 REST가 무엇인지 알 수 있습니다. REST의 더 많은 이점은 StackOverflow를 참조하십시오. 질문을 볼 때 해당 페이지를 북마크하거나 친구에게 URL을 보낼 수 있습니다. 동일한 정보를 볼 수 있습니다. 그는 그 질문을 찾기 위해 사이트를 탐색 할 필요가 없습니다.
StackOverflow는 인증에 다양한 OpenId 서비스를 사용하고 아바타 이미지에는 gravatar.com을, 분석 정보에는 google-analytics 및 Quantserve를 사용합니다. 이러한 종류의 다중 회사 통합은 SOAP 세계가 꿈꾸는 유형 입니다 . 가장 좋은 예 중 하나는 StackOverflow UI를 구동하는 데 사용되는 jQuery 라이브러리가 Google의 콘텐츠 전송 네트워크에서 검색된다는 사실입니다. SO가 클라이언트 (즉, 웹 브라우저)가 성능 향상을 위해 타사 사이트에서 코드를 다운로드하도록 지시 할 수 있다는 사실은 웹 클라이언트와 서버 간의 낮은 결합을 입증합니다.
다음은 작업중인 REST 아키텍처의 예입니다.
이제 일부 웹 사이트 / 애플리케이션이 REST의 규칙을 어 기고 브라우저가 예상대로 작동하지 않습니다.
- 악명 높은 뒤로 단추 문제
는 서버 측 세션 상태를 사용하여 발생합니다.
- 로드 밸런싱은 서버 측 세션 상태가있을 때 고통이 될 수 있습니다.
- Flash 응용 프로그램은 URL이 표현을 구체적으로 식별하지 못하는 경우가 많습니다.
- 웹 브라우저를 깨뜨리는 또 다른 문제는 미디어 유형 표준을 잘 준수하지 않는 것입니다. 우리는 IE6를 어떻게 죽여야하는지 항상 듣습니다. 문제는 표준이 제대로 따르지 않았거나 어떤 이유로 든 무시되었다는 것입니다.
- 로그인 세션의 사용은 많은 보안 허점의 원인입니다.
REST는 어디에나 있습니다. 잘 작동하는 것은 웹의 일부입니다. 웹처럼 확장 할 수있는 분산 애플리케이션을 구축하고, 웹처럼 변화에 탄력적으로 대응하고, 웹처럼 재사용을 촉진하려면 웹 브라우저를 구축 할 때와 동일한 규칙을 따르십시오.