Выбор типа связи между компонентами распределенной системы - жесткий или
свободный, - которому отдается предпочтение, соответственно, в объектно-
ориентированном и сервисно-ориентированном подходах, интенсивно обсуждается
специалистами и практиками, в том числе на ряде интернет-форумов. Мы сосредоточимся
на различие этих подходов с точки зрения крупномасштабных распределенных грид-
систем.
Традиционно, в распределенных объектно-ориентированных системах типа CORBA [45] и
DCOM [46] программные компоненты с определенными функциональными
возможностями рассматривались как распределенные объекты. В этой парадигме,
клиенты имеют статическое знание об объектах, экземпляры объектов инкапсулируют
данные, и взаимодействие происходит посредством синхронного вызова удаленных
методов с использованием протоколов специального назначения. Это подразумевает, что
взаимодействующие объекты являются сильно связанными, с жестко
регламентированными методами запросов и ответов. В этой парадигме, объект с
инкапсулированными данными является центральной фигурой. Объекты имеют
тенденцию быть «мелкозернистым» отображением чего-то реально существующего.
Другими словами, если речь идет о какой-либо сравнительно сложной системе, объекты
имеют тенденцию отображать не ее общие свойства, а каждую из ее небольших частей,
подсистем.
С другой стороны, в сервисно-ориентированной среде сервисы слабо связаны: они
взаимодействуют с помощью обменами сообщениями, которые могут быть
односторонними, синхронными или асинхронными. Этот подход стимулирует такой
дизайн систем, в которых запросы и ответы не обязательно обрабатываются одним и тем
же набором взаимодействующих компонент. В качестве примера, рассмотрим клиента,
который обращается к сервису А, чтобы инициализировать заказ. Сервис A может
проверить наличие товара, обращаясь к сервису Б, а сервис Б возможно обратится к
сервису С, который формирует заявку и отправляет ее клиенту для подтверждения. Это
простой пример, который иллюстрирует понятие свободной связи: запрос может быть
направлен одному сервису, а ответ получен от другого. В этой парадигме, сервис является
центральной фигурой. Вообще говоря, сервисы имеют тенденцию быть более
«крупнозернистым» (общим, грубым) отображением реальных сущностей, чем объекты.
При текущей тенденции строить распределенные системы только на основе веб-сервисов,
в подходе, основанном на распределенных объектах, зачастую видят одни недостатки.
Это, однако, не так: достоинствами объектно-ориентированного подхода является
зрелость существующих реализаций, эффективное взаимодействие компонент, модель
инкапсулирования состояний и поведения объектов и это хорошо подходит для
некоторым приложениям. Поэтому объектно-ориентированные распределенные
технологии получили распространение в индустриальных приложениях – для
распределенных систем, например, финансовых учреждений, организаций
здравоохранения, телекоммуникационных предприятий.
С другой стороны, хотя ясно, что SOA и веб-сервисы будут главной линией развития в
обозримом будущем, нужно понимать, что они все еще имеют множество серьезных
проблем, которые еще надо преодолеть, включая:
пока все еще незрелую технологию,
разночтения и некоторый беспорядок в области стандартов,
существенные «накладные расходы» при работе Веб-сервисов, связанные
сериализацией/десериализацией (преобразованием программного кода в XML-
текст и обратно) и анализом SOAP-сообщений и документов XML при каждом
обмене сообщениями.
Особенно существенным является последний недостаток, поскольку он негативным
образом сказывается на производительности распределенных систем. Как всегда, за
универсальность надо платить падением эффективности! Однако платформо-
31