웹 서비스를 통해 (Java) 백엔드와 통신하는 리치 인터넷 웹 응용 프로그램을 개발하는 중입니다. 나는 Flex/Flash와 GWT/Javascript 모두에서 사용자 인터페이스를 프로토 타이핑했으며, 이러한 RIA 플랫폼은 RPC 스타일의 백엔드 통신 방식 (AMF for Flex와 GWT-GWT-RPC for GWT)을 선호하는 경향이 있음을 알았습니다.GWT RIA (Rich Internet Application) 및 REST HATEOAS - 호환 방법은 무엇입니까?
필자의 경우 서버는 필자가 작성하지 않은 웹 서비스도 제공해야합니다. 따라서 표준 기반 웹 서비스 (예 : SOAP 및 REST)에 기대고 있습니다. RIA가 다른 웹 서비스와 동일한 웹 서비스를 사용해야 함을 확신합니다. 경험으로 익숙한 RPC 스타일을 모델링하기 때문에 SOAP를 "얻습니다". 나는 REST를 처음 사용하지만 CXF/Jackson을 사용하여 REST 백엔드를 프로토 타이핑했다. 그러나 현재로서는 내 REST API 인 은 RPC 스타일 API와 같이과 비슷하지만 HATEOAS라는 아이디어를 고수하는 데 어려움을 겪고 있기 때문에 실현되었습니다.
나는 약 10 번 Roy T. Fieldings helpful blog post을 읽었으며 나는 빛을보기 시작했다고 생각한다. 예를 들어, 리소스와 함께 다양한 상태 전환에 대한 링크를 포함한다면 클라이언트와 서버 간의 연결량을 줄일 수 있다는 것이 확실합니다. 내 클라이언트는 그 시점에 표시된 엔티티에서 수행 할 수있는 합법적 인 작업에 대한 액세스 권한을 사용자에게 제공하는 버튼 만 렌더링 할 수 있습니다.
그러나 RIA와 서버 응용 프로그램간에 느슨한 결합이 중요합니까?
본질적으로 RIA는 서버 데이터 모델과 매우 밀접하게 결합되어 있습니다. 상자 밖에서 그들은 많은 것을 전제합니다. 루스 커플 링이 디자인 목표가 아니기 때문에 RPC 스타일 응용 프로그램 프로토콜을 선호하는 이유가 여기에 있습니다. 그러나 우리가 HATEOAS를 진지하게 생각해 보면 훨씬 더 일반적인 RIA 클라이언트를 작성하여 수행 할 수있는 데이터 모델과 운영에 대해 거의 가정을하지 않을 수 있다는 사실을 깨닫기 시작했습니다. 이는 백엔드의 변경을 통해 클라이언트를 유지하기위한 노력의 양을 줄일 수 있습니다. 이 말이 맞습니까? 그 이익이 비용보다 중요한가?
p.s. - 두 가지 세부 사항 -이 애플리케이션은 매우 복잡하고 깊이 중첩 된 데이터 모델을 가지고 있습니다. 또한 누군가가 우리가 100 % 순수 REST 웹 앱이 아니라고 말하면 덜 신경 쓸 수 없습니다.
이전에 이러한 유형의 하이퍼 - 일반 앱을 여러 번 보았습니다. 그들은 항상 진정한 프로그래밍 언어였으며, 실제로 아무것도 수행하지 않도록 구성하기가 끔찍했습니다. 아니면 둘다. –
다른 누군가 오늘 오늘 저에게 말했듯이, 브라우저 안에 RIA 브라우저를 구축하는 것과 같습니다 (붉은 깃발!). 도메인 고유 언어에 대한 귀하의 의견은 종종 나 자신에게 생각하기 때문에 신경을 두드 렸습니다 (제 2의 붉은 깃발). 그것은 우리가 만들고있는 것입니다. 그러나 나는 우리의 목적이 아니라는 것을 상기 시켰습니다. 그것은 결국 수단 일뿐입니다. 당신의 대답은 제 생각을 결정 짓는 데 도움이되었습니다. 나는 민첩한 접근 방식으로 돌아가서 즉각적인 요구를 충족시키는 시스템을 구축 할 것입니다 ... 실용적으로 클라이언트/서버 커플 링을 줄이기 위해 HATEOAS로부터 많은 것을 얻으십시오. – HDave
나는 DSL이 맘에 든다.하지만 그들이하는 일에 대해 매우 구체적임을 확신한다. –