Визуальное программирование и MFC

       

Разработка трехуровневых приложений с помощью компонентов серверов


Традиционно термин клиент/сервер соотносится с приложением, выполняемым на PC, которое связывается с базой данных, выполняемой на сервере. Это хорошее решение для мелкого и среднего предприятия с количеством пользователей от 5 до 50. Однако, когда количество пользователей достигает 500 и более, поддержка такой системы становится проблематичной (процесс увеличения числа пользователей от одного до сотен тысяч обычно называется масштабируемостью (scalability)). При каждом изменении в программном обеспечении необходимо переустановить новое приложение на каждом клиентном компьютере. Этот процесс требует много времени и средств, учитывая необходимость совместимости всех компонентов.

Что касается приложений Internet и intranet, то они должны основываться на работе с броузерами. Впрочем, если попытаться обслужить тысячи пользователей с помощью простых сценариев CGI, то все закончится обеспечением одновременного доступа к файлам или базе данных.

Сегодня компания Microsoft продвигает технологии OLE и ActiveX (термины, по сути, являющиеся синонимами), которые предусматривают так называемую удаленную автоматизацию. Фактически, удаленная автоматизация (remote automation) позволяет приложению, выполняемому на компьютере РС1, соединиться и создать объект автоматизации на компьютере РС2. Наиболее существенным здесь является не то, что можно заниматься распределенной разработкой без углубленного знания протоколов TCP/IP или NetBEUI, а переход к трехуровневой разработке приложений на основе продуктов Microsoft.

Серьезной проблемой удаленной автоматизации является то, что этот процесс не обладает какой-либо степенью безопасностью, не имеет сервера для управлениями транзакциями или соединениями с базой данных и никогда не предполагался для использования в Internet или intranet.

Позднее Microsoft выпустила спецификацию распределенной модели СОМ (Distributed СОМ — DCOM), улучшающую распределенный аспект объектов модели СОМ, включая поддержку приложений Internet и intranet, но не затрагивающую вопросы безопасности.


Недавно компания Microsoft объявила о выпуске сервера транзакций Microsoft Transactions Server (MTS). Он не только решает все проблемы безопасности, названные ранее, но и поддерживает обработку транзакций. Фактически теперь серверы автоматизации OLE можно создавать в виде небольших, простых компонентов, не нуждающихся в информации о внешнем мире.



Давайте рассмотрим пример применения сервера MTS. Располагая номером банковского счета, можно создать два сервера автоматизации: один для внесения денежного вклада со счета и другой для зачисления денег на счет. Теперь необходимо сообщить об этих компонентах серверу MTS (запомните слово компоненты). Для этого они устанавливаются не на клиентный компьютер, а на сервер, выполняющий MTS.

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

Такая идеология выглядит странной. Требуется время на то, чтобы понять ее преимущества. MTS выполняет серию транзакции, базирующихся на компонентах. Обычно для этого используется язык SQL, который теперь становится ненужным. Сервер MTS в состоянии обработать транзакцию самостоятельно с помощью механизма MSDTC.

Основная идея этого раздела заключена в том, чтобы отойди от двухуровневой концепции клиент/сервер и взять на вооружение трехуровневую модель, в которой приложение-клиент является чрезвычайно простым (приложение с облегченной клиентной частью), поскольку выполняет только основные функции вызова сервера автоматизации и отображения результатов (для этого может использоваться как тонкий клиент, так и броузер Web). Второй уровень — сервер приложений, выполняющий основную работу. На нем могут быть установлены сотни и даже тысячи небольших компонентов.И третий уровень представляет собой собственно базу данных.


Содержание раздела