кроме SOAP + WSDL стандарт для реализации SOA - PullRequest
1 голос
/ 29 июля 2011

Я прочитал этот вопрос

Однако мне все еще неясно, каковы другие способы реализации архитектуры SOA без использования таких технологий, как SOAP / WSDL.Я работаю над приложениями, развернутыми на веб-сфере и сервере веб-приложений.Было бы более полезно, если бы вы могли привести пример, связанный с такой средой.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Вы можете использовать службы RESTful вместо SOAP / WSDL ...

1 голос
/ 29 июля 2011

Сначала проясните о SOA . Многие думают, что вы используете SOA , тогда вы должны иметь веб-сервисы. Я думаю, что это неправильно. SOA состоит из множества отдельных атомарных модулей, известных как сервисные. Теперь вам нужно предоставить конечные точки для доступа к этой службе в (средства внутри вашего приложения) и вне (вне приложения).

Существует множество способов предоставления конечной точки службы SOA:

  1. Использование веб-службы.
  2. Использование RMI (заглушка / скелет)
  3. Использование некоторого промежуточного программного обеспечения для обмена сообщениями (JMS / ActiveMQ и т. Д.)
  4. Использование JSON.
  5. Использование вашей привычной XML-схемы.
  6. TCP-сокет непосредственно для обслуживания.
  7. Или любым другим способом, который вы знаете.

Мы создали SOA с использованием (в JAVA) JBoss jBPM, JBoss Drools и JMS / ActiveMQ . У нас есть различные конечные точки наших услуг в соответствии с нашим требованием конкретной услуги. Например, некоторые службы должны регулярно публиковать данные, поэтому мы создали эти службы в виде веб-служб, пользовательских запросов / откликов схемы XML (в некоторых случаях JSON). Некоторые службы не предоставляются вне приложения, у них есть конечные точки RMI или JMS-очередь / тема и т. Д. Некоторые службы можно вызывать с помощью простого вызова метода (конечные точки VM).

Взять PersistenceService, например . Он отвечает за управление доступом к базе данных и другие операции. Итак, любой сервис в SOA, которому нужен доступ к базе данных, должен использовать PersistenceService. Поскольку этот сервис не важен для конечного пользователя (или, можно сказать, вне приложения), вы можете выставить конечные точки этого сервиса, используя прямой вызов метода (конечные точки ВМ), заглушку / скелет RMI, создать очередь / тему JMS на котором он слушает и т. д.

Теперь у нас есть UserManagementService , который отвечает за задачи управления пользователями, такие как проверка подлинности, авторизация, управление ролями и т. Д. Он будет использоваться вашим приложением для входа в систему / выхода из системы, как вещи пользователя. Таким образом, вы можете представить его как веб-сервис или использовать запрос / ответ XML-схемы.

Итак, мы можем сказать, что сервисы SOA используются внутри вашего приложения и вне приложения. Зависит от того, что его конечные точки различаются. Конечные точки обслуживания будут зависеть от того, как вы хотите использовать эту услугу.

Спасибо.

UPDATE:
Да, я полностью с тобой согласен. Но это верно для сервисов, которые доступны как бизнес-функции, как вы сказали. Но вы можете применять те же концепции сервиса SOA в среде вашего приложения. Вы можете спроектировать свое приложение таким образом, чтобы все сервисы в вашем приложении могли вести себя как отдельные сервисы SOA, независимо от того, являются ли они общедоступным сервисом или основным сервисом вашего приложения (например, PersistenceService, ReportingService, LoggingService и т. Д.). Таким образом, вы также можете кластеризовать ваше приложение. на уровне обслуживания (бизнес-сервис, а также базовые сервисы), где сервисы распределены по разным узлам. Кстати (я знаю), это не ответ ваших вопросов. Вы можете использовать свой собственный XML-запрос / ответ как замену веб-служб.

...