2008-12-09 2 views
6

Я пытаюсь найти подходящее промежуточное программное обеспечение для моего следующего распределенного приложения. За последние несколько дней я нашел несколько спецификаций и задавался вопросом, не пропустил ли я важный вопрос? Это должен быть двоичный протокол, поддержка RPC и, возможно, реализация с открытым исходным кодом на разных языках. Вот список протоколов я нашел:двоичные протоколы общего назначения

  • CORBA
  • ICE
  • AMQP
  • Бережливость

И это список увольняемых протоколов:

  • XML на основе протоколы, поскольку они основаны на тексте (XML-RCP, SOAP, ручная и т. д.)
  • протокола Буферы (Closed Source)
  • COM (Windows только)
+0

Есть ли причина, почему она должна быть двоичной? – Skizz 2008-12-09 11:25:48

+0

XML может быть закодирован в более компактном бинарном формате, см. Http://en.wikipedia.org/wiki/Binary_XML для параметров. – xahtep 2008-12-09 11:29:30

ответ

13

Проект протокольных буферов определенно не является закрытым источником.

На каком языке/платформе вы интересуетесь?

  • Для Java, C++ и Python есть Google code.
  • Для C# есть, по крайней мере, три проекта (в том числе mine или Marc's)
  • Для других языков/платформ, см relevant wiki page

Обратите внимание, что хотя есть окурок поддержка RPC в протокол Буферы, Google hasn 't выпустил свой фактический уровень RPC, поэтому вам придется предоставить свои собственные. Учитывая, что в основном вы передавали сообщение с запросом и возвращали ответное сообщение, это не , что трудно сложить его по существующим протоколам (например, HTTP POST).

8

Я не думаю, что Protocol Buffers являются закрытым исходным кодом. Страница подразумевает по-разному, и есть исходные загрузки.

2

Вы можете посмотреть ASN.1.

Он используется для кодирования и передачи двоичных данных во многих других протоколах (например, SNMP, LDAP), хотя ASN.1 сам не определяет транспортный протокол.

3

Возможно, это не лучший кандидат, но для полноты я хочу добавить, что есть binary encoding for XML.

3

Я предлагаю вам пересмотреть буферы протокола Google. Существует множество реализаций с открытым исходным кодом для всех основных платформ, включая C++/Java/Python, опубликованные самим Google.

Как уже упоминалось, Джон Скит выше, спецификация ПБ не определяет модель RPC, но очень просто определить свой собственный RPC с помощью PB.

В качестве альтернативы вы можете взглянуть на ASN.1. Существует множество приложений, использующих ASN.1.

0

Я бы рекомендовал попробовать RabbitMQ AMQP и использовать протоколы Buffer, XML или какой-либо другой формат данных, такой как JSON, по вкусу. В дополнение к тому, чтобы быть относительно простым и легким в использовании, это позволяет смешивать и сопоставлять RPC и асинхронные стили pubsub, и имеет хорошее распространение по языкам, протоколам и платформам. Но это может быть не очень хорошо для вашей проблемы - все зависит от того, что вы пытаетесь сделать! Cheers, alexis

2

Joe Armstrong UBF, похоже, не поймал, но он удовлетворяет вашим требованиям со вкусом.

Смежные вопросы