Service Oriented Architecture - Характеристики service oriented architecture

ОГЛАВЛЕНИЕ

Характеристики service oriented architecture

Информационные системы, построенные согласно SOA, обладают следующими характеристиками:

  • основанность на индустриальных стандартах. SOA использует технологии, разработанные совместно Microsoft, IBM, SUN, BEA, Oracle, W3C. Это освобождает от привязки к конкретной платформе или поставщику программных продуктов. Различные части системы могут быть разработаны на различных языках программирования и работать на разных платформах
  • низкая связанность (loose coupling) частей системы. Клиенты в SOA системах могут разрабатываться в полной независимости от служб, используя только их опубликованный интерфейс. Из-за разделения интерфейса и реализации служб клиентские приложения подключаются к службам с помощью позднего связывания (late binding). Низкая связанность обеспечивает лучшую способность систем к их расширяемости: изменения в функциональности в службе не должно затрагивать клиентов, а при добавлении новых типов данных средства разработки берут на себя часть работы. Низкая связанность также способствует инкрементному и итеративному подходу к разработки ПО, из-за отсутствия трудностей реализации функцинольности службы за несколько итераций
  • повторная используемость служб. Службы намного легче использовать повторно в реальных условиях и при решении реальных бизнес-задач чем классы или компоненты. Легкость использования обеспечивается возможностью поиска и доступностью службы, не имеющая пространственные ограничения, посредством вызова через сеть
  • синхронные и асинхронные вызовы службы. Службы поддерживают как синхронные вызовы методов службы, когда клиент получаем от службы ответ, так и асинхронные вызовы, способные пересылать большие объемы информации и увеличивающие масштабируемость системы.

    Типы служб

Службы на основе их функциональности можно условно поделить на пять типов:

  • службы доступа к данным, предоставляющие чтение и изменение данных (CRUD-функции). Они скрывают реализацию доступа к реальным источникам данных и предоставляют единый унифицированный интерфейс для доступа к данным вне зависимости от количества и вида используемых источников данных. Для обмена данными могут использоваться специально созданные сущностные объекты, XML данные или же объекты, инкапсулирующие таблицы БД (например, объекты DataSet платформы .NET). Этот вид служб SOA самый легкий в реализации и чаще всего используется в приложениях
  • службы бизнес-логики содержат функциональность, используемую для выполнения различных бизнес-операций (например, оформление заявки на слад или формирование отчета по уровню продаж). В ходе выполнения бизнес-операций обычно вызываются методы других служб (к примеру, служб доступа к данным для получения списка проданных товаров за последнюю неделю)
  • компоненты внешних приложений, вызываемые через их собственные интерфейсы (например, COM или DCOM). Примером такого приложения может быть CRM система, хранящая данные о покупателях и предоставляющая доступ к этим данным через COM
  • низкоуровневые вспомогательные службы отвечают за аутентификацию и авторизацию, мониторинг, поиск служб, регистрацию ошибок, вспомогательные функции, используемые в других службах. Часто их называют общие службы (common services) или службы инфраструктуры предприятия (interprise infrastructure services)
  • составные службы, делегирующие работу остальным типам служб и координирующие их действия. Они интегрируют остальные службы системы и выполняют контроль за транзакциями и преобразование потока данных от одних служб к другим путем конвертации в нужные форматы

Степень детализации служб (service granularity)

Детализация служб относится к масштабу функциональности, предоставляемой службой. На основе функциональности по количеству данных, получаемых и отправляемых службой, можно разделить их на службы с мелкой детализацией (fine-grained), грубой детализацией (coarse-grained) и композитные (composite).

   Службы с мелкой детализацией осуществляют прием и отсылку данных небольшими порциями информации и и на каждую их функцию приходится небольшое количество функциональность. Дополнительно может возникнуть необхоимость сохранения с состояния службы между ее вызовами.

    При грубой детализации происходит обмен большими порциями информации и каждая функция реализуют большую функциональность. При этом передаваемые данных часто имеют составную структуру и используются специально созданные объекты переноса данных (data transfer objects).

   Функции с мелкой детализацией обычно вызываются не реальными приложениями, а другими  службами - композитными или с грубой детализацией, использующими высокосоростные сетевые соединения. При вызове служб с мелкой детализацией напрямую клиентскими приложениями из-за большого количества обмениваемых сообщений (особенно при низкой скоростью соединения) суммарное время вызова функций возрастает из-за накладных расходов.

    Композитные службы используют для своей работы службы с мелкой и грубой детализацией, делегируя им реальную работу и осуществляя контролирующую функцию и сбор информации.