Занятие 1. Процесс обработки транзакций

(Продолжительность занятия 30 минут)

Microsoft Transaction Server упрощает разработку приложений, позволяя развертывать масштабируемые серверные приложения, построенные из компонентов Microsoft ActiveX. На этом занятии Вы узнаете, как работает Microsoft Transaction Server.


Изучив материал этого занятия, Вы сможете:


Microsoft Transaction Server обеспечивает поддержку компонентов — транзакций, служб масштабирования, управления подключениями и администрирования, — которые позволяют создавать и развертывать масштабируемые серверные приложения.

Microsoft Transaction Server использует довольно простую программную модель. Основная схема всегда одинакова: клиент запрашивает объект модели компонентных объектов (Component Object Model, СОМ), работающий под управлением Microsoft Transaction Server. Этот подход позволяет Microsoft Transaction Server создать контекст и связать его с объектом. Окончив работу, объект в случае успешного завершения работы вызывает интерфейс SetComplete, а в случае неудачи — SetAbort.

Транзакция — это группа действий, которые выполняются (или отменяются) как единое целое. Кроме того, это способ координации последовательных изменений ресурса или совокупности ресурсов. Чаще всего такая координация обеспечивается с помощью централизованного механизма — диспетчера ресурсов. Транзакции отвечают требованиям так называемой ACID* -модели.


*По первым буквам английских названий четырех составляющих свойств. — Прим. ред.


Компоненты Microsoft Transaction Server

Службы Microsoft Transaction Server можно классифицировать по четырем категориям. Прежде всего, это брокер объектных запросов (Object Request Broker, ORB). Когда сервер получает запрос объекта, ORB обрабатывает этот вызов, проверяет доступность объекта и, наконец, предоставляет объект клиенту.

Следующий компонент — монитор обработки транзакций (Transaction Processing Monitor, TP Monitor), который можно упрощенно описать как промежуточный слой между клиентом и ресурсами сервера, берет на себя управление транзакциями и ресурсами, а также обеспечивает равномерное распределение нагрузки и устойчивость к сбоям. Монитор транзакций не взаимодействует с объектами — он лишь обрабатывает запросы наиболее эффективным способом.

Microsoft Transaction Server объединяет функции брокера объектных запросов и мониторинг обработки транзакций на базе модели распределенных компонентных объектов (Distributed Component Object Model, DCOM). В качестве монитора обработки транзакций Microsoft Transaction Server использует Microsoft Distributed Transaction Coordinator (DTC).

Вот пример типичного процесса: запросы объектов поступают с помощью DCOM; Microsoft Transaction Server обрабатывает их, выделяет ресурсы сервера и инициирует транзакцию средствами координатора распределенных транзакций. Затем монитор транзакций возвращает объект клиенту. После этого клиент использует объект для выполнения необходимых действий. Microsoft Transaction Server функционирует между объектом и клиентом, отслеживая все действия последнего и тем самым играя роль монитора обработки транзакций. Например, Transaction Server может упорядочивать запросы и накапливать ресурсы во время ожидания запросов. Закончив работу с объектом, клиент освобождает его, что заставляет Microsoft Transaction Server завершить транзакцию и освободить ресурсы (или вернуть их в пул).

Трехуровневая архитектура

Трехуровневые приложения, в которых сервер приложений, клиентский компьютер и источник данных отделены друг от друга, характеризуются гораздо большей гибкостью при развертывании, чем двухуровневые приложения архитектуры клиент-сервер, в которых код приложения зависит от местонахождения данных. Трехуровневая архитектура состоит из перечисленных ниже звеньев.

Независимо от типа используемых пользовательских интерфейсов важно помнить, что приложения строятся из одних и тех же основных частей. Трехуровневая архитектура определяет логическую организацию приложения и не требует обязательного использования трех разных компьютеров. Другими словами, не обязательно, чтобы логические уровни трехуровневой архитектуры соответствовали физической топологии Вашей сети. Способ развертывания составных частей приложения определяется Вашими требованиями и возможностями сети.

MSMQ

