문제

저는 오래된 애플리케이션을 대체할 GUI를 구축하려는 프로젝트를 진행하고 있습니다.실제로 기능을 구현하기 전에 Eclipse RCP(리치 클라이언트 플랫폼) 및 GWT(Google 위젯 툴킷, 리치 인터넷 애플리케이션)를 사용하여 프로토타입 제작을 시작했습니다.RIA 및 RCP GUI에 대한 경험은 어떻습니까?언제 RIA를 사용하는 것이 합리적이며 어떤 상황에 리치 클라이언트가 더 적합합니까?현재 RIA의 가능성으로는 선을 긋는 것이 점점 더 어려워지고 있습니다.경험이 있나요?


편집하다:귀하의 모든 답변은 정말 흥미 롭습니다.나는 그것들이 나의 대답에 기여하는 것처럼 그것들을 모두 받아들이고 싶습니다. 나는 꽤 개방적인 질문을 인정합니다.그래서 나는 그들 각각에 대해 투표합니다.현상금이 여러분과 공유되기를 바랍니다.

도움이 되었습니까?

해결책

응용 프로그램의 요구 사항에 대한 세부 사항은 없으며 실제로 질문에 답하는 데 중요합니다.

GWT 사용의 큰 승리는 RCP와 같은 것에 대한 배포가 용이하다는 것입니다. URL에서 웹 브라우저를 가리키는 것보다 사용자에게는 더 쉬운 것이 없으며 운영 팀이 코드를 서버로 푸시하고 하루를 호출하는 것보다 더 쉬운 것은 없습니다.

기능에 관한 한, GWT가 짧게 나오는 큰 영역은 차트링, 트리/노드, 네트워크 다이어그램 등이 더 풍부한 데이터 시각화가 될 것입니다. GWT와 같은 강력한 툴킷으로도 보여줍니다. 반면에 RCP는 원하는 것을 시각화하기 위해 Java 2D의 전체 힘을 제공합니다. 이러한 종류의 기능은 귀하에게 필요하지 않을 수도 있지만 탭, 트리 및 데이터 그리드 컨트롤의 혼란 이상의 애플리케이션을 정말 흥미롭게 만드는 기능입니다.

나는 몇 년 동안 Adobe Flex와 함께 개발해 왔으며 GWT와 같은 배치 이점을 가지고 있지만 RCP와 동일한 종류의 전력을 제공하는 것이 실제로 강력하다는 것을 알게되었습니다. 당신도 그것을 확인하고 싶을 수도 있습니다.

다른 팁

GWT가 많은 발전을 이루었지만 적절한 애플리케이션과 동일한 유연성과 접근성을 제공하지는 않습니다.

GWT 애플리케이션이 실제 애플리케이션이 할 수 있는 거의 모든 작업을 수행할 수 있다고 하더라도 RCP가 최고의 도구라는 점을 나타내는 여러 요소가 있습니다.

  • 반복되는 작업
  • 많은 입력
  • 긴 세션
  • 반복되는 작업
  • 편집이나 프리젠테이션을 위한 사용자 정의 위젯.
  • 서로 다른 데이터가 포함된 여러 창.
  • 자주 사용하는 작업을 위한 빠른 키
  • 빠른 응답.
  • 진짜 메뉴바, 쿨바.
  • 작업 표시줄에서 쉽게 찾을 수 있는 적절한 창입니다.
  • 거의 사용되지 않는 작업을 위한 상황에 맞는 메뉴
  • 제한된(또는 알려진 기반) 사용자 수.
  • 광범위하거나 복잡한 애니메이션 또는 실시간 업데이트.

애플리케이션에 여러 보기와 편집기가 있는 워크벤치가 필요하다고 생각되면 선택이 제공됩니다.

RCP와 워크벤치는 작업하기가 쉽지 않지만, 여러 개의 열린 보기/편집기 등을 갖춘 "무료" 개방형 작업 모델의 이점을 응용 프로그램에서 얻을 수 있다면 무료로 많은 것을 얻을 수 있습니다.

애플리케이션이 좀 더 비정기적인 작업을 위한 것이라면 GWT가 정말 좋습니다.

GWT는 정말 좋은데, 하지만 여전히 웹 애플리케이션이기 때문에 때로는 짜증스럽습니다.나는 실수로 키를 눌러 모든 작업과 세션을 잃을 수 있는 웹 애플리케이션에서 모든 작업을 수행하고 싶지 않습니다.(제 키보드에는 화살표 키 옆에 비활성화가 불가능해 보이는 키가 있습니다.)RCP에서 수행할 수 있는 거의 모든 작업을 수행할 수 있을 만큼 강력하지만 여전히 웹 브라우저 내에서 실행되고 있어 짜증날 수 있습니다.

Java Webstart를 사용하여 RCP 애플리케이션을 배포할 수 있다는 점을 기억하세요.

