2008-10-08 6 views
9

У меня есть новый проект, которому нужен хороший двоичный протокол.Начало работы с Hessian

Я думал об использовании Hessian, если у кого-то не было более совершенных идей.

Я читал некоторые из их документации, и это не так просто, как я думал, поэтому у меня есть несколько быстрых вопросов.

На домашней странице есть раздел под названием «Документация», которая имеет следующие документы:

* Hessian Documentation 
* Hessian 1.0.1 spec 
* Hessian 2.0 Serialization Draft 
* Hessian 2.0 Web Service Draft 
* Taxonomy explaining Hessians relationship to CORBA, SOAP, RMI 

1) В чем разница между ними? Я предполагаю, что 1.0.1 позже станет 2.0, и что сегодня правильно использовать 2.0, но я не был уверен.

2) Ожидаете ли вы, что кто-то будет использовать сериализацию 2.0 или веб-сервис 2.0? Похоже, что веб-сервис должен быть ссылкой на создание новой реализации, но опять же мне это не совсем понятно.

3) Как реализовать сервер, поддерживающий Hessian с помощью PHP. Вам нужно использовать сервер Caucho, или вы можете внедрить сервер в PHP на Fedora Core и подключиться с помощью Java-клиента?

ответ

2

Я не использовал Гессе в прошлом, и я не планирую использовать его в будущем тоже, и мои аргументы таковы:

Для веб-службы, я бы очень постараться, чтобы сохранить его в простой старый XML. В случае, если бы я выбрал двоичное представление XML, я бы, вероятно, использовал Fast Infoset - который является стандартным и, скорее всего, поддерживается гораздо большим набором клиентских API/библиотек/фреймворков веб-сервисов. Я знаю, что люди CXF говорили о быстром информационном наборе в своем списке рассылки, и его следует поддерживать, даже если они не зафиксировали это в своей вики.

Если скорость является основной, я бы, вероятно, в конечном итоге использовал Protocol Buffers.

+1

Хитрость здесь заключается в том, чтобы вернуть XML с сервера по умолчанию, и если клиент запрашивает Hessian, верните его. – 2009-11-11 05:15:58

+0

Если было бы полезно, если бы вы могли объяснить, почему вы больше не будете использовать Гессиан. – Vincent 2011-05-22 16:20:08

9

Да, используется Hessian 2.0. Протокол определяет, как структура данных представляется двоичной, спецификация проста.

Веб-сервис Hessian основывается на протоколе Hessian, он указывает несколько заголовков в формате Гессиана для описания, например. формат запроса/ответа в протоколе Hessian. Он определяет содержание запроса, метод, который должен быть вызван, и так далее. Это не является строго необходимым, потому что никто не использует его. Вы можете определить это самостоятельно, создав класс «Запрос» и класс «Ответ», который подходит вам лучше всего и сериализует его с использованием протокола Hessian.

Hessian является альтернативой для сериализации Java, он медленнее, потому что он не поддерживается непосредственно виртуальной машиной Java, но намного (!) Быстрее, чем синтаксический анализ XML. Его можно использовать в кросс-платформенном способе, хотя вам придется настроить существующие реализации, чтобы они работали вместе, спецификация изменилась здесь и там (например, спецификации длины), так что реализации имеют тенденцию отличаться. Оборотная сторона заключается в том, что он не читается человеком, вам всегда нужен инструмент для преобразования гессиана в текст.

Я использовал Hessian в большом корпоративном приложении, где клиент с Java-интерфейсом взаимодействует с концом, чтобы сделать версию JVM клиента независимой от версии JVM сервера. И это сработало как шарм.

Посмотрите на реализацию Hessian4J. Это открытый исходный код, поэтому вы можете полностью контролировать его.