2010-01-04 2 views
1

웹 GUI (아마도 Wicket으로 만든)와 함께 사용해야하는 작은 사용자 관리 도구를 만들고 있습니다. 이 도구가 제공하는 서비스 중 일부는 REST-ful이어야하며 이제 REST가 유일한 외부 인터페이스 (REST 인터페이스를 염두에두고 CouchDB가 있어야 함)인지 궁금하다. 그런 다음 응용 프로그램의 GUI 부분은 로컬 메소드 호출 대신 REST 호출을 작성합니다. 두 서버 모두 동일한 서버에 배포됩니다.로컬 인터페이스 용 REST?

REST 전용 인터페이스의 장점 : 느슨한 커플 링, 통합 인터페이스.

단점 : HTTP 오버 헤드, 객체를 전송 형식 (예 : JSON)으로 변환해야하며 구현하기가 더 어렵습니다.

이 단점은 실제 원격 인터페이스에만 REST를 사용해야한다는 생각을하게합니다. 내가 놓친 게 있니?

+1

커뮤니티 위키이어야합니다. 그것은 본질적으로 주관적입니다. –

답변

2

원격 통신의 모든 종류의 비용이 함께 제공됩니다. 그만한 가치가있는 것을 확보해야합니다. 매우 자주 브라우저, 서버, 프록시 및 캐시와 같은 중개자, 컬 또는 wget과 같은 도구 인 RESTful HTTP를 지원하는 데 사용할 수있는 막대한 양의 인프라와 백엔드 내의 정보가 연결될 수있게된다는 사실 물론 표준 방법, 응답 코드, 캐싱 방법 등이 그만한 가치가 있습니다. 때로는 그렇지 않습니다. 응용 프로그램에 대한 세부 정보 없이는 말할 수 없습니다. 그리고 느슨한 커플 링의 모든 이점이 비용보다 중요한지 여부는 주관적인 설계 결정으로 남아 있습니다.

의사 결정 (예 : 사람과 마주하는 부분에 대해 RESTful)을 강요하지 않는 웹 프레임 워크를 사용하는 것이 좋습니다.

0

내 의견 (바로 이것이 핵심)은 REST 만 사용해야한다는 것입니다. 왜? 당신이 그것의 작은 사용자 관리 도구를 말했기 때문에. 그것은 작고 가벼운 도구를 의미합니다. 필요없는 것이 분명해지기 전까지 왜 다중 인터페이스를 만드는 데 시간을 낭비합니까?

나는 당신이하려는 일에 너무 명확하지 않다고 말했다. 본질적으로 couchdb 인 GUI 래퍼? 또는 다른 구성 요소가 있습니까? 내 원래 의견은 아마도 붙어 ..

2

원래 인터페이스는 REST 인터페이스로도 잘 작동 할 수 있습니다.

극복해야 할 두 가지 큰 문제가 있습니다.

1) 많은 GUI에는 인터페이스 요구 사항 위에 구축 된 워크 플로우 구성 요소가 있습니다. 예를 들어, 큰 양식은 여러 페이지로 표시됩니다. 대부분의 컴퓨터가 신경 쓰지 않기 때문에 주로 인간 사용자를 위해 수행됩니다.

2) 최신 브라우저는 기본적으로 HTTP 동사 (PUT, DELETE 등)를 모두 지원하지 않습니다.

첫 번째 워크 플로는 최종 프레젠테이션 호출을 적절하게 호출한다는 목표하에 워크 플로가 간단한 프레젠테이션 일 수 있기 때문에 끝났습니다. 여러 페이지 양식 예제로 돌아가서 양식의 마지막 페이지에서 숨겨진 필드로 포함 된 다른 모든 페이지를 가질 수 있습니다. 따라서 최종 POST는 컴퓨터가 처음에하는 것처럼 필요한 모든 데이터입니다.

두 번째는 간단한 프록시를 사용하여 처리 할 수 ​​있습니다. 특히, DELETE를 수행하려는 경우, 동사를 POST에 전달하고 동사 = DELETE를 DELETE와 동일하게 처리 할 수 ​​있습니다. 마찬가지로 백엔드가 둘 다 비슷하게 지원되는지 확인하십시오. 또는 페이지에서 Ajax를 사용하여 올바른 호출을 할 수 있습니다.

GUI를 통해 제공되는 인터페이스가 페터 틱에서 "REST"되지 않을 수도 있지만, 기본 시스템은 아키텍처의 기본 제약 조건을 모두 따르기 때문에 적어도 프로토콜 수준에서 제공됩니다.

당신이 할 수있는 또 다른 일은 URL 인코딩 된 양식을 입력으로 받아들이지 만 출력으로 XML을 반환합니다. 여기서 핵심은 XSLT 스타일 시트를 XML과 함께 보낼 수 있다는 것입니다. 따라서 브라우저에서 렌더링 될 때 그래픽 및 버튼과 나머지 모든 HTML이 표시됩니다. 일반 클라이언트를 통해 호출하는 경우 "크래프트 (cruft)"가없는 순수한 XML을 얻습니다.

XHTML과 microformats를 사용하여 중간에 만날 수 있습니다. 페이로드는 순수한 XML 페이로드보다 크게 클 수는 없지만 브라우저에서 렌더링하기 위해 CSS 재미가있는 XHTML은 매일 정상입니다.

+0

HTML 양식은 PUT 및 DELETE를 지원하지 않지만 XMLHttpRequest는 지원합니다. :) – friedo

+0

따라서 "아약스를 사용할 수 있습니다 ..." –

관련 문제