РЕДАКТИРОВАТЬ : Я забыл указать основного кандидата для веб-приложений: JSON over HTTP / REST + Comet. Он сочетает в себе лучшие черты других (ниже)
- Persevere в основном объединяет все, что мне нужно на сервере
- Фокус для Java и тому подобного определенно делается на Comet серверах , но не может быть слишком сложно использовать / написать клиент.
Я запускаю приложение с сервером, на котором хранятся данные, и клиентами, выполняющими операции, которые влияют на эти данные и, следовательно, требуют какого-то уведомления для всех заинтересованных / подписанных клиентов.
Первый клиент, вероятно, будет написан на WPF, но нам, вероятно, потребуется добавить клиентов, написанных на других языках, например клиент Java (Swing?) и, возможно, веб-клиент.
Фактический вопрос (s): Какой протокол мне следует использовать для реализации этого? Насколько легко будет интегрироваться с клиентами JS, Java и .NET (точнее, C #)?
Я мог бы использовать несколько интерфейсов / протоколов, но в целом было бы проще использовать тот, который совместим. Учитывая важность взаимодействия, я исследовал несколько вариантов:
- JSON-RPC
- легкий
- поддерживает уведомления
- Единственная библиотека .NET, которую я смог найти, Jayrock не поддерживает уведомления
- хорошо работает с JS
- также верно для XML-материалов (и, возможно, даже для двоичных протоколов), НО это, вероятно, будет более эффективным благодаря встроенной поддержке
- Protobuf / Бережливость
- IDL позволяет легко выкладывать модельные классы на каждом языке
- не поддерживает уведомления
- Thrift поставляется с RPC из коробки, но protobufs не
- не уверен насчет JS
- XML-RPC
- достаточно просто, но не поддерживает уведомления
- SOAP: Я даже не уверен в этом; Я еще не прогнал это.
- Message Queues / PubSub: не совсем протокол, но может подойти
- Я почти ничего о них не знаю, и затерялся среди модных слов`-- JMS? ** MQ?
- Возможно, в сочетании с некоторым механизмом RPC, описанным выше, хотя это не является обязательным требованием и, возможно, излишним.
Другие варианты, конечно, приветствуются.