Лучший подход для создания новых RPC / веб-сервисов в мире Java? - PullRequest
4 голосов
/ 29 октября 2009

Я думаю, что этот вопрос может оказаться немного субъективным, поэтому я отмечаю его как CW.

Моя команда заинтересована в разработке нового набора "веб-сервисов" для наших проектов. Я помещаю «веб-сервисы» в воздушные кавычки, поскольку термин может означать очень много разных вещей. Единственное, что нам действительно нужно, это иметь в виду, что мы можем предоставить некоторый набор API-интерфейсов кроссплатформенным клиентам для использования наших данных и принятия мер по ним.

Я пытаюсь провести некоторое исследование, чтобы понять, каково текущее «состояние дел», когда дело доходит до создания сервисов для предоставления ваших данных множеству других (внутренних) приложений и даже других сервисов. Я исследовал такие вещи, как Thrift, Protocol Buffers, JAX-WS, RMI и т. Д., И я немного растерялся, пытаясь понять, какой подход мы должны использовать при разработке нового набора сервисов. Я бы хотел, чтобы мы смогли по существу создать «инфраструктуру» для услуг, поэтому я немного рассмотрю все существующие подходы.

Для создания совершенно новых веб-сервисов, где находится текущая передовая практика / уровень техники?

Наши единственные реальные требования:

  • Формат данных / кодировка должны быть независимыми от платформы (это исключает RMI).
  • Службы должны хорошо работать по HTTP
  • Написание реальных серверных служб на Java не должно быть проблемой.
  • Хорошим плюсом будет возможность создания клиентских прокси.
  • Мне бы хотелось, чтобы каждый сервис был легковесным, чтобы мы могли развернуть сервисы для разных функций как полностью отдельные развертывания.

В настоящее время мы используем некоторую комбинацию сервисов SOAP и Axis / JAXRPC, и, честно говоря, с ними трудно работать - сообщения, отправляемые туда и обратно, огромны и слишком многословны.

Ответы [ 2 ]

5 голосов
/ 29 октября 2009

Рассматривали ли вы REST услугу? Вот полезное введение от InfoQ .

Он работает по HTTP, и вы используете стандартные команды HTTP GET / PUT / POST / DELETE для манипулирования данными (вы можете делать запросы с помощью браузеров, а клиенты являются простыми клиентами HTTP). Фактическое содержание данных не является обязательным или не указано - часто это XML, но это не является обязательным требованием.

Вы можете создавать службы REST тривиально под Java, используя Джерси . Поскольку клиенты просто должны общаться по HTTP, они могут не зависеть от языка. Java-клиенты могут быть написаны с использованием HTTPClient .

2 голосов
/ 11 декабря 2009

Возможно, слишком поздно, но я все равно попробую. SOAP давно потерял свою первую букву (Simple). Он никогда не противостоял своему второму объекту (объекту).

Вот почему я склоняюсь к сервисам на основе JSON, REST или JSON-RPC. У вас уже есть несколько рекомендаций для первого. Для последнего вы можете посмотреть на Jabsorb.org . В качестве примера, стандарт OpenSocial использует оба с предпочтением JSON-RPC.

...