Главная » Delphi » Транзакционные методы разработки с применением COM+ и MTS

1

Что такое COM+?

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

Поскольку спецификация  COM+  полностью совместима с COM,  работа с ней  в Delphi нисколько не сложнее работы с COM. При  этом  для разработки оптимизиро ванных  компонентов COM+ в Delphi  6 было реализовано несколько дополнений, речь о которых пойдет несколько позже.  В любом  случае,  все возможности COM+ доступ ны разработчикам Delphi  в полном  объеме.

Почему COM?

Почему  в корпорации Microsoft вместо  того,  чтобы  создать  нечто совершенно но вое,  решили избрать в качестве основы для COM+ именно технологию СOM? Это — хороший вопрос, особенно в свете некоторых негативных статей относительно COM, в которых были  выявлены недостатки данной технологии по сравнению с конкури рующими  технологиями CORBA и Enterprise Java Beans (EJB). Все дело в том,  что COM является не  только  хорошим базисом  для развития новых  технологий, но  и по  сле дующим причинам:

•  COM не зависит от языка программирования;

•  COM   поддерживается   всеми   основными  средствами  разработки   в   среде

Windows;

•  по  данным   Microsoft, около   150  миллионов  пользователей  32 битных   систем

Windows уже используют COM;

•  по данным  группы  Giga Information Group, технология COM занимает сегмент рынка  объемом в 670 миллионов долларов (не учитывая Microsoft).

Вероятно, самым  большим  недостатком COM  является сложность масштабирова ния,  когда много пользователей открывают большое количество транзакций. Как все гда в таких  случаях,  при  разработке COM+ в Microsoft решили не  затрачивать силы, создавая  что то новое, а доработать уже существующие средства.Все средства COM+ можно  разделить на три категории: средства администрирова ния,  службы и средства времени исполнения. Функции  администрирования, главным образом, выполняет специальное средство Component Services, которое будет рас смотрено несколько позже, а в начале  данной главы  речь  пойдет о службах и средст вах времени исполнения. Службы в COM+ имеют много новых особенностей и потому будут рассмотрены в первую очередь.

Службы

Службы  являются нововведением COM+.  Например, технологии, которые исполь зуются  в MTS и MSMQ, являются основой для соответствующих служб COM+. Можно сказать, что службы — это надстройки COM+, внедренные Microsoft для расширения воз можностей компонентной разработки. Как уже упоминалось выше,  службы обработки транзакций и очередей были основаны на уже существующих технологиях, поэтому тот, кто  знаком  с этими  базовыми технологиями, сможет  без  труда  освоить и разработку приложений с использованием COM+. Тем не менее  в COM+ существуют и новые  служ бы,  с которыми читателю раньше сталкиваться не приходилось (например, организа ция пула объектов и обработка динамически связанных событий).

Транзакции

При  работе с COM+ транзакции выполняют ключевую  роль,  так как в этой  техно логии  реализована транзакционная модель  сервера MTS (данный вопрос будет под робно рассмотрен в настоящей главе  несколько позже). Без  поддержки транзакций объекты из коллекций не смогли бы взаимодействовать со сложными коммерческими приложениями. Например, в обработке транзакции, которая открывается при  инте рактивной покупке  какого либо товара, принимают участие  несколько объектов, свя занных с одной  или несколькими базами  данных.  Эти объекты отвечают за прием  за проса, проверку наличия товара, определение остатка денег  на кредитной карточке, обновление данных  по счету и оформление заказа.  Причем все указанные действия должны  быть  согласованы. В противном случае  может  возникнуть  сбой  в процессе покупки,  в результате чего все объекты и данные должны  быть  возвращены в состоя ние,  которое они  имели  до начала  транзакции. Если при  этом,  кроме  всего  прочего, объекты находятся на множестве различных компьютеров, то процесс управления транзакциями значительно усложняется.

Централизованное управление транзакциями выполняет специальное средство, называемое координатором распределенных транзакций (DTC — Distributed Transaction Coordinator). При  открытии транзакции приложением COM+  активизируется  коор динатор DTC, который вовлекает в процесс обработки транзакции другие необходи мые программные средства, включая  администраторы транзакций, диспетчеры ре сурсов  и распределители ресурсов. На каждом  компьютере, принимающем участие  в обработке транзакций, используется собственный администратор транзакций. Одна ко администраторы транзакций не обрабатывают хранимую  информацию, такую как записи баз данных  или сообщения из очереди сообщений. Управление подобными данными, обрабатываемыми в транзакциях,  осуществляется диспетчером ресурсов. Распределители   ресурсов  отвечают  за   управление   динамической   информацией (например о подключении к базе данных). Таким образом, координатор DTC выпол няет общее управление ресурсами с использованием описанных выше специализиро

ванных  средств.

Система безопасности

