COM+ обеспечит большую универсальность приложений
С одной стороны, требовалось определить логику бизнес-контекста, а с другой — программа должна была выполнять определенные технические функции для поддержки среды приложений.
К примеру, приложение, обслуживающее прием заказов, содержит код для управления бизнес-функциями (определение расценок на заказанные компоненты и т. п.) и код для осуществления внутрисистемных функций (скажем, осуществляющий доступ к инвентарной базе данных). Коду, реализующему логику бизнеса, обычно уделяется основное внимание, в то время как другой воспринимается как неизбежное зло — своего рода технический налог, который становится все больше по мере того, как растет сложность среды.
Но это технологическое бремя зачастую оказывается самым дорогостоящим компонентом программы, поскольку именно из-за этой части иной раз, при переносе в новый технический контекст, приложение приходится переписывать полностью. Например, если переносить приложение для приема заказов из среды клиент-сервер на Web, скорее всего бизнес-логику этого приложения существенно менять не придется (если вообще придется). Но код, необходимый для навигации в новой среде, будет отличаться кардинально, и создание новой программы может потребовать значительного увеличения затрат на разработку.
Операционная система Windows 2000 предлагает COM+ — последнюю версию распределенной вычислительной модели, которая содержит в себе функциональность MTS (Microsoft Transaction Server) и может обеспечить упрощенный программный интерфейс, позволяющий в дальнейшем совершенствовать программу. COM+ также облегчает использование API для различных сервисов на платформе Windows 2000, тем самым сокращая стоимость разработки. Нужно, однако, иметь в виду, что сейчас моделью COM+ можно пользоваться только на платформе Windows 2000.
Microsoft создала оригинальную модель COM (Component Object Model) с целью связывать объектные компоненты с сервисами, размещенными либо на том же компьютере, либо на другом. Если, к примеру, производится добавление электронной таблицы Microsoft Excel в документ Word, — это уже использование COM (двойное нажатие клавиши мыши на объект с электронной таблицей приведет к вызову приложения Excel). Эта концепция может быть расширена и на различные сервисы, такие как управление транзакциями или очередями, в этом случае будут применяться те же самые правила. К примеру, объект может послать запрос к сервисам управления очередями через встроенный интерфейс, который становится активным во время исполнения.
Но одно из ограничений COM состоит в том, что интерфейс для обращения к каждому сервису операционной системы должен быть «прошит» в приложении. Предположим, что приложение, обслуживающее прием заказов, содержит интерфейсные вызовы для запроса к инвентарной базе данных для проверки и последующего обновления информации в ней. В этом случае база данных должна быть постоянно доступна, поскольку иначе при выполнении транзакций возникнет сбой.
Более эффективное решение состоит в том, чтобы хранить запросы и указания на обновление в очереди сообщений, информируя сервер баз данных, когда необходимо читать и записывать сообщения, содержащиеся в очереди. Такой подход также увеличивает гибкость приложений, позволяя их применять, к примеру, на мобильных компьютерах, работающих в автономном режиме. Но при этом приходится добавлять новые интерфейсные вызовы для обработки находящихся в очереди сообщений вместо того, чтобы пользоваться прямым доступом к базе данных.
Используйте COM+, который представляет собой промежуточный уровень (известный как перехватчик) между приложением и сервисами. Перехватчик активируется каждый раз, когда приложение вызывает сервис, и его роль состоит в том, чтобы подготовить нужную техническую среду для приложения в соответствии с таблицей атрибутов, находящейся в хранилище, внешнем для приложения.
Таким образом, благодаря COM+ разработчикам не придется писать большие фрагменты кода для того, чтобы адаптировать свои приложения к контексту. Наоборот, с помощью перехватчика контекстно-зависимые сервисы могут быть автоматически установлены во время исполнения программ. Можно даже установить различные атрибуты, чтобы реализовать различное поведение одного и того же приложения. Во время его исполнения перехватчики будут вызывать нужные сервисы в зависимости от контекста и набора свойств.
Конечно, концепция перехватчика, который автоматически дополняет ваше приложение сервисами операционной системы, не нова. Фактически эта идея была реализована в MTS. Но в Windows 2000 сервисы MTS интегрированы и имеют согласованный интерфейс с COM+, что дает разработчикам дополнительные преимущества благодаря унифицированной семантике прикладного программного интерфейса.
Перехватчик — одно из самых важных нововведений в COM+. С точки зрения разработчика это большая удача, поскольку такой подход упрощает создание кода распределенного программного обеспечения. Он также сокращает затраты на программирование там, где это обходится дороже всего, — при создании программ с учетом постоянно меняющегося технического контекста. Воспринимайте это как льготу по технологическому налогу, которую дает Windows 2000.
Но COM+ не только интегратор. Он содержит средства, способные обеспечить будущую интеграцию сервисов MSMQ (Microsoft Message Queue). За счет прямого доступа к COM+ и использования согласованного прикладного программного интерфейса разработчики могут посылать запросы на сервисы из приложения в виде организованных в очередь сообщений вместо того, чтобы передавать запросы непосредственно провайдеру услуг. Два компонента COM+, модуль записи и модуль чтения, передают и получают эти сообщения с сервера MSMQ, скрывая различные семантики, которые сервер требует от разработчика.
К моменту публикации статьи еще не было ясно, преобразуется ли эта возможность в поддержку сервисов обработки сообщений на базе COM+, что было бы очень неплохо. Сейчас обратиться к сервисам обработки сообщений можно либо через прикладной программный интерфейс COM+ (с некоторыми ограничениями, такими как описание формата каждого сообщения), либо через внутренний вызов MSMQ. Существующее двойственное множество вызовов сервисов обработки сообщений, предлагаемое MSMQ и COM+, способно привести к путанице, когда и где нужно использовать то или другое решение.
Наконец, COM+ предлагает прикладные программные интерфейсы для предоставления услуг публикации и подписки (они включены в состав базовой операционной системы и согласуются с семантикой COM), основанные на механизме обработки событий. Новая возможность позволяет хранить информацию о поставщиках и подписчиках для каждого из событий. Можно определить, что необходимо контролировать и о чем следует информировать. Например, в системе приема заказов — потребовать уведомления в том случае, если количество продуктов на складе сравняется с числом возобновленных заказов, и автоматически инициировать приложение для обработки этого события. Эти сервисы могли бы оказаться весьма кстати в ситуациях с участием уполномоченного поставщика информации и многочисленных непостоянных подписчиков (например, на получение биржевых котировок или контроль изменений на валютном рынке).
Таким образом, в целом COM+ предлагает несколько интересных возможностей, которые позволят компаниям сэкономить время и деньги на этапах разработки и развертывания. Не забывайте, что COM+ работает только под Windows 2000, поэтому любая компания, заинтересованная в получении преимуществ COM+, должна будет соотнести технологические преимущества с затратами на переход к новой ОС и общей стоимостью владения.
Microsoft COM+
COM+ предлагает упрощенную модель программирования, которая позволяет ускорить создание сложных приложений и тем самым экономить затраты на разработку. Однако COM+ работает только под Windows 2000, поэтому компании должны соотнести ожидаемую экономию в затратах на разработку со стоимостью перехода на новую операционную систему. COM+ обеспечивает большую независимость приложений от различных технических сценариев. Он может упростить работу программистов и обеспечить большую гибкость в разработке и развертывании сервисов за счет единого прикладного программного интерфейса.
Достоинства: согласованный API-интерфейс; гибкое поведение приложений во время исполнения; упрощенная модель программирования, определяемая атрибутами.
Недостатки: требует установки Windows 2000Перехватчик упрощает разработку программного обеспечения
Компоненты COM+ могут изменить поведение приложения на лету путем проверки каждого действия по таблице атрибутов, как в этом примере с обработкой заказов. Архитектура значительно снижает нагрузку на разработчика при создании новых приложений.