Сервер очереди сообщений (Microsoft Message Queue Server, MSMQ) может работать в качестве диспетчера ресурсов Microsoft Transaction Server. Он обеспечивает асинхронную передачу сообщений в корпоративной системе обслуживания очереди. Этот подход позволяет масштабировать приложения, так как системам обработки транзакций (например, Microsoft Transaction Server) не приходится полагаться на постоянную доступность всех диспетчеров ресурсов, а эффективность выполнения транзакций больше не определяется скоростью работы самого медленного диспетчера — достаточно просто поместить сообщение в очередь для доставки. MSMQ поддерживает даже независимых клиентов, отправляющих сообщения только при подключении к сети сервера MSMQ.

MSMQ поддерживает ActiveX, динамическую маршрутизацию и конфигурирование, множество вариантов доставки сообщений и уведомления, а также интеграцию со средствами защиты Microsoft Windows NT.

Интеграция с активными страницами сервера

Internet Information Server 4.0 интегрирует технологам активных страниц сервера (Active Server Pages, ASP) и Microsoft Transaction Server. Встроенная в Internet Information Server технология ASP позволяет применять модель клиент-сервер в Web- приложениях, в результате повышая производительность выполнения запросов и уменьшая сетевой трафик.

Дальнейшее развитие ASP обеспечило поддержку масштабируемых трехуровневых приложений. Теперь в основе технологии активных страниц сервера лежит Microsoft Transaction Server, и в результате ASP-приложения могут выполняться в отдельных адресных пространствах для обеспечения безопасности и надежности. Транзакция не способна охватывать несколько ASP-страниц, поэтому, если для выполнения транзакции необходимы объекты нескольких компонентов, сгруппируйте эти объекты на одной ASP-странице.

Компоненты транзакции

Компонент — это единица кода технологии ActiveX, предоставляющая определенный набор услуг посредством своего интерфейса. Компоненты предоставляют клиентам запрашиваемые ими объекты.

Для поддержки транзакций необходимы следующие компоненты:

Компонентное программирование

При использовании компонентного подхода можно собирать приложения из доступных компонентов, как из кубиков. Приложения больше не обязаны быть монолитными, что позволяет ослабить связи между кодом, использующим компоненты, и самими компонентами.

СОМ позволяет получать информацию о функциях объектов во время выполнения или во время разработки. Это положение имеет несколько важных следствий:

Таким образом, разработчики, расширяя функциональные возможности объектов, не беспокоятся о нарушении работоспособности уже используемого кода.

Применение СОМ позволяет клиенту не заботиться о физическом местонахождении компонента в файловой системе или в сети за счет самосогласованного метода взаимодействия с внутрии внепроцессными компонентами.

Кроме того, клиентский код не обязательно писать на том же языке, что и компонент. Необходимо лишь, чтобы язык, на котором написан СОМ-клиент, позволял вызывать функции с помощью указателей на них. Для сценарных языков выполнение таких вызовов берет на себя среда выполнения сценариев.

Компонент СОМ, зарегистрированный в Microsoft Transaction Server, выполняется в отдельном процессе. При этом вызов InProcServer32 в его коде заменяется на вызов LocalServer32, который определяет Mtx.exe в качестве замены внутрипроцессного сервера, что позволяет Microsoft Transaction Server создать оболочку для реального компонента.

СОМ предусматривает новую спецификацию для описания объектов, называемую метаданными. Все объекты СОМ обязаны описывать свои функции с помощью метаданных, что позволяет всем объектам предоставлять клиентам информацию о своих услугах и о любых возможных требованиях.


Примечание Существуют методы, позволяющие сохранять состояние клиента. Например, средствами массивов типа variant можно передать данные клиенту для локального редактирования. Другой способ — скопировать объекты клиенту для локального использования, а затем переписать их обратно на сервер для обновления состояния. Этот подход позволяет серверным компонентам не хранить состояние, однако сами объекты при этом доступны локально, так что обращение к их свойствам и методам не будет порождать дополнительный сетевой трафик.


Резюме

Транзакция — это группа действий, которые выполняются или отменяются как единое целое. Транзакция состоит из нескольких компонентов. Microsoft Transaction Server делает управление транзакциями прозрачным для разработчика компонентов. Средствами Microsoft Transaction Server Вы можете координировать работу многих компонентов, написанных на различных языках и работающих на разных системах, как единого целого.

Используются технологии uCoz