|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Глава 29 Технология MIDAS Введение MIDAS — это сокращение от Multitier Distributed Applications Services, что переводится, как набор сервисов для многозвенных распределенных приложений. Разработка многозвенных распределенных приложений средствами Delphi является наиболее высокоэффективным и быстрым средством для создания корпоративных систем. Технология MIDAS позволяет получать доступ к данным, физически расположенным на разных машинах, распределять нагрузку ресурсов по сети, автоматически получать ограничения на данные, что позволяет уменьшить сетевой "траффик", а также разделить бизнес-логику приложения на менее уязвимые части. Приложения MIDAS легко и быстро разрабатывать благодаря основным компонентам, реализующим технологию:
С помощью MIDAS можно создавать системы, которые могут обрабатывать запросы Internet-приложений. MIDAS работает одинаково хорошо с технологиями CORBA, СОМ, OLEnterprise и MTS и упрощает интеграцию существующих систем. За последнее время технология MIDAS претерпела сильные изменения, что говорит о ее стремительном развитии и большой популярности, в качестве инструмента для создания многозвенных распределенных приложений. В рамках Delphi 5 в технологию MIDAS введены новые компоненты, свойства, и события. Основные изменения затронули интерфейс IProvider, и соответственно объект TProvider, пулинг удаленного модуля данных, работу с сокетами и соответственно компонент TSocke [.Connection. Добавились такие новые возможности, как создание Web MIDAS клиента, возможность организовать связь с сервером приложений через протокол HTTP, реализация доступа к ограничениям базы данных. Изменения коснулись и установки приложений MIDAS. Теперь нет необходимости в библиотеке STDVCLNN.DLL, а вместо DBCLIENT.DLL используется MIDAS.DLL. Теперь рассмотрим подробнее все эти новшества и изменения, а также затронем основные механизмы работы и создания многозвенных приложений, как серверов приложений, так и клиентов. Сначала рассмотрим базовые компоненты технологии MIDAS. Создание многозвенного приложения Многозвенное приложение представляет собой распределенные системы удаленного доступа к данным, которые состоят как минимум из трех логических уровней. Эти логические уровни могут находиться как на одной, так и на нескольких машинах. Применение многозвенных приложений позволяет обеспечить несколько преимуществ.
В самой простой форме, так называемой "three-tiered model", используются следующие уровни.
Средствами Delphi можно создать первый и второй уровень, а для третьего воспользоваться уже существующими RDBMS. Взаимодействие этих уровней осуществляется следующим образом. Пользователь запускает клиентское приложение. Клиент соединяется с сервером приложений (который может определяться как во время исполнения, так и во время создания приложения). Запускается сервер приложений. Клиент получает интерфейс IAppServer от сервера приложений. Затем клиент запрашивает данные от сервера приложений. В свою очередь сервер приложений запрашивает данные (устанавливая, если необходимо, соединение) в базе данных, упаковывает их для клиента, и возвращает пакет данных клиенту. Клиент расшифровывает пакеты данных и предоставляет их пользователю. Пользователь взаимодействует с клиентским приложением, и данные изменяются. Клиент упаковывает измененные данные в пакеты и отсылает их на сервер приложений. Сервер приложений расшифровывает пакеты и сохраняет изменения в контексте транзакции. Если запись не может быть сохранена на сервере, сервер пытается согласовать изменения с текущими данными и отделяет данные, которые не могут быть сохранены. Когда процесс обработки измененных данных закончен, сервер возвращает все несохраненные данные клиенту для дальнейшего уточнения. Клиент уточняет необработанные данные, после чего посылает их снова серверу приложений. Затем клиент обновляет свои данные с сервером. Рассмотрим весь механизм создания трехзвенного приложения средствами Delphi. Сначала необходимо создать сервер приложений. Его создание похоже на создание простого обыкновенного сервера в приложении клиент-сервер. Отличие заключается в том, что надо добавить провайдер данных. Для создания сервера приложений, начните новый проект, сохраните его и сделайте следующее:
После создания сервера приложений, его необходимо зарегистрировать. Если сервер приложений использует как коммуникационный протокол DCOM, HTTP, sockets или OLEnterprise, то он действует как сервер автоматизации и должен быть зарегистрирован подобно любому другому ActiveX- или СОМ-серверу. Если вы используете MTS, сервер приложений должен быть реализован в виде динамической библиотеки. Поскольку все вызовы СОМ должны проходить через MTS-прокси, нельзя просто зарегистрировать сервер приложений. Вместо этого следует инсталлировать библиотеку в среде MTS. Когда сервер приложений использует CORBA, регистрация не всегда необходима. Если вы хотите позволить клиенту использовать динамическое связывание с вашим интерфейсом, вы должны инсталлировать интерфейс сервера в репозиторий интерфейсов. В дополнение к сказанному, если вы хотите позволить клиенту запускать сервер, если тот еще не запущен, он должен быть зарегистрирован с OAD (Object Activation Daemon). Теперь создадим приложение-клиента. В большинстве случаев создание клиента в многозвенном приложении подобно созданию клиента для простого клиент-сервер приложения. Основная разница заключается в том, что многозвенное приложение использует компоненты связи для организации связи с сервером приложений или один или несколько компонентов TclientDataSet для подсоединения к провайдеру данных на сервере. Для создания многозвенного клиентского приложения в среде Delphi необходимо сделать следующее.
Порядок действий очень важен. Вы должны создать и запустить сервер приложений перед созданием клиента. На этапе разработки вы можете подсоединиться к серверу и протестировать клиента. Вы можете, конечно, создавать клиента и без привязки к серверу во время разработки и использовать его только в готовом варианте. Однако в этом случае вы заранее не видите, работает ли клиент так, как вы того хотите, и не можете выбирать сервер и провайдер из списка в Инспекторе объектов. Если вы создаете клиента в той же системе, что и сервер, и не используете Web-соединение или сокет-соединение, вы можете захотеть зарегистрировать или инсталлировать сервер приложений на клиенте. Это позволяет компонентам связи использовать сервер приложений во время разработки таким образом, что можете выбирать имя сервера и провайдера из списка в Инспекторе объектов. Если же вы используете Web-соединение или сокеты, то компоненты связи получают имена зарегистрированных серверов с серверной машины. Рассмотрим дальше, как можно усовершенствовать основную многозвенную архитектуру для поддержки специальных функций в приложении: В качестве дополнительных возможностей интерфейса сервера приложений можно добавить:
Если вы хотите создать клиентов на основе Web для вашего многозвенного приложения, вы должны клиентское звено заменить на специальное Web- приложение, которое действует одновременно и как клиент для сервера приложений, и как приложение Web-сервера, которое инсталлировано на одной и той же машине с Web-сервером. Существует два варианта построения Web-приложения MIDAS.
Эти два варианта сильно отличаются. Каждый из них ориентирован на свою технологию (ActiveX против JavaScript и XML). Для выбора варианта необходимо ориентироваться на пользователя. Первый вариант требует, чтобы броузер поддерживал ActiveX (это ограничивает выбор клиентом операционной системы, офаничивая его разновидностями Windows). Второй вариант требует поддержки языков JavaScript и DHTML. Сервер приложений Сервер приложений относится к программному обеспечению промежуточного слоя (middleware). Он предназначен для обеспечения соединения с клиентами, управления доступом клиентов к данным, выполнения бизнес-логики приложения. При обращении к серверу баз данных сервер приложений чаще всего использует BDE. При работе с клиентами функциональные возможности сервера приложений зависят от типа соединения в рамках технологии MIDAS. Сервер приложений включает в себя удаленный модуль данных, который обеспечивает работу интерфейса IAppserver, которого в свою очередь использует клиент для общения с провайдерами данных. Существует три типа удаленных модулей данных:
Со всеми этими типами модулей данных можно использовать невизуальные компоненты. Удаленный модуль данных включает в себя провайдер данных для каждого набора данных на сервере приложений, делая их доступными для клиента. Провайдер данных:
Обычно провайдер для работы с данными использует средства BDE или ADO. Интерфейс IAppServer Замена в Delphi 5 интерфейса iprovider на lAppServer является основным и серьезным изменением в технологии MIDAS по сравнению с предыдущей версией. При этом эти интерфейсы остались похожи по своим функциям.
Листинг 29.1 Описание интерфейса IAppServer type IAppServer = interface(IDispatch) ['( 1AEFCC20-7A24-11D2-98BO-C69BEB4B5B6D )'] function AS_Apply(Jpdates(const ProviderName: WideString; Delta: OleVariant; MaxErrors: Integer; out ErrorCount: Integer; var OwnerData: OleVariant): OleVariant; safecall; function AS GetRecords(const ProviderName: WideString; Count: Integer; out RecsOut: Integer; Options: Integer; const CommandText: WideString; var Params: OleVariant; var OwnerData: OleVariant): OleVariant; safecall; function AS_DataRequest(const ProviderName: WideString; function AS GetProviderNames: OleVariant; safecall; Data: OleVariant): OleVariant; safecall; function AS_GetParams(const ProviderName: WideString; var OwnerData: OleVariant): OleVariant; safecall; function AS RowRequest(const ProviderName: WideString; Row: OleVariant; RequestType: Integer; var OwnerData: OleVariant): OleVariant; safecall; procedure AS Execute(const ProviderName: WideString; const CommandText: WideString; var Params: OleVariant; var OwnerData: OleVariant); safecall; end; Iappserver — это интерфейс, который набор данных клиента использует для общения с провайдером на сервере приложений. Этот интерфейс обеспечивает основу коммуникаций для многозвенных приложений. Наборы данных клиента получают экземпляр IAppServer от компонента связи в клиентском приложении. Используя IAppServer, набор данных клиента общается с провайдером на удаленном сервере приложений. По умолчанию интерфейс является "stateless", это означает, что вызовы функции независимы и не привязаны к предыдущему вызову. Поэтому интерфейс IAppServer не имеет свойств, которые бы хранили информацию о состоянии между вызовами. Однако есть случаи, в которых набор данных клиента полагается на сохраненную информацию о состоянии, такую как текущая позиция курсора базы данных, когда выполняется постепенно возрастающая выборка, использующая метод as_getrecords. Эта информация о состоянии сохраняется только, если несколько клиентов не использует совместно сервер приложений, который реализует IAppServer. Основным отличием нового интерфейса от iprovider является то, что IAppServer сводит к меньшему число вызовов туда и обратно для завершения сеанса связи, и он не содержит информации о состоянии. Но это не значит, что уже нельзя использовать "stateful" код в своих приложениях. На практике это означает, что вместо щелчка правой кнопкой мыши по компоненту TDataSetProvider и выбора свойства Export provider из модуля данных, устанавливается значение свойства TDataSetProvider. Exported: = True для любого Datasetprovider, который надо экспортировать. Это также означает, что надо связать TDataSet с TDataSetProvider и экспортировать TDataSetProvider в MIDAS. Это основное отличие от прошлых версий не очень трудоемкое, чтобы отказываться от предоставленной возможности увеличить гибкость компонента TDataSetProvider. Для таких компонентов используется интерфейс lAppServer для сканирования списка провайдеров. Для клиента нет никаких изменений, порядок действия остается Прежним: устанавливается значение cвойств ClientDataset.RemoteServer и ClientDataset.ProviderName. Однако минус этих изменений заключается в том, что теперь необходимо переориентировать старые клиентские приложения на использование IAppServer. Свойства и методы интерфейса lAppServer представлены в табл. 29.1. Таблица 29.1. Свойства и методы интерфейса lAppserver
Вместе с заменой интерфейса i provider, удален и компонент TProvider. Его теперь нет в палитре компонентов, и в библиотеке VCL он оставлен только для совместимости. Причина этого удаления — введение нового интерфейса IProviderSupport. Любой потомок класса TDataSet, который хочет участвовать в работе многозвенного приложения как провайдер MIDAS, должен реализовать соответствующие методы IProviderSupport. Когда провайдер должен получить информацию или принять изменения, используется выполнение методов интерфейса IProviderSupport ДЛЯ TDataSet. Свойства и методы интерфейса IProviderSupport представлены в табл. 29.2. Таблица 29.2. Свойства и методы интерфейса JproviderSupport
Удаленный модуль данных При создании удаленного модуля данных необходимо указать, как он должен отвечать на клиентские запросы. Эта информация изменяется в зависимости от типа удаленного модуля данных. Чтобы добавить компонент TRemoteDataModule к приложению, надо выбрать пункт New меню File и затем значок Remote Data Module со страницы Multitier (рис. 29.1).
Рис. 29.1. Создание удаленного модуля данных начинается с выбора компонента Remote Data Module Затем надо указать имя класса удаленного модуля данных. Оно также будет и именем интерфейса данного класса. При создании библиотеки DLL надо определить потоковую модель в мастере создания Remote Data Module. Можно выбрать Single-threaded, Apartment-threaded, Free-threaded или Both. При создании отдельного ЕХЕ-файла надо определить свойство instancing. Можно выбрать single instance или Multiple instance. Непосредственным предком удаленного модуля данных является обычный модуль данных. Унаследованные от него механизмы обеспечивают взаимодействие компонентов доступа к данным с сервером баз данных через BDE. Собственные механизмы удаленного модуля данных обеспечивают взаимодействие с клиентами. Удаленный модуль данных поддерживает дуальный интерфейс сервера автоматизации, который реализует интерфейс IAppserver. Свойства и методы TRemoteDataModule представлены в табл. 29.3. Таблица 29.3. Свойства И методы класса TRemoteDataModule
Каждый удаленный модуль данных на сервере приложений содержит один или несколько провайдеров. Каждый набор данных клиента использует определенного провайдера, который действует как мост между набором данных клиента и данными, которые представляет удаленный модуль данных. Провайдер (TDataSetProvider) заботится об упаковке данных в пакеты, которые он посылает клиенту, и о приеме изменений, полученных от клиента. Основная логика данных сервера приложений обрабатывается провайдером удаленного модуля данных. Обработчики событий, которые отвечают за клиентские запросы, применяют бизнес-логику данных, в то время как свойства провайдера управляют тем, какая информация включена в пакеты данных. В данной версии технологии MIDAS реализован пулинг экземпляров удаленного модуля данных. Для этого надо вызвать Registerpooied из метода updateRegistry наследника TRemoteDataModule. После этого сервер приложений организует кэш для экземпляров удаленного модуля данных. Каждый клиентский запрос обслуживается первым доступным экземпляром из этого кэша. Поскольку экземпляры разделены, удаленный модуль данных не может использовать информацию о состоянии. Компонент TDataSetProvider Использование компонента TDataSetprovider обеспечивает клиента данными из БД и организует обратную передачу измененных данных. TDataSetprovider обычно используется на сервере приложений. Он служит брокером данных между удаленным сервером базы данных и набором данных клиента на клиенте. TDataSetprovider упаковывает данные из множества данных и переправляет их в один или несколько пакетов для клиента. Клиент получает пакеты данных и реконструирует их в локальные данные. Когда пользователь прекратит работу с данными, клиент переупакует измененные данные и отправит их обратно на сервер. Свойства и методы TDataSetprovider представлены в табл. 29.4 Таблица 29.4. Свойства и методы класса TDataSetprovider
Клиентская часть Для конечного пользователя клиентская часть многозвенного приложения выглядит и работает точно так же, как и в традиционном двухзвенном приложении, которое использует кэшированные изменения. По структуре клиентская часть представляет собой приложение, которое работает без BDE и позволяет использовать набор данных клиента в режиме работы с файлами. Для работы такому клиенту необходима только библиотека MIDAS.DLL. Используя только эту библиотеку, такие приложения легче распространять; не надо инсталлировать, конфигурировать и поддерживать программное обеспечение для управления соединениями с базой данных. Поскольку эти приложения не используют базу данных напрямую, они не поддерживают многопользовательский вариант работы. Вместо этого наборы данных полагаются на самостоятельную реализацию приложением работы с несколькими пользователями. Данные могут быть сохранены в файл на диске и в дальнейшем загружены, но не существует встроенной защиты для предотвращения перезаписи несколькими пользователями файлов данных друг друга. Для представления набора данных клиент использует компонент TClientDataSet. Этот компонент содержит все свои данные в памяти, поэтому клиент не может работать с очень большими наборами данных (размер данных зависит от размера памяти у машины клиента). Наборы данных клиента обеспечивают все виды работы с данными: доступ к данным, редактирование, перемещение по записям, поддержку фильтрации, которые предусмотрены компонентом TDataSet. Дополнительно к этому набор данных клиента имеет свои механизмы для записи и чтения данных, такие как:
Интерфейс lAppServer предоставляет собой мост между клиентской частью и провайдерами серверной части. Большинство клиентов не используют lAppServer напрямую, а вызывают методы и свойства через наборы данных клиента. Однако когда в этом есть необходимость, его можно и прямо вызвать, используя свойство AppServer. Клиент получает этот интерфейс от компонента связи. Компонент TCIientDataSet Прямым предком этого компонента является класс TDataSet, который обеспечивает потомка всеми возможностями по работе с набором данных. Работа с набором данных подобна аналогичной работе стандартных компонентов доступа к данным. Существенные отличия имеются в методах редактирования и записи данных, так как компонент поддерживает связь с сервером баз данных при посредстве сервера приложений и интерфейса IAppServer. Технология MIDAS получила и в этом месте свое дальнейшее развитие. По отношению к компоненту TCIientDataSet, изменения связаны с заменой IProvider на IAppServer и некоторых других свойств. Свойство provider, options получило дополнительно много других новых опций и значений. Наиболее интересные из них — poDisbaieinserts, poDisableEdits И poDisableDeletes. Устанавливая это свойства соответственно, можно защитить TСlientDataset, который связан с этим провайдером от вставки, редактирования или удаления записей. Это предоставляет новую возможность по работе с бизнес-логикой и безопасностью работы сервера. Возможность посылать динамический SQL-запрос серверу упростилась. Для этого появилось новое cвойство ClientData5et.CommandText, с помощью которого можно посылать команду на SQL от клиента серверу. Для выполнения команды на сервере необходимо установить значение свойства Provider. Options. poAllowCommandText равным True И далее Вызвать Либо метод Open, либо метод Execute. С добавлением свойства Provider. Options.poPropogateChanges, любое изменение данных на сервере приложений будет автоматически возвращено клиенту и обновлено с текущими данными в TClientDataset. Наиболее важные свойства и методы TClientDataSet представлены в табл. 29.5. Таблица 29.5. Свойства и методы класса TClientDataSet
Соединение с сервером приложений Основная цель компонентов связи — TDCOMConnection, TSocketConnection, TWebConnection, TOLEnterprj seConnection, TCorbaConnection — состоит В том, чтобы найти и соединиться с сервером приложений. Поскольку они управляют соединениями сервера, можно также использовать компоненты связи для вызова методов интерфейса сервера приложений. Различные компоненты используют свои протоколы коммуникации. Соответствие между компонентами и протоколами отображено в табл. 29.6 Таблица 29.6. Протоколы, используемые компонентами связи
Перед поиском и соединением с сервером приложений необходимо установить свойства компонента связи, которые однозначно определяют сервер приложений. Соединение открывается автоматически, когда набор данных клиента обращается к серверу приложений. Компонент связи разрывает соединение с сервером приложений, когда:
Можно использовать вместо одного компонента связи для переключения между серверами приложений несколько компонентов связи. Приложениям нет необходимости вызывать интерфейс IAppServer непосредственно, потому что соответствующие запросы делаются автоматически при использовании свойств и методов набора данных клиента. В то же время, при добавлении к интерфейсу своих собственных методов возникает ситуация с прямым вызовом интерфейса. Для этого можно использовать свойство AppServer компонента связи. Например: MyConnection.AppServer.MyMethod(x,у) ; Этот способ обеспечивает позднее связывание вызовов интерфейса — связывание, которое происходит только во время исполнения, то есть в момент вызова данного метода. Позднее связывание является очень гибким, но при его использовании теряется много преимуществ, таких как проверка типов и просмотр непосредственно реализации метода. Кроме того, позднее связывание работает более медленно, чем раннее связывание. Это связано с тем, что компилятор генерирует дополнительно вызовы интерфейса на сервер прежде, чем методы вызываются. Для использования раннего связывания с DCOM, библиотека типов сервера должна быть зарегистрирована на клиентской машине. Для этого надо использовать утилиту TRegsvr.exe, которая распространяется вместе с Delphi. Для использования раннего связывания с CORBA надо добавить в секцию uses программный модуль, у которого в имени есть расширение _тьв (этот файл генерируется при создании библиотеки типов). При работе с протоколами TCP/IP или OLEnterprise нельзя использовать раннее связывание, но поскольку удаленный модуль данных использует дуальный интерфейс, можно использовать dispinterface для улучшения производительности (надо также добавить в Uses программный модуль, у которого в имени есть расширение _TLB). Например: Var Templnterface: IMyAppServerDisp; begin Templnterface := MyConnection.AppServer; Templnterface.SpecialMethod(x,y); end; Класс TDispatchConnection Класс TDispatchConnection является родительским классом для объектов, которые соединяют клиентов с сервером приложений. Он, конечно, не используется напрямую. От него создаются потомки, в которых уже вносится специфика конкретного соединения (рис. 29.2).
Рис. 29.2. Основные компоненты страницы MIDAS В результате получаем набор компонент связи TDCOMConnection, TSocketConriection, TWebConnection, TCorbaConnection. TDispatchConnection представляет механизм для вхождения на сервер приложений (проверку имени и пароля пользователя), получения интерфейса IAppserver, вызова интерфейса с сервера, управления удаленным соединением (рис. 29.3).
Рис. 29.3. Основные общие свойства для потомков TDispatchConnection Основные свойства, которые используются в потомках для обеспечения соединения, отображены в табл. 29.7:
Компонент TDCOMConnection Протокол DCOM обеспечивает наиболее "прямой" подход к организации связи, не требуя никаких дополнительных приложений во время выполнения на сервере. Однако DCOM не включен в поставку Windows 95, поэтому для этой операционной системы необходимо предварительно его установить. Компонент используют в клиентской части, и он обеспечивает инициализацию и разрушение соединения, а также обеспечивает работу с интерфейсом IAppServer. С помощью этого компонента устанавливается взаимодействие через протокол DCOM. Свойства и методы TDCOMConnection представлены в табл. 29.8. Таблица 29.8. Свойства и методы компонента TDCOMConnection
Компонент TSocketConnection Компонент TSocketConnection использует стандартные сокеты Windows для управления соединением с сервером приложений и протокол TCP/IP. Этот компонент может инициировать и прекращать соединение с удаленным сервером приложений, получать интерфейс IAppServer от сервера, а также использовать отдельный СОМ-объект для шифрования содержания сообщений, поддерживать список провайдеров сервера приложений. В данной реализации MIDAS появилось некоторое изменение в плане безопасности. В прошлом TSocketConnection разрешал выполнять любой объект автоматизации на сервере. Теперь это можно предотвратить, переписав метод UpdateRegistry удаленного модуля данных. В этом методе можно вызвать утилиты, которые отметят сервер приложений как зарегистрированный (более подробное описание утилит см. ниже). Например: class procedure TMyRDM.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string) ; begin if Register then begin inherited UpdateRegistry(Register, ClassID, ProgID); EnableSocketTransport(ClassID) ; EnableWebTransport(ClassID) ; end else begin DisabieSocketTransport(ClassID); DisableWebTransport(ClassID); inherited UpdateRegistry(Register, ClassID, ProgID); end; end; Еще один параметр для отключения проверки регистрации находится в утилите Scktsrvr.exe. Свойства и методы TSocketConnection представлены в табл. 29.9. Таблица 29.9. Свойства и методы компонента TSocketConnection
Компонент TWebConnection Компонент TWebConnection использует протокол HTTP для управления соединением с сервером приложений и находится в клиентской части многозвенного приложения. TWebConnection позволяет создавать клиентов, которые могут связываться с сервером приложений через "firewall", используя наиболее распространенный порт для связи. Вместо прямого обращения клиентом к удаленному модулю данных, соединения на основе HTTP используют библиотеку httpsrvr.dll, которая принимает запросы клиента и сама работает с удаленным модулем данных. Web-соединение может воспользоваться преимуществом системы безопасности SSL, обеспечиваемую через библиотеку wininet.dll (эта библиотека используется на клиенте). Благодаря этому можно проверять имя и пароль пользователя через свойства компонента при обращении на сервер приложений. В качестве дополнительной меры защиты, сервер приложений должен регистрировать возможность клиента использовать Web-соединение через вызов EnabiewebTransport в методе UpdateRegislry удаленного модуля данных. Для Web-соединения можно также организовать пулинг экземпляров. В отличие от других компонентов связи, при использовании Web-соединения нельзя использовать обратные вызовы (callbacks). Другая выгода использования протокола HTTP заключается в том, что операционная система, подобная Windows NT, позволяет кластеризовать серверы. Это обеспечивает истинную балансировку нагрузки и отказоустойчивость для сервера приложений. Этот компонент может устанавливать и прекращать соединение с сервером приложений, получать интерфейс IAppServer от сервера, использовать отдельный СОМ-объект для шифрования содержания сообщений, поддерживать список провайдеров сервера приложений. Для использования этого компонента необходимо иметь:
Свойства и методы TWebConnection представлены в табл. 29.10. Таблица 29.10. Свойства и методы компонента TWebConnection
Компонент TCorbaConnection Протокол CORBA позволяет создавать приложения MIDAS с использованием различных платформ. Используя CORBA, приложение автоматически получает много преимуществ, среди которых — прозрачность расположения, распределение нагрузки и обработка ошибок программным обеспечением ORB. TCorbaConnection используется в клиентской части для установления с помощью CORBA-соединения между клиентом и удаленным сервером приложений. Свойства и методы TCorbaConnection представлены в табл. 29.11. Таблица 29.11. Свойства и методы компонента TCorbaConnection
Компонент TSimpleObjectBroker Компонент TSimpleObjectBroker содержит список возможных серверов приложений для компонентов связи. Когда компоненты связи запрашивают сервер, простой брокер объектов передает имя одного из возможных серверов в список. Этот процесс позволяет клиентам определить сервер динамически, во время работы приложения. TSimpleObjectBroker может случайным образом выбирать сервер среди списка возможных серверов, обеспечивая тем самым некий баланс нагрузки. Свойства и методы TSimpleObjectBroker представлены в табл. 29.12. Таблица 29.12. Свойства и методы компонента TSimpleObjectBroker
Функции MIDAS В заключение в этом разделе рассмотрим функции интерфейса MIDAS, играющие вспомогательную роль. Они содержатся в модуле databkr. pas. Таблица 29.13. Функции интерфейса MIDAS
Резюме Технология MIDAS обеспечивает разработку распределенных многозвенных приложении. При этом используется единый подход для приложений, созданных на основе разных технологий: DCOM, OLEnterprise, MTS, CORBA, сокеты TCP/IP. Все это позволяет создавать огромные корпоративные системы с использованием различных платформ и способов соединения клиентов. Технология MIDAS является одной из наиболее быстро развивающихся технологий, которая имеет широкое применение и по праву занимает одно из первых мест среди ПО промежуточного уровня. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||