Ватсон Карли
Шрифт:
Службы COM+ в ретроспективе
На заре программирования разработчик должен был создавать все с самого начала. Если ему требовались, например, возможности базы данных, то он должен был ее реализовывать, придумывая механизм для поддержания индексов и поиска записей. Тогда при создании программного обеспечения люди тратили много времени на повторное изобретение колеса.
По мере развития технологий программирования поставщики упаковали полезную функциональность в повторно используемые серверные компоненты. (Теперь, например, если разработчику потребуется функциональность базы данных, то он может использовать Oracle или SQL Server). По мере дальнейшего развития все больше полезной функциональности извлекалось из прикладных программ и переносилось на уровень серверных программ и даже операционной системы.
Можно рассматривать службы COM+ как проявление этой тенденции. Службы COM+ облегчили жизнь разработчиков уровня предприятия, предоставляя ценную функциональность, которую легко могут использовать компоненты пользователя. Когда компоненту необходима такая возможность, как обеспечение транзакции, то для получения надежного решения разработчик может положиться на службы COM+.
Состав служб COM+
Службы COM+ начинали жизнь как дополнительный модуль Windows NT, называемый Сервер транзакций Microsoft (MTS). В настоящее время Windows 2000 определяет MTS как составную часть операционной системы, переименовывая ее в ходе процесса.
В дополнение ко всем исходным свойствам MTS, службы COM+ включают в себя новые возможности, в еще большей степени сокращающие объем кода, который должен написать разработчик компонентов.
Службы COM+, которые уже были представлены в MTS, включают в себя:
□ Обеспечение транзакций
□ Организацию пулов объектов
□ Оперативную активизацию объектов (JIT, Just-in-Time)
□ Безопасность
Новые службы, введенные COM+:
□ Поддержка событий
□ Очереди сообщений компонентов
□ Выравнивание нагрузки компонентов
В этой главе мы рассмотрим каждую из служб COM+, как старые, известные из MTS, так и новые, которые могут быть еще незнакомы. Но сначала кратко рассмотрим лучшего помощника COM+: "snap-in" служб компонентов (Component Services). (Snap-in является специальным типом программы, таким как SQL Server или IIS, который выполняется внутри интерфейса консоли управления Microsoft — ММС.)
Snap-in служб компонентов
Опытные разработчики могут вспомнить, что администратор MTS был доступен в Windows NT из меню Start как пункт Option Pack. В соответствии со своим новым статусом составной части операционной системы службы COM+ перечислены в Windows 2000 более отчетливо в меню Administrative Tools под заголовком Component Services.
Левая панель окна служб компонентов (Component Services) содержит иерархическое дерево с компьютером, приложением COM+ и узлами компонентов. (На языке служб компонентов приложение является группой компонентов COM+, которые рассматриваются (администрируются) как целое, это называлось в MTS пакетом). Класс каждого компонента в приложении представлен золотым шариком со знаком плюс в середине, который начинает вращаться, когда происходит обращение к компоненту.
Существует два метода импорта сборок .NET в службы компонентов. Первый метод использует функциональность, предоставленную snap-in служб компонентов, а второй использует CLR.
Мы рассмотрим оба метода импорта позже. В данный момент начнем обзор различных служб, которые предоставляет COM+.
Транзакции COM+
Назначение транзакций
Транзакция является множеством операций, которые завершаются успешно или отказывают как целое, то есть, если одна операция в множестве отказывает, то все остальные, завершившиеся ранее, должны вернуться в исходное состояние, которое было до начала транзакции. Практический пример будет представлен ниже.
Рассмотрим web-сайт, который занимается в основном обработкой кредитных карт для заказов. Если пользователь заказывает на сайте какой-то продукт, то требуется, чтобы не только было выполнено списание с его счета, но чтобы запись заказа была помещена в базу данных заказов. Если возникает проблема с вводом записи о заказе в базу данных, то списание средств с кредитной карты должно быть отменено и заказ также должен быть отменен, иначе пользователь заплатит за товар, который он никогда не получит.