2010-02-03 1 views
6

GUI 기반 웹 응용 프로그램은 Wicket과 같은 GUI 구성 요소, 상태 기반 프레임 워크를 기반으로 구축 될 수 있으며 클라이언트에서만 GUI 상태의 RESTful, stateless 방식으로 빌드 할 수 있습니다.REST는 GUI 웹 응용 프로그램에 적합한 선택입니까?

기술적 인 관점에서 볼 때 REST는 HTTP의 모든 기능을 활용하고 확장 성이 뛰어난 응용 프로그램을 사용하기 때문에 올바른 방식으로 보입니다. 그러나 그것은 가격에 온다. 복잡한 GUI는 많은 경우에 클라이언트에서 JavaScript 애플리케이션을 요구합니다. 고객이 상태를 유지해야하는 경우 동일한 페이지에 머물러서 부품 만 다시로드해야합니다. 또는 숨겨진 iframe이있는 트릭을 사용해야합니다. 때로는 RESTful 디자인을 가능하게하기 위해 서버에 장바구니와 같은 의사 리소스가 있습니다. 다단계 대화의 중간 상태를 유지해야합니다. ...

제가 둘러 보면 RESTful GUI 웹 응용 프로그램이 거의 없습니다. 역사적인 이유 때문이거나 일반적인 시나리오에서 RESTful 디자인이 비생산적입니까?

+0

"GUI 웹 응용 프로그램"의 정의는 무엇입니까? Yahoo.com? 스택 오버플로? 구글지도? eyeos.org? – deceze

+0

또는 @ deceze 님의 댓글 주위를 돌리는 경우 : GUI가 아닌 것은 언제입니까? –

+0

GUI는 사람과의 직접적인 상호 작용을위한 응용 프로그램이지만 서비스는 컴퓨터 통신의 한 측면입니다. – deamon

답변

1

RESTful GUI 디자인은 매우 생산적이며, IMHO입니다. 사용자가 다시 제출하는 정보, 브라우저 기록 (뒤로 및 앞으로) 여러 탭 및 창과 같이 코너 사례를 지원하기 위해 추가 작업없이 많은 기능을 활용할 수 있습니다. 이 사이트가 틀린 것이 아니라면 RESTful UI를 사용합니다.

0

REST는 성공적인 웹 응용 프로그램 (GUI 및 M2M 모두)의 특성을 관찰하여 정의되었습니다. 따라서 정의에 따르면 이러한 경우에 적합해야합니다.

desktop versus web applications에 관한 질문을 한 것으로 나타났습니다. REST는 데스크톱 클라이언트 애플리케이션을 구축하기위한 훌륭한 아키텍처이기도합니다. 필자는 REST 서버에서 모든 데이터를 가져 오는 데스크톱 클라이언트를 작성했습니다.

+1

REST가 데스크톱 응용 프로그램의 훌륭한 백 엔드라고 생각할 수 있지만 그러한 응용 프로그램에서 상태를 쉽게 관리 할 수 ​​있습니다. 브라우저의 상태 관리는 오늘날 사소한 것이 아닙니다. (추신 : 내가 언급 한 질문을하지 않았다) – deamon

+0

내 사과, 나는 너와 디미트리 사이에 혼란 스러웠다. –

9

주위를 둘러 보면 RESTful GUI 웹 응용 프로그램이 거의 없습니다. 이 은 역사적인 이유로 인해 또는 RESTful 디자인이 비생산적인 공통점 시나리오입니까?

내 대답은 주관적이다,하지만 내 생각에, 두 가지 장애물이 편안하고 발전을 방해 :

  1. 변경 - 그것은 전통적으로
  2. 도전을 설계하는 사이트 방식에서 매우 다른 - 편안하고 순수을 설계 서버 API 및 해당 풍부하고 강력한 클라이언트 UI는 쉬운 일이 아닙니다 자바 스크립트이 필요합니다

단지의 GUI 많은 클라이언트에서응용 프로그램이 클라이언트 경우.

제 생각에는 복잡하고 풍부한 클라이언트 측 경험은 서버 측 구현에 관계없이 심층적 인 JavaScript를 필요로 할 것입니다.

당신은

이 전통적인 요청/응답 전체 페이지 - 투 - 전체 페이지 디자인에서 매우 다른 디자인, 동일한 페이지와 다시로드하는 부품에 머물해야합니다. 각 디자인마다 자체적 인 트레이드 오프가 있습니다. REST 디자인은 AJAX 호출에서 특히 잘 작동하지만 클라이언트 측 코드는 유지 보수가 쉽고 강력한 설계가 필요합니다.

두꺼운 클라이언트와 편안 서버 :

  • 비늘 웰 : 모든 사용자에 대한 세션 정보는 유선으로 부족한 서버 메모리
  • 이하 요청/응답 데이터가 저장되지 않는다 : 매를 전송하지 전체가 아닌 전송 세션 ID의 페이지 또는 ViewState
  • 깨끗한 재사용 가능한 URL은 : HTTP 사양을 엄격하게 준수 (부작용을 일으킬 않겠다 등 :
  • 순수한 여러 UI를 지원할 수있는 깨끗하고, 분리 된 서버 API를 제공)
  • 클라이언트 환경 : 풍부한, 비동기 트랜잭션 응답 성

그러나 두꺼운 클라이언트는 단점이 언급 한 바와 같이 :

  • 이 편안하고 URL이 정말 조심 보안 XSS 공격에 더 취약 필요를
  • 복잡한 자바 스크립트는 개발, 유지 보수 및 디버그가 어려울 수 있습니다 (OO 자바 스크립트를 사용하면이를 조정할 수 있습니다)
  • 비동기 요청이 processi인지 사용자에게 알려줄 필요가 있습니다
  • 이상의 클라이언트 측 장애 처리 로직은 서버 측에 비해
  • 프레임 워크와 IDE 툴은 클라이언트 측 개발을 위해 전통적으로 약한왔다 요구되는 배경에서 NG (이 서서히 좋아지고)