Microsoft Transaction Server
Microsoft Transaction Server (MTS) — это компонентная модель и среда выполнения для создания, развёртывания и управления распределёнными приложениями на платформе Windows, ориентированная на обработку транзакций в трёхзвенной архитектуре «клиент — сервер приложений — база данных». MTS была выпущена корпорацией Microsoft в 1996 году как часть пакета Windows NT 4.0 Option Pack и стала ключевым элементом ранней стратегии Microsoft по продвижению серверных приложений на базе COM (Component Object Model). Система автоматизировала управление транзакциями, пулами соединений, потоками и безопасностью, позволяя разработчикам сосредоточиться на бизнес-логике, а не на инфраструктурных задачах.
История
Предпосылки создания
В середине 1990-х годов корпоративные приложения всё чаще строились по трёхзвенной схеме, где бизнес-логика выполнялась на сервере приложений, а клиентский интерфейс и база данных были разделены. Однако разработка таких систем требовала ручного управления транзакциями (через API DTC — Distributed Transaction Coordinator), пулами соединений с базами данных, синхронизацией потоков и обработкой ошибок. Это делало приложения сложными, дорогими в разработке и подверженными ошибкам.
Microsoft, стремясь закрепиться на корпоративном рынке, решила предложить готовую инфраструктуру для серверных приложений, основанную на своей технологии COM. MTS стала первым продуктом, реализовавшим концепцию «компонентного сервера приложений».
Выпуск и развитие
Первая версия MTS 1.0 была выпущена в 1996 году вместе с Windows NT 4.0 Option Pack. Она включала:
- среду выполнения для COM-компонентов;
- интеграцию с Microsoft Distributed Transaction Coordinator (MS DTC);
- автоматическое управление пулами объектов и потоков;
- базовую поддержку безопасности на основе ролей.
В 1997 году вышла MTS 2.0, которая добавила:
- поддержку очередей сообщений через Microsoft Message Queue (MSMQ);
- улучшенную интеграцию с Internet Information Server (IIS) для веб-приложений;
- возможность развёртывания компонентов через административную консоль.
MTS стала основой для более поздней технологии COM+ (1999), которая объединила MTS и расширения COM в единую платформу, встроенную в Windows 2000. COM+ унаследовала все возможности MTS и добавила поддержку объектного пула, событийной модели (COM+ Events) и более гибкую систему безопасности. Таким образом, MTS фактически прекратила существование как отдельный продукт после выхода Windows 2000, но её архитектура и концепции легли в основу современных технологий .NET и Windows Communication Foundation (WCF).
Архитектура и принципы работы
Компонентная модель
MTS работала с COM-компонентами — бинарными модулями, реализующими интерфейсы на языках C++, Visual Basic, Delphi и других, поддерживающих COM. Компоненты регистрировались в MTS и развёртывались в так называемых «пакетах» (packages) — логических группах, объединённых общими настройками безопасности и жизненного цикла.
Управление транзакциями
Центральным элементом MTS была поддержка распределённых транзакций через MS DTC. Компонент мог объявить себя «транзакционным» (transactional), указав атрибут в реестре или через интерфейс IObjectContext. MTS автоматически создавала транзакцию при вызове метода компонента и завершала её (commit или rollback) по окончании работы. Это избавляло разработчика от явного вызова BeginTransaction, Commit и Rollback.
Контекст и объектный пул
Каждый вызов компонента в MTS выполнялся в рамках контекста (IObjectContext), который предоставлял доступ к:
- управлению транзакцией (
SetComplete,SetAbort); - проверке безопасности (
IsCallerInRole); - созданию других компонентов (
CreateInstance).
MTS реализовала механизм пула объектов (object pooling): после завершения работы клиента компонент не уничтожался, а возвращался в пул, готовый к повторному использованию. Это снижало накладные расходы на создание и уничтожение объектов, особенно в высоконагруженных системах.
Управление потоками
MTS автоматически управляла потоками выполнения, используя пул потоков (thread pool). Компоненты выполнялись в контексте потока из пула, что позволяло эффективно использовать ресурсы сервера. Разработчику не нужно было создавать или синхронизировать потоки вручную.
Безопасность
MTS поддерживала ролевую модель безопасности. Администратор мог определить роли (например, «Администратор», «Пользователь», «Гость») и назначить их на методы компонентов или на весь пакет. При вызове метода MTS проверяла, принадлежит ли вызывающий пользователь к соответствующей роли, и отклоняла вызов при несоответствии.
Классификация компонентов MTS
По типу транзакционной поддержки
- Транзакционные компоненты — требуют автоматического управления транзакциями. Они могут быть:
- Обязательные (required) — компонент всегда выполняется в рамках транзакции; если транзакции нет, MTS создаёт новую.
- Требующие новой (requires new) — компонент всегда создаёт новую транзакцию, независимо от наличия существующей.
- Поддерживающие (supported) — компонент может выполняться как в транзакции, так и без неё; если транзакция есть, он использует её.
- Нетранзакционные компоненты — не участвуют в транзакциях, выполняются вне их контекста.
По типу жизненного цикла
- Статические (stateless) — не сохраняют состояние между вызовами. Рекомендовались для высоконагруженных систем, так как могли быть возвращены в пул.
- Состояние (stateful) — сохраняли состояние между вызовами клиента, но это снижало производительность и масштабируемость. MTS не рекомендовала их использование.
Применение
Корпоративные приложения
MTS активно использовалась в корпоративных информационных системах середины — конца 1990-х годов, особенно в банковской сфере, логистике, розничной торговле и государственных учреждениях. Типичный сценарий: веб-приложение на IIS, которое через ASP-страницы вызывало MTS-компоненты, а те, в свою очередь, обращались к базам данных Microsoft SQL Server или Oracle.
Веб-приложения
MTS была тесно интегрирована с IIS и Active Server Pages (ASP). Разработчики могли создавать COM-компоненты на Visual Basic или C++, регистрировать их в MTS, а затем вызывать из ASP-скриптов. Это позволяло вынести бизнес-логику из веб-страниц в надёжные серверные компоненты с поддержкой транзакций.
Интеграция с другими продуктами Microsoft
MTS входила в состав Windows NT 4.0 Option Pack вместе с IIS 3.0, MSMQ и MS DTC. Это позволяло строить комплексные решения, где MTS управляла транзакциями, MSMQ — асинхронным обменом сообщениями, а IIS — веб-доступом.
Критика и ограничения
Сложность настройки
MTS требовала тщательной настройки прав доступа, ролей и параметров транзакций. Ошибки в конфигурации часто приводили к непредсказуемому поведению, например, к зависаниям или блокировкам.
Зависимость от Windows
MTS была жёстко привязана к платформе Windows и COM. Это делало невозможным перенос приложений на другие операционные системы, что ограничивало выбор архитектуры.
Производительность
Хотя MTS оптимизировала управление ресурсами, накладные расходы на контекст и транзакции могли быть значительными для простых операций. Для высоконагруженных систем требовалась тщательная настройка пулов и потоков.
Устаревание
С появлением .NET (2002) и платформы Windows Communication Foundation (WCF, 2006) MTS и COM+ стали считаться устаревшими. Microsoft рекомендовала переходить на управляемый код и более современные технологии, такие как Enterprise Services (часть .NET Framework) или WCF.
Наследие
Несмотря на то, что MTS как отдельный продукт исчезла, её идеи — автоматическое управление транзакциями, пулы объектов, контекст выполнения, ролевая безопасность — стали стандартом для серверных платформ. Они были реализованы в COM+, а затем в .NET Enterprise Services и частично в WCF. Концепция «компонентного сервера приложений» MTS повлияла на развитие Java EE (Enterprise JavaBeans) и других платформ.
Источники
- Microsoft Corporation. Microsoft Transaction Server 2.0 White Paper. 1997.
- Box, Don. Essential COM. Addison-Wesley, 1998.
- Platt, David S. Introducing Microsoft Transaction Server. Microsoft Press, 1997.
- MSDN Library. COM+ (Component Services). Архивная документация Microsoft.
- Рихтер, Джеффри. Windows для профессионалов: создание эффективных Win32-приложений. Русская редакция, 2000.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →