2012-09-04 2 views
0

Java가 아닌 백엔드와 함께 GWT 응용 프로그램의 좋은 예가 어디 있는지 알고 있습니까? GWT의 공식 페이지에있는 "Contacts" 응용 프로그램과 같은 것입니다. 나는 (이 내가 응용 프로그램의 "뒤로"부분을 참조 방법 이지만, 물론 다를 수 있습니다) 특히 다음과 같은 주제에 관심이 있어요 :GWT 비 Java 백엔드 응용 프로그램 구조

  • DTO 직렬화.
  • 통신 레이어 (매우 뒤쪽). 제네릭을 사용하고 추상 DTO로 작업해야합니까? 다른 입증 된 접근법이 있습니까?
  • 특정 DTO가있는 통신 레이어를 사용하는 서비스 레이어입니다.
  • 캐싱 요청. 서비스 또는 통신 수준에서 구현해야합니까?
  • 좋은 추상화. 따라서 사용자 세션을 관리 할 때 다른 serialiser (예 : XML, JSON), 다른 서버의 동작 (사용자가 로그인하면 URL이 변경 될 수 있음) 사용과 같은 테스트 및 기타 목적으로 쉽게 대체 할 수 있습니다. 내가 아는

, 여기에 많은 유사한 항목이 있습니다,하지만 난 클라이언트 부분의 구조에 초점을 맞추고 하나를 발견하지 않았습니다.

답변

1

양쪽에 REST를 사용하십시오. PHP/Python REST 서버 측. GWT 클라이언트 측.

GWT-RPC를 사용하지 마십시오.

다음은 Java-Java REST에 대한 지침이지만 서버 측 Java에서 벗어날 수 있습니다. REST가 적합한 이유를 설명합니다.

http://h2g2java.blessedgeek.com/2011/11/gwt-with-jax-rs-aka-rpcrest-part-0.html.

REST는 업계에서 확립 된 패턴입니다 (Google, Yahoo는 사실 모든 안정된 업체가 REST 서비스를 배포합니다).

REST는 HTTP 레벨 데이터 구조로 추상화됩니다. 어떤 Java, PHP 및 Python이 DTO 무결성을 보장하기 위해 라이브러리를 설정 했습니까?

통신 레이어 (맨 뒤로). 제네릭을 사용해야합니까 ???

질문을 이해할 수 없거나 그 이유가 무엇입니까? REST 패턴을 사용하여 서버와 클라이언트 사이의 비 균질 언어 및 HTTP 요청/응답에 무결성을 제공하십시오.

백엔드에서 Java를 사용하는 경우 제네릭 사용이 필요하지 않습니다. Generics는 코드를 저장합니다. 그러나 제네릭을 사용하면 프로그래머가 제네릭을 시각적으로 볼 수있는 광범위한 시각적 용량을 갖춰야합니다. 백엔드가 PHP 또는 Python에있는 경우 PHP 용 제네릭이 있습니까? 파이썬 제네릭? 자바 토지 나 C# 토지에 머물러 자바 프리 서비스 제공자를 잊을 수도 있습니다.

DTO 다형성을 의미합니까? 다형성을 시도하거나 서비스를 확립 할 때까지 다형성을 결정하지 마십시오. 그런 다음 적응성과 민첩성을 통해 실제로 필요성을 느끼면 DTO에 다형성을 도입 할 수 있습니다.그러나 JSON 데이터 교환으로 인해 서버와 클라이언트간에 다소 혼란을 야기하므로 피하기 위해 노력하십시오. 특히 그들이 동일한 프로그래밍 언어를 사용하지 않는 경우.

HTTP 수준 제네릭을 요청하는 경우? SOAP이 아닌 프레임 워크에 대해 알지 못합니다. XML 또는 JSON에서 제네릭을 사용할 수있는 REST가 아닙니다. 거기 있니? 제네릭?

서비스 레이어? 휴식.

캐싱을 요청 하시겠습니까? 적절한 기회마다 캐시하십시오. 서비스 공급자가 메뉴, 메뉴/드롭 다운 상자 선택, 레이블 등과 같은 모든 세션에 공통적이고 정적 인 항목에 대한 쿼리 결과를 캐시하도록합니다. 내역 및 위치를 캐시하십시오.

GWT 사이드 캐시 레코드에서 정방향/역방향 단추가 부주의 한 쿼리를 트리거하지 않도록합니다. MVP 패턴 및 기록을 사용하여 정보의 재 표시를 유발할 수있는 기록 통과를 관리합니다.

통합 정보 추상화에 대해 이야기하는 경우 JAX-RS로 프로젝트를 시작하여 API를 정의/테스트하고 데이터 추상화를 수행해야합니다. 비즈니스 로직을 수행하지 않아도됩니다.

그런 다음 HTTP 수준 API 및 DT가 정의되면 원하는 언어로 서버 측 변환을 수행하여 더 복잡한 코드를 작성하십시오.

동의어, 나는 "백엔드"라는 용어를 사용하지 않습니다.

우리는 일반적으로 서비스 소비자를 위해 클라이언트 측, 서비스 공급자를 위해 서버 측, 데이터 저장소/지속성 액세스를 위해 백엔드, 중간/중간 소프트웨어를 사용하여 수학/과학/그래픽 분석/합성.

우리의 용어가 일치하지 않으면 아마도이 질문에 잘못 대답했을 것입니다.

+0

아니요. 올바른 질문에 답했습니다. 그런 광범위한 답변에 감사드립니다. 내 질문에 나는 가능한 한 많이 서버 측에서 추상화하려고했다. 나는 그것에 대해 연구하지 않을 것이며 때로는 변경할 수없는 플랫폼 일 수도 있으므로 코드를 채택해야 할 것입니다. – Vic

+0

'통신 레이어 (맨 뒤로). 제네릭을 사용해야할까요? '여기서 나는 클라이언트의 (모든면에서 내가 클라이언트쪽에 대해 썼다는) 통신 레이어를 의미했다. * Generics *라는 용어는 Java generics를 의미하며, 다형성에 관해 말할 때이를 올바르게 이해했습니다. 다른 한편으로, DTO의 복잡한 계층 구조를 구축하지는 않을 것이고 나는 그것에 동의합니다. 제네릭을 원했던 이유는 데이터 공급자가 어떤 유형의 데이터로 작업해야한다는 것입니다. 예를 들어 응답 수신시 지정된 (일반) 유형의 데이터 목록을 반환합니다. – Vic