Какую «технологию» вы бы предложили для обмена сообщениями между сервером Java и несколькими клиентами, написанными на C #, Javascript и Java?
История вопроса:
В нашем текущем проекте мы пытаемся создать универсальный бэкэнд пользовательского интерфейса на Java (работающий на сервере), который затем «соединяется» с несколькими интерфейсами пользовательского интерфейса с помощью различных адаптеров пользовательского интерфейса (работающих на клиенте,сервер или оба).В то время как наша серверная технология всегда будет Java, будут C # (Silverlight), JavaScript и Java-клиенты.Может быть, даже больше в будущем (разные смартфоны, планшеты).
Внутренний интерфейс UI и внешние интерфейсы пользовательского интерфейса обмениваются данными через несколько более или менее простых сообщений (в основном пар имя / значение), каждое из которых инкапсулирует конкретное изменение свойства / состояния / данных на клиенте или сервере соответственно.В течение одного цикла запросов несколько таких простых сообщений объединяются в одно большое сообщение, которое затем передается из внутреннего интерфейса во внешний интерфейс или наоборот.На данный момент отправка и получение сообщений осуществляется в одной точке входа как на клиенте, так и на сервере.Таким образом, нет никаких серверных методов, представленных как WebService и т. Д. - просто потому, что в нашем случае это будет определенно медленным.
Наш текущий прототип состоит исключительно из сервера Java, клиента рабочего стола Java (Swing) иJava веб-клиент (Vaadin).Сообщение, которым обмениваются бэкэнд и внешний интерфейс, фактически представляет собой список POJO (каждый из которых представляет определенное «изменение»), сериализованный / десериализованный в / из XML.Пока все хорошо.
Теперь C # и Javascript выходят на стол.Поскольку мы хотим работать с какими-то объектами в каждой технологии, мы подумали, что было бы неплохо указать сообщения / изменения / pojos на каком-то абстрактном языке, а затем сгенерировать объекты для каждого целевого языка.В какой-то момент эти объекты могут быть сериализованы / десериализованы и отправлены по проводам (возможно, через http / s).Для этого мы подумали о буферах протокола Google или Thrift.Как вы думаете?
На данный момент нашего синхронного цикла запрос-ответ достаточно, но нам вскоре понадобятся асинхронный запрос-ответ или запрос сервера соответственно.Вот почему мы сразу решили использовать что-то вроде ActiveMQ.Как вы думаете?Перебор?Если нет, как мы можем выполнить генерацию объекта, упомянутую выше (xsd, jaxb,? Для js)?Есть ли лучшие способы?Я никогда не использовал ActiveMQ, но согласно веб-сайту это должно быть возможно с Java, C # (Spring.NET) и каким-то образом с Javascript (STOMP).Тем не менее, это кажется мне довольно сложным ...
Любые советы, советы, впечатления или комментарии по этой или смежным темам были бы очень полезны.
Заранее спасибо.