производительности.
{ Агрегация
При использовании этого подхода старый компонент знает о том, что его использует другой компонент. Более того,
он специально проектируется для обеспечения такой возможности. Зато и новый (агрегирующий) компонент не
работает посредником - вызовы клиента, относящиеся к старому компоненту, направляются прямо ему. Но клиент
этого не замечает, ему кажется, что он работает
с одним новым компонентом.
z Полиморфизм
Если описан некоторый интерфейс, то любое число классов могут реализовывать его любым способом, на любом языке
(поддерживающем COM). Конечно, при этом не должна меняться семантика интерфейса. Иными словами, клиенту не
важно, кто и как реализовал интересующий его интерфейс. Во всех случаях он получит именно то, что ожидает.
z Бинарное представление
Как уже отмечалось ранее, компоненты распространяются и используются в бинарном виде, т.е. в виде ``черного ящика''.
Это позволяет решить многие проблемы, упомянутые ранее при описании недостатков ООП, и, кроме того, дает новые
возможности. Например, использование различных языков программирования при реализации компонентов и
использующих их клиентов.
z Инфраструктура для распределенных приложений
Многое из этой области включается в саму архитектуру системы, реализующей технологию компонентного
программирования, многое обеспечивается в виде дополнительных сервисов.
Например, в случае COM, при размещении компонента и клиента в различных процессах (на одном или на разных
компьютерах), автоматически формируется канал передачи данных, который обеспечивает вызов методов, передачу
параметров
и возврат результатов. В качестве примера дополнительных сервисов, реализованных в COM+, можно
упомянуть обеспечение таких важных для распределенного приложения сервисов как безопасность, транзакции,
балансировка загрузки серверов, асинхронный доступ к компонентам, поддержка публикации и подписки на события и т.п.
Эволюция распределенных систем
Коротко напомним напомним эволюцию, которую претерпели распределенные системы:
z Одноуровневая система
Все пользователи работают на терминалах, подключенных к одному компьютеру. Если кто-то запустил задачу, требующую
много процессорного времени, все остальные пользователи это сразу же замечают.
z Локальная вычислительная сеть персональных компьютеров
Пользователи работают на персональных машинах и совместно используют файловый сервер, принтер.
z Архитектура клиент/сервер
Это так называемая двухзвенная архитектура. Сервер (например, баз данных) ожидает запросы клиентов (например,
выраженные на SQL), обрабатывает запрос и возвращает результат клиенту. Клиенты работают с сервером независимо.
Целостность данных обеспечивается механизмом транзакций.
Еще один пример системы с такой архитектурой - поисковые системы типа Alta Vista, Google, Yandex. В отличие от
традиционных клиентов для работы
с сервером баз данных ( как правило, ``толстых'' клиентов, требующих специальной
процедуры установки на машине пользователя), упомянутые поисковые системы работают с ``тонким'' клиентом, например,
с браузером Internet Explorer, не зависящим от конкретного приложения.
Однако, в поисковых системах заранее фиксирована так называемая бизнес-логика, что и позволяет обойтись тонким
клиентом. В более сложных случаях
приложений на уровне предприятий в рамках архитектуры клиент/сервер
используются толстые клиенты, реализующие бизнез-логику конкретного рабочего места.
z Трехзвенная архитектура клиент/бизнес-логика/данные
Это современная архитектура, в которой бизнес-логика отделена от клиента и от данных. Отделение бизнес-логики от
клиента позволяет использовать тонких клиентов для работы со сложными приложениями, что весьма актуально, т.к. в этом
случае пользователи могут подключаться к системе через Интернет. Хранилища совместно используемых
данных тоже не
являются подходящими средами для реализации бизнес-логики. Это часто наследуемые системы, не поддерживающие
современные технологии. Отсюда логически вытекает необходимость отдельной реализации бизнес-логики, и
компонентное программирование может служить подходящей технологией для ее реализации.
z Web сервисы
Это новая перспективная архитектура, обеспечивающая распределенность на новом уровне. Вместо покупки компонентов и
их встраивания в приложение предлагается покупать время их работы и формировать приложение, осуществляющее
вызовы методов из компонентов, принадлежащих и поддерживаемых независимыми владельцами. Очевидно, что при
реальном использовании такой архитектуры возникнет много новых вопросов, например, связанных с
надежностью. Вряд
ли система управления большим и сложным объектом будет основана на этой архитектуре. Но различные информационные
системы являются примерами систем, которые будут проектироваться с использованием Web сервисов. Данная технология
обеспечит невиданный ранее уровень повторного использования компонентов, что и гарантирует ее развитие. Система .Net
от Microsoft предоставляет технологию для разработки и использования Web сервисов.
Технология COM (Component Object Model - компонентная
объектная модель) от Microsoft
Перепишем приложение о книгах и журналах, используя идеологию модели COM - Component Object Model от Microsoft.
Изложение основ этой модели будет проведено на примерах.