우리는 Eclipse 용 (파일럿 프로젝트) 플러그인을 개발 한 다음 독립형 RCP 응용 프로그램으로 변환되었습니다 (Eclipse를 사전 리크로 원하지 않았기 때문에 플러그인으로 배송하고 싶지 않았습니다. 우리는 지원 코드를 추가해야했습니다. 그리고 jQuery를 사용하여 RIA 응용 프로그램으로.

RCP 캠프의 최선의 노력에도 불구하고 RIA 버전은 개발에 거의 같은 시간이 걸렸으며 (처음부터 있었음에도 불구하고) 실행이 더 부드럽게 보였습니다.

클라이언트는 모든 클라이언트에 이미 애플리케이션 서버가 있고 업데이트는 각 클라이언트가 아닌 서버에서 중앙 집중식으로 인해 RIA 버전에 설치가 필요하지 않다는 점입니다.

RCP 버전은 오랫동안 기능이 남아있었습니다. 우리가 염려하는 한, Eclipse는 개발 환경 (Java의 경우 다른 언어에 대한 경험이 없음)으로 괜찮습니다. 그러나 GUI에서 IDE를 분리하려는 노력은 (RCP를 가능하게하기 위해). 상당히 완성된.

반면에 jQuery는 그런 종류의 물건을 위해 맞춤 제작 된 것 같습니다 (아마도 그런 종류의 물건을 위해 맞춤 제작 되었기 때문에). 응용 프로그램의 개발 및 실행은 매우 좋습니다.

풍부한 인터넷 애플리케이션은 기존 데스크톱 소프트웨어와 같은 강력한 소프트웨어를 만드는 좋은 방법입니다. RIA의 일반적인 문제 중 하나는 많은 개발자가 클라이언트 측 코드에 비즈니스 논리를 두는 경향이 있다는 것입니다. 클라이언트 측 코드의 비즈니스 로직 및 상태는 실행 시간에 클라이언트 측 코드를 조작 할 수 있으므로 매우 안전하지 않습니다. 또한 해커가 코드를 검사하고 클라이언트 측 코드 또는 조작 상태에서만 수행 된 입력 유효성 검사와 같은 약점을 찾을 수있는 화이트 박스 시스템입니다. 난독 화에 속지 마십시오. 해커가 속도가 느려지지만 그를 막지는 않습니다. Billy Hoffman은 Ajax Security (호출)에 관한 좋은 책을 썼습니다. TA-DAA, "Ajax Security") 및 모든 RIA 개발자에게 권장합니다.

그렇다고 RIA가 정의에 따라 나쁜 것이라는 것을 의미하지는 않습니다. 귀하가 수행하는 작업을 알고 있다면 보안 RIA를 작성할 수 있습니다 (클라이언트 측 코드, 상태 없음, 입력 유효성 검사 [서버 측에서 수행) 등). 이 Securer Server Driven RIA를 구현하는 몇 가지 프레임 워크가 있습니다. 그것은 밀 툴킷을 밀어 넣습니다 (GWT 기반) 및 얼음 내 지식도 하나 여야합니다.

내 경험상 RIA Guis는 대부분의 정보를 사용자에게 전달할 수있을 정도로 강력한 경향이 있습니다. 아마도 이것에 대한 몇 가지 예외가 있지만 지금은 좋은 것을 생각할 수 없습니다. RIA는 두꺼운 클라이언트 (RCP)를 설치하지 않고 웹 브라우저를 통해 누구나 액세스 할 수 있다는 이점이 있습니다. 웹 기술을 통해 할 수없는 특별한 복잡한 디스플레이가 없다면 RIA 경로를 사용하는 것이 좋습니다.

사용자가 온라인 및 오프라인 (도로에있을 때) 모두에서 응용 프로그램을 사용해야했기 때문에 RCP를 선택하기 위해 일한 조직. 나는 이것이 Google Grears에서 가능하다는 것을 알고 있지만 Gears는 큰 조직이 IT 플래그십 제품을 기반으로하기에 충분히 주류가 아닙니다. 그러나 사용자가 오프라인으로 가야 할 필요가 없다면 RCP 앱과 서버간에 사용자 데이터 / 제품 업데이트 동기화의 번거 로움을 저장하면 RIA는이 경우에 갈 수 있습니다.

RIA의 일부 이점으로 RCP를 배포 할 가능성도 있습니다. 고객을 위해 조사되는 한 가지 솔루션 (회사 내 직원 만 사용하여)은 Java Servlet을 통해 시작된 Java 응용 프로그램을 사용하는 것입니다.

식별 된 몇 가지 혜택은 다음과 같습니다.

  • RIA와 매우 유사하게 쉽게 업그레이드됩니다 (JAR 파일을 다시 배포하면 애플릿을 사용하여 페이지로 이동할 때마다 선택할 것입니다).
  • RCP와 매우 흡사하고 느낌, 행동 및 기본 응용 프로그램처럼 수행됩니다 (SWT 덕분).

식별 된 일부 손해는 다음과 같습니다.

  • 사용자의 컴퓨터에는 Java 플러그인이 설치되어 있어야합니다.
  • 응용 프로그램은 사용자의 플러그인과 호환되는 Java 버전으로 개발해야합니다 (클라이언트는 직원 컴퓨터에 최소 버전을 설치해야 할 수 있지만). Retroweaver 도구는 도움이 될 수 있지만 경험이 많지는 않지만 도움이 될 수 있습니다.
  • 사용자는 웹 브라우저를 열어 두어야합니다. 그렇지 않으면 응용 프로그램이 종료됩니다.

이 응용 프로그램의 특성은 무엇입니까? 클라이언트 컴퓨터에서 완전히 실행해야합니까? 로컬로 저장된 데이터에 액세스해야합니까? 엔진이 여전히 레거시 코드 인 기존 앱의 GUI를 회복하고 있습니까?

저의 중요한 다른 사람은 어플라이언스 구성 수단으로 Ajax를 활용 한 소프트웨어 어플라이언스를 작업하는 것입니다. 구성을위한 기능 세트는 풍부하고 RIA와 매우 잘 정렬됩니다. 마찬가지로, 웹 브라우저에 로컬로 소프트웨어를 설치 해야하는 것은 극도로 낙담합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top