- •Распределенные информационные системы
- •Тема 1. Введение в распределенные системы (3 ч)
- •3. Концепции аппаратных решений
- •1. Что такое распределенная система?
- •2. Основные задачи распределенной обработки
- •2.1. Прозрачность
- •2.2. Открытость
- •2.3. Масштабируемость (возможность расширения)
- •4. Концепции программных решений
- •3. Концепции аппаратных решений
- •5. Модель Клиент-сервер
- •6. Итоги
- •Тема 2. Модели взаимодействия компонентов рс (2 часа)
- •2.1 Понятие промежуточной среды
- •2.2 Модели взаимодействия компонентов рс
- •2.2.1 Обмен сообщениями
- •2.2.2 Удаленный вызов процедур
- •2.2.3 Обращение к удаленным объектам (rmi)
- •2.2.4 Связь на основе потоков данных
- •Тема 3. Распределенные системы объектов (4 часа)
- •Задачи построения рис
- •Преимущества использования
- •Повторное использование кода
- •Изолированная разработка
- •Сопровождение приложений
- •Тонкие клиенты
- •3.2 Объектная модель corba
- •Объектная модель corba
- •Базовый объектный адаптер boa
- •Динамический интерфейс вызова (dii)
- •Репозиторий интерфейсов (Interface Repository)
- •Протоколы взаимодействия различных объектных брокеров (giop, iiop)
- •Основные службы (сервисы) стандарта corba
- •Достоинства orb
- •Выводы. Достоинства и недостатки использования corba
- •Технология ActiveX – основные возможности
- •Технология ole – связывание и вставка объектов
- •3.3.2 Распределенная компонентная модель объектов (dcom)
- •Обеспечение безопасного доступа к удаленному объекту
- •Достоинства и недостатки dcom
- •Балансировка нагрузки
- •Just-in-time-активация и пул объектов
- •Распределенные транзакции
- •Отложенные компоненты
- •Тема 4 Разработка распределенных приложений на платформе Microsoft.Net Framework
- •4.1. Основы платформы .Net Framework
- •4.2 Введение в среду Common Language Runtime
- •Примеры программ для платформы ms.Net
- •Первая программа на c#
- •Первая программа на vb.Net
- •4.3 Преимущества платформы ms.Net
- •4.4 Поддержка средств распределенной разработки
- •4.5 Сервисы и интерфейс программной компоненты
- •4.6 Среда Microsoft Message Queuing (msmq)
- •Базовая модель ejb
- •Средства защиты ejb
- •Транзакции
- •Тема 5. Современные технологи разработки распределенных систем
- •5.1 Технология Web-сервисов
- •5.1.1 Основы Web-сервисов
- •Общее взаимопонимание
- •5.1.2 Взаимодействие с веб-сервисами
- •Документно-ориентированные взаимодействия
- •5.1.3. Технология веб-сервисов
- •5.1.4. Пример использования
- •5.2. Определение сервисно-ориентированной архитектуры
- •5.3. Преимущества soa
- •5.4 Стек технологий веб-сервисов
- •5.5. Принципы взаимодействия веб-сервисов в рамках сервисно-ориентированной архитектуры
- •Тема 7. Распределенные бд
- •7.1. Свойства рбд
- •7.2. Механизм распределенных транзакций
- •7.3. Целостность данных
- •7.4 Прозрачность расположения
- •7.5. Обработка распределенных запросов
- •7.7. Технология тиражирования данных
- •7.8 Архитектура "клиент-сервер"
5.2. Определение сервисно-ориентированной архитектуры
С функциональной точки зрения бизнес-приложение распадается на совокупность взаимодействующих между собой сервисов. Эту совокупность взаимодействующих сервисов можно отождествить с еще одним ключевым понятием - сервисно-ориентированной архитектурой:
Компонентная модель, состоящая из отдельных функциональных модулей приложений, называемых сервисами, имеющих определенные согласно некоторым общим правилам интерфейсы и механизм взаимодействия между собой, называется сервисно-ориентированной архитектурой (Service-Oriented Architecture, SOA).
Переходя в мир абстракций, можно дать следующее, более сильное, определение сервисно-ориентированной архитектуры:
Архитектура приложений, в рамках которой все функции приложения являются независимыми сервисами с четко определенными интерфейсами, которые можно вызывать в нужном порядке с целью формирования бизнес-процессов, называется сервисно-ориентированной архитектурой.
На сегодняшний день устоявшегося, принятого IT-сообществом, определения SOA нет. Здесь мы приводим определение, которое, на наш взгляд, наиболее полно и точно отражает современное состояние этой концепции).
Поясним второе определение:
- "все функции приложения" - как мы уже упомянули, любое приложение с функциональной точки зрения может быть представлено совокупностью функций; ресурс, реализующий функцию, есть сервис. Таким образом, приведенное определение требует для представления и реализации любого приложения в рамках SOA проведения его полной декомпозиции до уровня отдельных функций;
- являются независимыми сервисами" - в понятие независимости сервиса вкладывается следующий смысл: сервисы функционируют независимо от других информационных систем, являются функционально самостоятельными объектами. Они представляют собой "черные ящики" для любых внешних приложений: внешние приложения не знают, как сервис формирует из входных данных выходные. Все, что им известно - что необходимо подать на вход сервиса и что следует ожидать на его выходе;
"с четко определенными интерфейсами" - функция (или функции), которую реализует данный сервис, должна быть однозначно описана согласно определенным, принятым для всех сервисов, правилам. Должен быть описан набор и типы входных данных, а также набор и типы выходных данных;
"с ... интерфейсами, которые можно вызывать" - данное требование обусловлено необходимостью обеспечения взаимодействия между различными сервисами: для внешних по отношению к сервису информационных систем не должно иметь значения на каком языке программирования реализован сервис (точнее, здесь, веб-сервис), на какой программно-аппаратной платформе он функционирует, локально или удаленно он расположен. Внешняя информационная система должна иметь возможность взаимодействовать с сервисом (т.е. передать ему входные данные и получить выходные) вне зависимости от указанных его особенностей.
Требования к SOA
SOA, будучи практической концепцией, должна соответствовать определенным требованиям, предъявляемых к ней современным состоянием бизнес-отношений и информационных технологий, а также тенденциями их совместного развития:
обеспечивать преемственность инвестиций в IT, сохранение существующих информационных систем и их совместное эффективное использование для повышения ROI от IT-вложений;
обеспечивать реализацию различных типов интеграции:
- пользовательская интеграция (user integration) - обеспечение взаимодействия информационной системы с конкретным пользователем;
- интеграция приложений (application connectivity) - обеспечение взаимодействия приложений;
- интеграция процессов (process integration) - интеграция бизнес-процессов;
- информационная интеграция (information integration) - интеграция с целью обеспечения доступности информации и данных; - интеграция новых приложений (build to integrate) - интеграция новых приложений и сервисов в существующие информационные системы.
обеспечивать поэтапность внедрения вновь созданных и миграции существующих информационных систем;
иметь стандартизованную технологическую обеспеченность реализации и инструментарий разработки, предоставляющие наилучшие возможности повторного использования приложений, внедрения новых и миграции существующих информационных систем;
позволять реализацию различных моделей построения информационных систем, в особенности таких как портальные решения, grid-системы.
Сегодняшний уровень развития SOA позволяет утверждать, что все указанные требования в той или иной мере выполняются.
SOA и веб-сервисы - в чем разница?
Необходимо отметить, что SOA - не есть синоним веб-сервисов, а веб-сервисы - не есть единственный способ реализации SOA. SOA не является технологией или набором технологий, это - концепция, абстрактное представление реализации информационных систем с помощью сервисов безотносительно конкретных технологий. Как нетрудно заметить, в SOA присутствуют элементы объектного подхода к построению информационных систем: декомпозиция (приложений на отдельные функции) и инкапсуляция (сервисы как "черные ящики"). Однако, подчеркнем, термин "объектно-ориентированный" по отношению к SOA не является корректным, т. к. в SOA отсутствуют все необходимые элементы объектно-ориентированной парадигмы. Более правильно называть SOA концепцией, использующей объектный подход.
Веб-сервисы, в свою очередь, являются лишь технологиями, с помощью которых можно эффективно реализовать сервисно-ориентированную архитектуру. Существуют и другие технологии, с применением которых можно реализовать SOA - например, упомянутая выше CORBA.
