Java 서버와 C#, Javascript 및 Java로 작성된 여러 클라이언트간에 어떤 종류의 메시지를 교환하려면 어떤 "기술"을 제안 하시겠습니까?자바 서버 <-> C# + javascript + java + * 클라이언트
는 배경 이야기 : 우리의 현재 프로젝트에서
우리는 (서버에서 실행) 자바에서 일반 UI 백엔드를 구축을 위해 노력하고 다음 수단에 의해 몇 가지 UI 프론트 엔드에 "다리" 다른 UI 어댑터 (클라이언트, 서버 또는 둘 다에서 실행 중). 우리의 서버 기술은 항상 Java이지만 C# (Silverlight), JavaScript 및 Java 클라이언트가 있습니다. 어쩌면 더 많은 미래 (다른 스마트 폰, 태블릿).
UI 백엔드와 UI 프론트 엔드는 각각 클라이언트/서버에서 특정 속성/상태/데이터 변경을 캡슐화하는 다소 많거나 적은 간단한 메시지 (대부분 이름/값 쌍)를 통해 통신합니다. 단일 요청주기 내에서 이러한 간단한 메시지를 하나의 큰 메시지로 집계 한 다음 백엔드에서 프론트 엔드로 또는 그 반대로 전달합니다. 현재 메시지 송수신은 클라이언트와 서버의 단일 진입 점에서 수행됩니다. WebService 등으로 노출 된 서버 메소드가 없습니다. 간단히 말해서 우리의 경우 느려지므로.
우리의 현재 프로토 타입은 Java 서버, Java Desktop Client (Swing) 및 Java Web Client (Vaadin)로만 구성됩니다. 백엔드와 프론트 엔드간에 교환되는 메시지는 실제로 XML과 직렬화/비 직렬화 된 POJO (각각 특정 "변경"을 나타냄)의 목록입니다. 여태까지는 그런대로 잘됐다.
이제 C#과 자바 스크립트가 테이블에옵니다. 우리는 각 기술에서 어떤 종류의 객체로 작업하기를 원하기 때문에 어떤 종류의 추상적 인 언어로 메시지/변경/pojos를 지정하고 각 대상 언어에 대한 객체를 생성하는 것이 좋은 생각이라고 생각했습니다. 어떤 시점에서이 객체들은 직렬화/역 직렬화되어 유선을 통해 전송 될 수 있습니다 (아마도 http/s를 통해). 이를 위해 Google은 프로토콜 버퍼 또는 Thrift를 고려했습니다. 어떻게 생각해?
잠시 동안 우리의 동기식 요청 - 응답주기로 충분하지만 비동기 요청 - 응답 또는 서버 - 푸시가 필요합니다. 이것이 바로 ActiveMQ와 같은 것을 사용하려고 생각한 이유입니다. 어떻게 생각해? 너무 많은? 그렇지 않다면 위에서 언급 한 객체 생성 (xsd, jaxb,? for j)을 어떻게 수행 할 수 있습니까? 더 좋은 방법이 있습니까? 나는 ActiveMQ를 사용한 적이 없지만 웹 사이트에 따르면 Java, C# (Spring.NET) 및 Javascript (STOMP)와 함께 사용할 수 있어야합니다. 그러나 이것은 나에게 꽤 복잡해 보입니다 ...
이 주제 나 관련 주제에 대한 팁, 힌트, 경험 또는 의견은 정말 도움이 될 것입니다.
미리 감사드립니다.
내가 말했듯이, 현재 서버/클라이언트에는 단일 진입 점이 있습니다. 기본적으로 POJO에 매핑되는 여러 메시지를 캡슐화하는 (HTTP) 요청이 들어옵니다. 필자는 웹 서비스 전문가는 아니지만, 필자가 이해할 수 있듯이 대상 언어로 객체를 생성하기 위해 WSDL을 얻으려면 webservice (각 변경/POJO에 하나)로 여러 메소드를 공개해야합니다. 아마 틀렸 겠지요.하지만 이것은 변경 사항 당 하나의 HTTP 요청으로 이어질 것이고, 이는 WS가 본질적으로 더 느릴 것입니다. 그리고 WSDL과 JavaScript는 어떻습니까? – Pauli
그러나 WS를 디자인 할 수는 있습니다. 많은 세분화 된 요청을 할 필요는 없습니다. 몇 가지 복잡한 요청 일 수 있습니다. 그에 따라 서비스 입출력을 설계하십시오. –