В наше время, когда смена новых  программных технологий набрала устрашающие темпы, иногда с теплотой вспоминаешь те старые добрые времена, когда приложения состояли из  одного  файла  с расширением .com или  .exe, а общие  файлы данных размещались только  в локальной сети.  Теперь современные коммерческие приложе ния  зачастую  используют разнотипные пользовательские интерфейсы (для Windows, Web, Java и т.д.).  При  этом  обмен  данными осуществляется между распределенными по сети  программными компонентами, каждый  из которых, в свою  очередь, взаимо действует  с одним или несколькими серверами баз данных.  В наше время  успех разра ботки  приложения зависит не только  от способности связывать несопоставимые эле менты, но и от использования средств, обеспечивающих защищенный обмен  данны ми. Это  подразумевает построение в распределенных приложениях систем  безопас ности, которые должны  отвечать за распознавание компонентами друг друга, опреде ление  доступных  таким  компонентам служб и организацию безопасного обмена  дан ными между ними.

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

Технология COM+ содержит ряд надежных средств  обеспечения безопасности, благодаря которым организация защиты приложений из  сферы программирования переходит в сферу администрирования. Такой  подход  позволяет уделять больше  вре мени  разработке основных функций приложений, не отвлекаясь на детали  организа ции безопасности. Настройка системы безопасности при  работе с COM+ осуществля ется  при  помощи средства администрирования Component  Services.  Его  настройка выполняется только  один  раз,  после  чего  построение системы безопасности в при ложении может  вообще  не понадобиться. В то же время, если  этого  окажется недос таточно, то  можно  построить собственную  систему  безопасности с использованием специальных функций API. Далее речь  пойдет о структуре  системы безопасности приложений сервера COM+, а также  о способах использования возможностей такой системы в приложениях.

Ролевая система безопасности

Структура  системы безопасности COM+ основана на использовании ролей. Вместо управления учетными записями отдельных пользователей в приложениях COM+ ис пользуются  категории или  группы  пользователей, которые  называют ролями. Роли тесно   взаимосвязаны с  системой безопасности операционной  системы, посколькусистема безопасности сервера или домена  Windows  рассматривает роль  как набор привилегий и прав. Роль можно  легко создать  при помощи средства администрирова ния  Component Services.  Для этого  нужно  щелкнуть  правой кнопкой мыши  в прило жении COM+ на узле Roles древовидной структуры, расположенной в левой  части  ок на Component Services. После  создания новой  роли  к ней  можно  добавить пользова телей, щелкнув  на  ней  правой кнопкой мыши.  Процесс добавления пользователей роли представлен на рис. 18.1.

Рис.  18.1. Использование администратора служб  компонентов для настройки роли

Как можно  заметить на рис. 18.1, в данном  примере приложение COM+ имеет  три роли: Junior, Normal и Hero. Это — не более чем названия трех различных групп поль зователей, которым в приложении будут предоставлены разные возможности. Заслу живает внимания тот факт,  что собственно идентификация выполняется операцион ной системой автоматически, а система безопасности COM+ выступает в качестве надстройки соответствующих системных служб.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии

1 комментарий

  1. Стасик says:

    COM+ полный отстой!!! В реестре должны быть записи. Если от предыдущего инсталлятора (например Компас) остались записи (не удалились хвосты) то следующая версия программы не будет работать кусками (что-то работает, а что-то нет) и выловить эти ошибки НЕВОЗМОЖНО: ведь COM+ честно цепляет CLSID в реестре и честно пытается работать с отсутствующей/старой/несовместимой библиотекой. Ошибок нет, сообщений нет, просто не работает.
    Достаточно исправить ОДНУ цифру в реестре, чтобы Microsoft Office перестал запускаться вообще и начал самоустанавливаться до бесконечности!
    А MSI? Это ж не инсталлятор, а проклятье какое-то! Программы устанавливаются оооочень медленно и только 1 экземпляр, а по сути что происходит? Файлы копируются на диск и вносятся записи в реестр… и вот эти записи… это COM+, что каждая библиотека должна пройти процедуру регистрации бла-бла-бла.
    По языкам: брехня, что оно кроссплатформенное! Это COM+ будет работать только в Windows и точка. Забудьте Linux-Wine. Неважно на каком языке написано? Да вы сами вскройте хоть одну DLL и посмотрите, на чём оно написано! Это всегда C. Эти ваши кроссплатформенные языконезависимые программы ОБЯЗАТЕЛЬНО требуют msvcrt20.dll msvcrt40.dll msvcrt60.dll msvcrt100.dll msvcr…. VC redistributable 2005 2006 2008 2010 2012 2014 тысячи их и к каждой версии компилятора своя библиотека, которая не совместима с другими, но сама она работать не будет… да… ей надо ещё 100500 библиотек. Всё, что делает Microsoft, все их “технологии” = это просто отмывание денег внутри корпорации и индусский код (чем больше кода, тем больше денег получит программист). DRM, CardSpace, Microsoft.NET, EUDC, IEAK, IE, WMP, MS Office 2003 2007 2010 2012 с несовместимыми меж собой документами ага, Silverstyle, WSUS, и этот список можно продолжать. Верьте мне, я знаю, что внутри всего этого.