Многозвенная архитектура приложений баз данных
Разработка сервера в многозвенном приложении. Технические требования, предъявляемые к аппаратной части клиентской рабочей станции. Проработка вопросов совместимости, расширяемости и управления транзакциями. Обеспечение безопасности передачи данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 03.12.2014 |
Размер файла | 104,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://allbest.ru
Оглавление
ВВЕДЕНИЕ
ЗАЧЕМ НУЖНЫ МНОГОЗВЕННЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ
РАСПРЕДЕЛЕННЫЕ МНОГОЗВЕННЫЕ ПРИЛОЖЕНИЯ
СТРУКТУРА МНОГОЗВЕННОГО ПРИЛОЖЕНИЯ В DELPHI
ТРЕХЗВЕННОЕ ПРИЛОЖЕНИЕ В DELPHI
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ВВЕДЕНИЕ
Многозвенная архитектура приложений баз данных вызвана к жизни необходимостью обрабатывать на стороне сервера запросы от большого числа удаленных клиентов. Разработка с применением концепции многозвенности увеличивает расширяемость, эффективность и надежность распределенных объектных приложений.
Можно размножить серверные компоненты и распределить их между любым числом серверов, тем самым, повышая доступность системы. Возможна быстрая модификация этих компонент, когда это диктуется коммерческими правилами и экономическими условиями. А независимость этих компонент от местонахождения позволяет системным администраторам легко переконфигурировать загрузку системы.
Однако, разработка сервера в многозвенном приложении намного сложнее, чем разработка в традиционной системе клиент/сервер. Программисты обычно вынуждены задумываться над вопросами совместимости, блокировки, управления транзакциями, безопасности и расширяемости. Они должны также организовывать доступ к системным ресурсам, таким как потоки, память, соединения с базами данных и сетевые соединения. Сложность этих проблем в прошлом ограничивала разработку многозвенных приложений.
Зачем нужны многозвенные информационные системы
Информационные системы, созданные на основе классической архитектуры клиент/сервер, называемые двухзвенными системами или системами с «толстым» клиентом, состоят из сервера баз данных, содержащего сгенерированные тем или иным способом таблицы, индексы, триггеры и другие объекты, реализующие бизнес-правила данной информационной системы, и одного или нескольких клиентских приложений, предоставляющих интерфейс пользователя и производящих проверку допустимости и обработку данных согласно содержащимся в них алгоритмам.
Если говорить о клиентских приложениях, созданных с помощью Delphi, для доступа к источникам данных они используют вызовы функций прикладных программных интерфейсов клиентских частей соответствующих серверных СУБД. Эти вызовы осуществляются обычно посредством использования библиотеки Borland Database Engine (BDE), хотя в целом это не является обязательным (например, некоторые пользователи Oracle непосредственно вызывают функции Oracle Call Interface из Delphi-приложений).
Соответственно подобное клиентское приложение требует наличия на компьютере конечного пользователя клиентской части используемой серверной СУБД (и наличия лицензии на ее использование) и присутствия в оперативной памяти набора динамически загружаемых библиотек как из клиентской части, так и из BDE (либо иной заменяющей ее библиотеки), таких, как драйверы баз данных, библиотеки, содержащие функции API клиентских частей, и др. Это усложняет технические требования, предъявляемые к аппаратной части клиентской рабочей станции, и в конечном итоге приводит к удорожанию всей системы в целом.
Другим фактором, приводящим к удорожанию эксплуатации информационной системы, является необходимость инсталляции и конфигурации BDE и клиентской части серверной СУБД, что нередко является весьма трудоемким процессом, особенно при большом количестве и неоднородном парке рабочих станций.
Выходом из этой ситуации является создание систем с так называемым «тонким» клиентом, в частности, с клиентом, не содержащим в своем составе BDE и клиентскую часть серверной СУБД.
В этом случае функциональность, связанная с доступом к данным (а нередко и какая-либо иная функциональность), возлагается на другое приложение, называемое обычно сервером приложений, и являющееся клиентом серверной СУБД.
В свою очередь, клиентские приложения обращаются не непосредственно к серверной СУБД посредством вызова функций клиентских API, а к серверу приложений, являющемуся для них источником данных, при этом собственно клиентская часть серверной СУБД и библиотеки типа BDE на рабочей станции, где используется такое клиентское приложение, присутствовать не обязаны. Вместо них используется одна-единственная динамически загружаемая библиотека dbclient.dll размером 154 Кб.
Таким образом, созданная информационная система становится трехзвенной, а сервер приложений является средним звеном в цепи «тонкий клиент сервер приложений - сервер баз данных» и, соответственно, относится к классу продуктов middleware.
Как может быть практически реализована данная технология? С одной стороны, с помощью набора компонентов и классов Delphi 3, обеспечивающих создание серверов приложений и клиентских частей, а, с другой стороны, с помощью MIDAS, позволяющего осуществлять запуск удаленных серверов приложений, осуществлять межреестровый обмен сведениями об OLE-серверах и оптимизировать нагрузку в случае использования нескольких серверов приложений. В данной статье будет рассмотрен простейший практический пример реализации подобной трехзвенной системы.
Распределенные многозвенные приложения
Спецификация DCOM и созданные на ее основе технологии позволили перейти к новому этапу построения систем - распределенным многозвенным приложениям. Предшественником их явилась платформа клиент/сервер. Она сводится к тому, что на верхнем уровне имеется удаленный сервер данных, который хранит базу данных и осуществляет управление ею. А на нижнем уровне имеются клиентские приложения, работающие с этими данными. Это так называемые «толстые клиенты», которые реализуют бизнес-логику - правила манипулирования с данными, проверки их непротиворечивости и достоверности. Впрочем, в системах клиент/сервер имеется возможность частично перенести бизнес-логику на сервер с помощью хранимых на сервере процедур. Клиенты могут вызывать эти процедуры со своих компьютеров и просматривать полученные ответы.
Технология клиент/сервер удовлетворительно обслуживает системы уровня отдельных подразделений некоторого предприятия. Но при создании более крупных систем уровня предприятия организация клиент/сервер сталкивается с рядом сложностей. Размещение бизнес-логики в основном на компьютерах клиентов мешает созданию единой системы с едиными правилами обработки и представления данных. Много сил уходит на согласование работы различных клиентских приложений, на построение мостов между ними, на устранение дублирования одних и тех же функций различными приложениями.
Выходом из такого положения явилась концепция многозвенных распределенных приложений. Чаще всего используется трехзвенная архитектура. На верхнем уровне расположен удаленный сервер баз данных. Он обеспечивает хранение и управление данными. На среднем уровне (middleware) располагается сервер приложений. Он обеспечивает соединение клиентов с сервером БД и реализует бизнес-логику. На нижнем уровне находятся клиентские приложения. В ряде случаев это могут быть «тонкие клиенты», обеспечивающие только пользовательский интерфейс, поскольку вся бизнес-логика может располагаться на сервере приложений.
Многозвенная система функционирует следующим образом. Пользователь запускает клиентское приложение. Оно соединяется с доступным ему сервером приложений. Затем клиент запрашивает какие-то данные. Этот запрос упаковывается в пакет установленного формата и передается серверу приложений. Там пакет расшифровывается и передается серверу БД, который возвращает затребованные данные. Сервер приложений обрабатывает эти данные согласно заложенной в неге бизнес-логике, упаковывает и передает этот пакет клиенту. Клиент распаковывает данные и показывает их пользователю.
Если пользователь изменил данные, то цепочка их передачи на сервер БД выглядит следующим образом. Клиент упаковывает измененные данные и отправляет пакет на сервер приложений. Тот распаковывает их и отправляет на сервер БД. Если все исправления могут быть без осложнений занесены в БД, то на этом все завершается. Но могут возникнуть осложнения: сделанные изменения могут противоречить бизнес-правилам или изменения одних и тех же данных разными пользователями могут противоречить друг другу. Тогда те записи, которые не могут быть занесены в БД, возвращаются клиенту. Пользователь может исправить их или отказаться от сделанных изменений.
Для обмена информацией сервера приложений с клиентами и серверами БД разработаны различные протоколы и средства: DCOM, CORBA, MIDAS, MTS, OLEnterprise, J2EE, TCP/IP, HTTP, XML. Большинство этих средств обмена будут далее рассмотрены.
CORBA является одним из самых мощных инструментов создания распределенных приложений. Для использования CORBA на каждом компьютере, содержащем приложения клиентов, должен быть установлен брокер VisiBroker, обеспечивающий связь приложения со средой CORBA. А на одном из компьютеров в сети должны быть установлены элементы этой среды. Если все это сделано, открываются очень широкие возможности для создания сложных распределенных информационных систем.
Система MIDAS позволяет создавать распределенные приложения, использующие самые разные протоколы и технологии: DCOM, CORBA, OLEnterprise, HTTP, сокеты TCP/IP, MTS и другие.
Система Microsoft Transaction Server (MTS) - это еще одна система создания многозвенных приложений. Правда, она работает в полную силу далеко не во всех версиях Windows.
О TCP/IP и HTTP, применяемых в Интернет и корпоративных сетях, основанных на тех же протоколах, что Интернет, будет немало сказано. Вы найдете сведения о языке HTML, используемом для описания документов Web. Дальнейшим развитием языка HTML стал XML.
Язык программирования Java - это объектно-ориентированный язык, используемый, прежде всего, для приложений Интернет. Он характеризуется простотой, надежностью, способностью создавать простыми средствами интерактивные сетевые программы. Отличительной особенностью Java является возможность исполнять созданный код на любой из поддерживаемых платформ. Достигается это тем, что программы транслируются в некоторое промежуточное представление, называемое байт-кодом. Этот байт-код может затем интерпретироваться в любой системе, в которой есть среда выполнения Java. Обычно программы на языках, использующих интерпретацию, работают медленно. Но к Java это не относится. Байт-код легко переводится непосредственно в машинные коды, что позволяет достичь очень высокой производительности.
Дальнейшим развитием возможностей, заложенных в Java, явилась платформа J2EE (Java 2 Enterprise Edition). Она вобрала в себя все технологии, наработанные к этому времени, и стала основой для большинства серверов приложений. Эта платформа обеспечивает выполнение приложений, написанных в рамках определенных стандартов, и снимает с разработчика заботу об управлении очередями, транзакциями, сообщениями и многом другом.
Перечисленные технологии могут использоваться в различных видах распределенных приложений, работающих с базами данных. Но, конечно, в настоящий момент основной упор при разработке распределенных приложений делается на использование Интернет, корпоративных сетей, основанных на тех же протоколах, что и Интернет, а также технологии Web. Глобальность Интернет делает эту сеть незаменимой при создании многопользовательских распределенных приложений.
Структура многозвенного приложения в Delphi
Многозвенная архитектура приложений баз данных вызвана к жизни необходимостью обрабатывать на стороне сервера запросы от большого числа удаленных клиентов. Казалось бы, с этой задачей вполне могут справиться и приложения клиент/сервер, однако в этом случае при большом числе клиентов вся вычислительная нагрузка ложится на сервер БД, который обладает довольно скудным набором средств для реализации сложной бизнес-логики (хранимые процедуры, триггеры, просмотры и т. д.). И разработчики вынуждены существенно усложнять программный код клиентского ПО, а это крайне нежелательно при наличии большого Числа удаленных клиентских компьютеров. Ведь с усложнением клиентского ПО возрастает вероятность ошибок и усложняется его обслуживание.
Многозвенная архитектура приложений БД призвана исправить перечисленные недостатки.
Итак, в рамках этой архитектуры «тонкие» клиенты представляют собой простейшие приложения, обеспечивающие лишь передачу данных, их локальное кэширование, представление средствами пользовательского интерфейса, редактирование и простейшую обработку.
Клиентские приложения обращаются не к серверу БД напрямую, а к специализированному ПО промежуточного слоя. Это может быть и одно звено (простейшая трехзвенная модель) и более сложная структура.
ПО промежуточного слоя называется сервером приложений, принимает запросы клиентов, обрабатывает их в соответствии с запрограммированными правилами бизнес-логики, при необходимости преобразует в форму, удобную для сервера БД и отправляет серверу.
Сервер БД выполняет полученные запросы и отправляет результаты серверу приложений, который адресует данные клиентам.
Рис. 1 Многозвенная архитектура приложений БД
Таким образом, многозвенное приложение БД состоит из (рис. 1):
§ «тонких» клиентских приложений, обеспечивающих лишь передачу, представление, редактирование и простейшую обработку данных;
§ одного или нескольких звеньев ПО промежуточного слоя (сервер приложений), которые могут функционировать как на одном компьютере, так и распределенно - в локальной сети;
§ сервера БД (Oralce, Sybase, MS SQL, InterBase и т. д.), поддерживающего функционирование базы данных и обрабатывающего запросы.
Более простая трехзвенная модель содержит следующие элементы:
§ «тонкие» клиенты;
§ сервер приложений;
§ сервер БД.
Далее мы будем рассматривать именно трехзвенную модель. В среде разработки Delphi имеется набор инструментов и компонентов для создания клиентского ПО и ПО промежуточного слоя.
Сервер приложений взаимодействует с сервером БД, используя одну из технологий доступа к данным, реализованным в Delphi (см. часть IV). Это технологии ADO, BDE, InterBase Express и dbExpress. Разработчик может выбрать наиболее подходящую, исходя из поставленной задачи и параметров сервера БД. сервер многозвенный управление
Удаленные клиентские приложения создаются с использованием специального набора компонентов, объединенных общим названием DataSnap. Эти компоненты инкапсулируют стандартные транспорты (DCOM, HTTP, сокеты) и обеспечивают соединение удаленного клиентского приложения с сервером приложения. Также компоненты DataSnap обеспечивают доступ клиента к функциям сервера приложений за счет использования интерфейса AppServer.
Важную роль при разработке клиентских приложений играет компонент, инкапсулирующий клиентский набор данных.
Наряду с перечисленными выше преимуществами, наличие дополнительного звена - сервера приложений - дает некоторые дополнительные бонусы, которые могут быть весьма существенным подспорьем с точки зрения повышения надежности и эффективности системы.
Так как зачастую клиентские компьютеры - это достаточно слабые машины, реализация сложной бизнес-логики на сторону сервера позволяет существенно повысить быстродействие системы в целом. И не только за счет более мощной техники, но и за счет оптимизации выполнения однородных запросов пользователей.
Например, при чрезмерной загрузке сервера, сервер приложений может самостоятельно обрабатывать запросы пользователей (ставить их в очередь или отменять) без дополнительной загрузки сервера БД.
Наличие сервера приложений повышает безопасность системы, т. к. вы можете организовать здесь авторизацию пользователей, да и любые другие функции безопасности без прямого доступа к данным.
Кроме того, вы легко сможете использовать защищенные каналы передачи данных, например HTTPS.
Трехзвенное приложение в Delphi
Теперь рассмотрим составные части трехзвенного распределенного приложения в Delphi (рис. 2). В Delphi целесообразно разрабатывать клиентскую часть трехзвенного приложения и ПО промежуточного слоя - сервер приложений. Части трехзвенных приложений разрабатываются с использованием компонентов DataSnap, а также некоторых других специализированных компонентов, в основном обеспечивающих функционирование клиента.
Рис. 2 Схема трехзвенного распределенного приложения
Для доступа к данным применяется одна из четырех технологий, реализованных в Delphi.
(Разработку трехзвенных приложений целесообразно вести, используя в среде разработки группу проектов вместо одиночных проектов. Для этого используется утилита Project Manager (меню View | Project Manager)).
Для передачи данных между сервером приложений и клиентами используется интерфейс AppServer, предоставляемый удаленным модулем данных сервера приложений. Этот интерфейс используют компоненты-провайдеры TDataSetProvider на стороне сервера и компоненты TClientDataSet на стороне клиента.
Сервер приложений. Сервер приложений инкапсулирует большую часть бизнес-логики распределенного приложения и обеспечивает доступ клиентов к базе данных.
Основной частью сервера приложений является удаленный модуль данных.
Во-первых, подобно обычному модулю данных он является платформой для размещения не визуальных компонентов доступа к данным и компонентов-провайдеров. Размещенные на нем компоненты соединений, транзакций и компоненты, инкапсулирующие наборы данных, обеспечивают трехзвенное приложение связью с сервером БД. Это могут быть наборы компонентов для технологий ADO, BDE, InterBase Express, dbExpress.
Во вторых, удаленный модуль данных реализует основные функции сервера приложений на основе предоставления клиентам интерфейса IAppServer или его потомка. Для этого удаленный модуль данных должен содержать необходимое число компонентов-провайдеров TDataSetProvider. Эти компоненты передают пакеты данных клиентскому приложению, а точнее компонентам TdientDataSet, а также обеспечивают доступ к методам интерфейса.
Рис. 3 Выбор удаленных модулей данных в Репозитории Delphi
В состав Delphi входят удаленные модули данных. Для их создания используйте страницы Multitier, WebSnap и WebServices Репозитория Delphi (рис. 3).
§ Remote Data Module - удаленный модуль данных, инкапсулирующий сервер Автоматизации. Используется для организации соединений через DCOM, HTTP, сокеты.
§ Transactioiial Data Module - удаленный модуль данных, инкапсулирующий сервер MTS (Microsoft Transaction Server).
§ SOAP Server Data Module - удаленный модуль данных, инкапсулирующий сервер SOAP (Simple Object Access Protocol).
§ WebSnap Data Module - удаленный модуль данных, использующий Web-службы и Web-браузер в качестве сервера.
Помимо удаленного модуля данных неотъемлемой частью сервера приложений являются компоненты-провайдеры TDataSetProvider. С каждым компонентом, инкапсулирующим набор данных, предназначенным для передачи клиенту, в модуле данных должен быть связан компонент-провайдер.
Клиентское приложение. Клиентское приложение в трехзвенной модели должно обладать лишь минимально необходимым набором функций, делегируя большинство операций по обработке данных серверу приложений.
В первую очередь удаленное клиентское приложение должно обеспечить соединение с сервером приложений. Для этого используются компоненты соединений DataSnap:
§ TDCOMConnection - использует DCOM;
§ TSocketconnection - использует сокеты Windows;
§ TWebConnection - использует HTTP.
Компоненты соединения DataSnap предоставляют интерфейс IAppServer, используемый компонентами-провайдерами на стороне сервера и компонентами TClientDataSet на стороне клиента для передачи пакетов данных.
Для работы с наборами данных используются компоненты TClientDataSet, работающие в режиме кэширования данных.
Для представления данных и создания пользовательского интерфейса в клиентском ПО применяются стандартные компоненты со страницы Data Controls Палитры компонентов.
Механизм удаленного доступа к данным DataSnap. Для передачи пакетов данных между компонентом-провайдером и клиентским набором данных (см. рис. 2) (между клиентом и сервером) должен существовать некий транспортный канал, обеспечивающий физическую передачу данных. Для этого могут использоваться разнообразные транспортные протоколы, поддерживаемые операционной системой.
Различные типы соединений, позволяющие настроить транспорт и начать передачу и прием данных, инкапсулированы в нескольких компонентах DataSnap. Для создания соединения с тем или иным транспортным протоколом разработчику достаточно перенести соответствующий компонент на форму и правильно настроить несколько свойств. Ниже рассматриваются варианты настройки транспортных протоколов для компонентов, использующих DCOM, сокеты TCP/IP, http.
Компонент TDCOMConnection. Компонент TDCOMConnection предоставляет транспорт на основе технологии Distributed COM и применяется в основном для организации транспорта в рамках локальной сети.
Для настройки соединения DCOM в первую очередь необходимо задать имя компьютера, на котором функционирует сервер приложений. Для компонента TDCOMConnection это должен быть зарегистрированный сервер Автоматизации. Имя компьютера задается свойством property ComputerName: string; Если оно задано правильно, в списке свойства property ServerName: string; в инспекторе объектов можно выбрать один из доступных серверов. При выборе сервера также автоматически заполняется свойство property ServerGUID: string;
Причем для успешного соединения клиента с сервером приложений оба свойства должны быть заданы в обязательном порядке. Только имя сервера или только его GUID не обеспечат правильный доступ к удаленному объекту СОМ.
Открытие и закрытие соединения осуществляется свойством property Connected: Boolean; или методами procedure Open/procedure Close; соответственно.
Для организации передачи данных между клиентом и сервером компонент TDCOMConnection предоставляет интерфейс IAppServer property AppServer: Variant; который также может быть получен методом function GetServer: lAppServer; override; свойство property ObjectBroker: TCustomObjectBroker; позволяет использовать экземпляр компонента TsimpleObjectBroker для получения списка доступных серверов по время выполнения.
Методы-обработчики компонента TDCOMConnection представлены в табл. 1.
Таблица 1 Методы-обработчики событий компонента TDCOMConnection
Объявление |
Описание |
|
property Af terConnect: TNotifyEvent; |
Вызывается после установления соединения |
|
property AfterDisconnect: TNotifyEvent; |
Вызывается после разрыва соединения |
|
property BeforeConnect: TNotifyEvent; |
Вызывается перед установлением соединения |
|
property BeforeDisconnect: TNotifyEvent; |
Вызывается перед разрывом соединения |
|
type TGetUsernameEvent = procedure (Sender: TOb j ect ; var Username: string) of object; property OnGetUsername: TGetUsernameEvent; |
Вызывается непосредственно перед появлением диалога удаленной авторизации пользователя. Для этого свойство LoginPrompt должно иметь значение True. Параметр Username может содержать имя пользователя по умолчанию, которое появится в диалоге |
|
type TLoginEvent = procedure ( Sender: TOb j ect; Username, Password: string) of object; property OnLogin: TLoginEvent; |
Вызывается после открытия соединения, если свойство LoginPrompt имеет значение True. Параметры Username и Password содержат имя пользователя и пароль, введенные при авторизации |
Компонент TSocketConnection. Компонент TSocketConnection обеспечивает соединение клиента с сервером приложений за счет использования сокетов TCP/IP. Для успешного открытия соединения на стороне сервера должен работать сокет-сервер (приложение ScktSrvr.exe, рис.4).
Для успешного соединения свойство property Host: String; должно содержать имя компьютера сервера.
Рис.4 Сокет-сервер ScktSrvr.exe
Дополнительно, свойство property Address: String; должно содержать IP-адрес сервера.
Для открытия соединения должны быть заданы оба этих свойства. Свойство property Port: Integer; устанавливает номер используемого порта. По умолчанию это порт 211, но разработчик волен изменить порт, например, для использования различными категориями пользователей или для создания защищенного канала.
После правильного выбора компьютера в списке свойства property ServerName: string; в инспекторе объектов появляется перечень доступных серверов Автоматизации. И после выбора сервера свойство property ServerGUID: string; которое содержит имя компьютера GUID зарегистрированного сервера, задается автоматически, хотя его можно задать и вручную.
Метод function GetServerList: OleVariant; virtual; возвращает список зарегистрированных серверов Автоматизации. Открытие и закрытие соединения осуществляется свойством property Connected: Boolean; или методами procedure Open; procedure Close; соответственно.
Канал сокета TCP/IP может быть зашифрован. Для этого используется свойство property InterceptName: string; содержащее программный идентификатор объекта СОМ, обеспечивающего шифрование/дешифрование данных в канале, и свойство property InterceptGUID: string; содержащее имя компьютера GUID этого объекта.
Этот объект СОМ перехватывает данные в канале и осуществляет их обработку, предусмотренную собственным программным кодом. Это может быть шифрование, сжатие, обработка шумов и т. д.
Естественно, на стороне сервера должен быть зарегистрирован объект СОМ, выполняющий обратную операцию. Для этого также используется сокет-сервер (рис. 5). Строка Interceptor на странице должна содержать имя компьютера GUID объекта-перехватчика СОМ.
Рис. 5 Регистрация объекта-перехватчика СОМ в сокет-сервере
Метод function GetlnterceptorList: OleVariant; virtual; возвращает список зарегистрированных на сервере объектов-перехватчиков.
Для организации передачи данных между клиентом и сервером компонент TSocketConnection предоставляет интерфейс IAppServer property AppServer: Variant; который также может быть получен методом function GetServer: lAppServer; override; свойство property ObjectBroker: TCustomObjectBroker; позволяет использовать экземпляр компонента TSimpieObjectBroker для получения списка доступных серверов во время выполнения (см. ниже).
Методы-обработчики событий компонента TSocketConnection полностью совпадают с методами-обработчиками компонента TDCOMConnection (см. табл. 1).
Компонент TWebConnection. Компонент TWebConnection предоставляет клиенту соединение на основе транспорта HTTP. Для работы компонента на клиентском компьютере должна быть зарегистрирована библиотека wininet.dll. Обычно это не требует специальных усилий, т. к. этот файл уже имеется в системной папке Windows, если на компьютере установлен Internet Explorer.
На компьютере сервера должен быть инсталлирован Internet Information Server версии не ниже 4.0 или Netscape Enterprise версии не ниже 3.6. Перечисленное ПО обеспечивает доступ компонента TWebConnection к динамической библиотеке HTTPsrvr.dll, которая также должна находиться на сервере.
Например, если файл HTTPsrvr.dll расположен в папке Scripts US 4.0 на Web-сервере www.someserver.com, то свойство property URL: string; должно содержать следующее значение: http://someserver.com/scripts/httpsrvr.dll. Если URL задан верно и сервер настроен правильно, то в списке свойства property ServerName: string; в инспекторе объектов появляется перечень зарегистрированных серверов приложений. Имя одного из них должно содержаться в свойстве ServerName.
После выбора имени сервера в свойстве property ServerGUID: string; автоматически появляется GUID сервера. Свойства property UserName: string; и property Password: string; при необходимости могут содержать имя и пароль пользователя, которые будут использованы при авторизации.
Свойство property Proxy: string; содержит имя используемого прокси-сервера. В заголовок сообщений HTTP можно поместить имя приложения. Для этого используется свойство property Agent: string; соединение открывается и закрывается при помощи свойства property Connected: Boolean; аналогичные операции выполняют методы procedure Open; procedure Close; доступ к интерфейсу IAppServer предоставляет свойство property AppServer: Variant; или метод function GetServer: IAppServer; override;список доступных соединению серверов приложений возвращает метод function GetServerList: OleVariant; virtual; свойство property ObjectBroker: TCustomObjectBroker; позволяет использовать экземпляр компонента TSimpieObjectBroker для получения списка доступных серверов во время выполнения.
Методы-обработчики событий компонента TWebConnection полностью совпадают с методами-обработчиками компонента TDCOMConnection (см. табл. 1).
Провайдеры данных. Компонент-провайдер TDataSetProvider представляет собой мост между набором данных сервера приложений и клиентским набором данных. Он обеспечивает формирование и передачу пакетов данных клиентскому приложению и прием от него сделанных изменений (см. рис. 2).
Все необходимые операции компонент выполняет автоматически. Разработчику необходимо лишь разместить компонент TDataSetProvider и связать его с набором данных сервера приложений. Для этого предназначено свойство property DataSet: TDataSet; если соединение в клиентском приложении настроено правильно (см. выше), ТО
В списке выбора свойства ProviderName компонента TClientDataSet в Инспекторе объектов появляются имена всех компонентов-провайдеров сервера приложений. Если связать клиентский набор данных с компонентом-провайдером, а затем открыть его, в клиентский набор данных будут переданы записи из набора данных сервера приложений, указанного в свойстве DataSet компонента-провайдера TDataSetProvider.
Компонент также содержит свойства, помогающие настроить процесс обмена данными. Свойство property ResolveToDataSet: Boolean; управляет передачей данных от клиента серверу БД. Если оно имеет значение True, все изменения передаются в набор данных сервера приложений, заданный свойством DataSet. Иначе изменения направляются напрямую серверу БД. Если сервер приложений не должен отображать сделанные клиентом изменения, то свойству ResolveToDataSet можно присвоить значение False, что ускорит работу приложения.
Свойство property Constraints: Boolean; управляет передачей ограничений серверного набора данных клиентскому. Если свойство имеет значение True, ограничения передаются.
Свойство property Exported: Boolean; позволяет использовать в клиентском наборе данных интерфейс IAppServer. Для этого свойство должно иметь значение True.
Параметры компонента-провайдера задаются свойством type
TProviderOption = (poFetchBlobsOnDemand, poFetchDetailsOnDemand, poIncFieldProps, poCascadeDeletes, poCascadeUpdates, poReadOnly, poAllowMultiRecordUpdates, poDisablelnserts, poDisableEdits, poDisableDeletes, poNoReset, poAutoRefresh, poPropogateChanges, poAllowCoinmandText, poRetainServerOrder);
TProviderOptions = set of TProviderOption;
Набор параметров свойства задается присвоением элементам значения True.
Property Options: TProviderOptions; poFetchBlobsOnDemand - включает передачу в клиентский набор данных значений полей типа BLOB. По умолчанию эта возможность, отключена для ускорения работы; poFetchDetailsOnDemand - включает передачу в клиентский набор данных подчиненных записей для отношения «один-ко-многим».
По умолчанию эта возможность отключена для ускорения работы; poIncFieldProps - включает передачу в клиентский набор данных нескольких свойств для объектов полей: Alignment, DisplayLabel, DisplayWidth, Visible, DisplayFormat, EditFormat, MaxValue, MinValue, Currency, EditMask, DisplayValues; poCascadeDeletes - включает автоматическое удаление подчиненных записей в отношении «один-ко-многим» на стороне сервера, если главная запись была удалена в клиентском наборе данных; poCascadeUpdates - включает автоматическое обновление подчиненных записей в отношении «один-ко-многим» на стороне сервера, если главная запись была изменена в клиентском наборе данных; poReadOnly - включает режим «только для чтения» для набора данных сервера; poAllowMultiRecordUpdates - включает режим внесения изменений сразу в несколько записей одновременно.
Иначе все записи изменяются последовательно, одна за одной; poDisablelnserts - запрещает клиенту вносить в набор данных сервера новые записи; poDisableEdits - запрещает клиенту вносить в набор данных сервера изменения; poDisableDeletes - запрещает клиенту удалять записи в наборе данных сервера; poNoReset - запрещает обновление набора данных сервера перед передачей записей клиенту (перед вызовом метода AS_GetReccrds интерфейса IAppServer); poAutoRefresh - включает автоматическое обновление записей клиентского набора данных. По умолчанию эта возможность отключена для ускорения работы; poPropogateChanges - если В методах-обработчиках BeforeUpdateRecord или AfterUpdateRecord клиентского набора данных были сделаны дополнительные изменения, то после их записи в наборе данных сервера, изменения снова направляются клиенту для обновления записи.
Во включенном состоянии эта возможность позволяет полностью контролировать сохранение изменений на сервере; poAllowCommandText - позволяет изменять текст запроса SQL, имена хранимых процедур или таблиц в компоненте набора данных на сервере приложений; poRetainServerOrder - включает запрет на изменение порядка сортировки записей клиентом. Если этот параметр отключить, возможны ошибки отображения набора данных, проявляющиеся в появлении двойных записей.
Методы-обработчики компонента-провайдера данных представлены в табл. 2.
Таблица 2 Методы-обработчики событий компонента TDataSetProvider
Объявление |
Описание |
|
property Af terApplyUpdates: TRemoteEvent; |
Вызывается после сохранения изменений, переданных от клиента, в наборе данных сервера |
|
property AfterExecute: TRemoteEvent; |
Вызывается после выполнения запроса SQL или хранимой процедуры на сервере |
|
property AfterGetParams: TRemoteEvent; |
Вызывается после того, как компонент-провайдер сформировал набор параметров набора данных сервера для их передачи клиенту |
|
property AfterGetRecords: TRemoteEvent; |
Вызывается после того, как компонент-провайдер сформировал пакет данных для передачи набора данных сервера клиенту |
|
property AfterRowRequest: TRemoteEvent; |
Вызывается после обновления текущей записи клиента компонентом-провайдером |
|
property AfterUpdateRecord: TAf terUpdateRecordEvent; |
Вызывается сразу после обновления единичной записи на сервере |
|
property Bef oreApplyUpdates: TRemoteEvent; |
Вызывается перед сохранением изменений, переданных от клиента, в наборе данных сервера |
|
property BeforeExecute: TRemoteEvent; |
Вызывается перед выполнением запроса SQL или хранимой процедуры на сервере |
|
property BeforeGetParams: TRemoteEvent; |
Вызывается перед тем, как компонент-провайдер сформировал набор параметров набора данных сервера для их передачи клиенту |
|
property BeforeGetRecords: TRemoteEvent; |
Вызывается перед тем, как компонент-провайдер сформировал пакет данных для передачи набора данных сервера клиенту |
|
property BeforeRowRequest: TRemoteEvent; |
Вызывается перед обновлением текущей записи клиента компонентом-провайдером |
|
property BeforeUpdateRecord: TBeforeUpdateRecordEvent; |
Вызывается непосредственно перед обновлением единичной записи на сервере |
|
property OnDataRequest: TDataRequestEvent; |
Вызывается при обработке запроса на получение данных клиентом |
|
property OnGetData: TProviderDataEvent; |
Вызывается после получения данных от набора данных сервера, но перед их отправкой клиенту |
|
property OnGetDataSetProperties: TGetDSProps; |
Вызывается при создании структуры параметров набора данных сервера для их передачи клиенту |
|
property OnGetTableName: TGetTableNameEvent; |
Вызывается при получении компонентом-провайдером имени таблицы, подлежащей обновлению |
|
property OnUpdateData: TProviderDataEvent; |
Вызывается при сохранении изменений в наборе данных сервера |
|
property OnUpdateError: TResolverErrorEvent; |
Вызывается при возникновении ошибки сохранения изменений в наборе данных сервера |
Вспомогательные компоненты - брокеры соединений
В состав компонентов DataSnap входит ряд дополнительных компонентов, облегчающих работу с соединениями удаленных клиентов с сервером приложений. Рассмотрим их.
Компонент TSimpleObjectBroker. Компонент TSimpleObjectBroker инкапсулирует список серверов, доступных для клиентов данного многозвенного распределенного приложения. Список серверов создается на этапе разработки. При необходимости (отключение сервера, его перегрузка и т. д.) компонент соединения клиентского ПО может использовать один из запасных серверов из списка компонента TsimpleobjectBroker непосредственно во время выполнения.
Для этого необходимо заполнить список серверов компонента TSimpleobjectBroker и указать ссылку на него в свойстве objectBroker компонента соединения. И тогда при «переоткрытии» соединения имя сервера будет запрашиваться из списка компонента TsimpleobjectBroker.
Список серверов задается свойством property Servers: TServerCollection; на этапе разработки список серверов заполняется специализированным редактором (рис. 6), который вызывается при щелчке на кнопке свойства в Инспекторе объектов.
Рис.6 Редактор списка серверов компонента TSimpleObjectBroker
Свойство servers представляет собой коллекцию объектов класса TServeritem. Этот класс имеет несколько свойств, позволяющих описать основные параметры сервера (табл. 3). При использовании в соединении значения этих свойств подставляются в соответствующие свойства компонента соединения.
Таблица 3 Свойства класса TServeritem
Объявление |
Описание |
|
property ComputerName: string; |
Имя компьютера, на котором функционирует сервер |
|
property DisplayName: String; |
Содержит имя сервера для представления в списке серверов |
|
property Enabled: Boolean; |
Управляет доступностью записи о сервере для выбора при подключении. При значении True компоненты соединений могут использовать данную запись списка для подключения |
|
property HasFailed: Boolean; |
После неудачной попытки использовать данную запись списка при подключении свойству присваивается значение True и в дальнейшем эта запись не используется |
|
property Port: Integer; |
Содержит номер порта, используемого при подключении к серверу |
Помимо списка серверов компонент имеет лишь несколько вспомогательных свойств и методов.
Метод function GetComputerForGUID(GUID: TGUID): string; override; возвращает имя компьютера, на котором зарегистрирован сервер с GUID, заданным параметром.
Метод function GetComputerForProgID(const ProgID): string; override; возвращает имя компьютера, на котором зарегистрирован сервер с именем, заданным параметром Progio.
Свойство property LoadBalanced: Boolean; управляет выбором сервера из списка. При значении True запись о сервере выбирается случайным образом, иначе для соединения предлагается первая доступная запись о сервере.
Компонент TLocalConnection. Компонент TLocalConnection используется локально для получения доступа к существующим компонентам-провайдерам.
Свойство property Providers[const ProviderName: string]: TCustomProvider; содержит ссылки на все компоненты-провайдеры, размещенные с компонентом TLocalConnection на одной форме. Индексация в списке осуществляется по имени компонента-провайдера.
Общее число компонентов-провайдеров в списке возвращает свойство property ProviderCount: Integer; Кроме этого, при помощи компонента TLocalConnection можно получить доступ к интерфейсу IAppServer локально. Для этого используется свойство property AppServer: IAppServer; или метод function GetServer: IAppServer; override.
Компонент TSharedConnection. Если интерфейс IAppServer удаленного модуля данных имеет метод, возвращающий ссылку на аналогичный интерфейс другого удаленного модуля данных, то первый модуль называется главным, а второй - дочерним. Компонент TSharedConnection используется для соединения клиентского приложения с дочерним удаленным модулем данных сервера приложений.
Свойство property ParentConnection: TDispatchConnection; должно содержать ссылку на компонент соединения с главным удаленным модулем данных сервера приложений.
Дочерний удаленный модуль данных определяется свойством property ChildName: string; которое должно содержать его имя. Если интерфейс главного удаленного модуля данных настроен правильно, то в списке выбора свойства в Инспекторе объектов появляются имена всех дочерних удаленных модулей данных.
Интерфейс IAppServer дочернего удаленного модуля данных возвращает свойство property AppServer: Variant; или метод function GetServer: lAppServer; override; методы-обработчики компонента TSharedConnection унаследованы от класса предка TCustomConnection (см. табл. 1).
Компонент TConnectionBroker. Компонент TConnectionBroker обеспечивает централизованное управление соединением клиентских наборов данных с сервером приложений.
Для этого свойство connectionBroker клиентских наборов данных должно ссылаться на экземпляр компонента TConnectionBroker.
Тогда для изменения соединения (например, при переходе с транспорта HTTP на сокеты TCP/IP) нет необходимости изменять значение свойства RemoteServer всех компонентов TClientDataSet, а достаточно изменить свойство property Connection: TCustomRemoteServer; компонента TConnectionBroker.
Доступ к интерфейсу IAppServer обеспечивает свойство property AppServer: Variant; или метод function GetServer: lAppServer; override; методы-обработчики компонента TConnectionBroker полностью соответствуют табл.1.
ЗАКЛЮЧЕНИЕ
Многозвенные распределенные приложения обеспечивают эффективное взаимодействие большого числа удаленных «тонких» клиентов с сервером БД при помощи ПО промежуточного слоя. Наиболее распространенной моделью является трехзвенная модель, где ПО промежуточного слоя состоит только из сервера приложений.
Многозвенные распределенные приложения обеспечивают эффективный доступ удаленных клиентов к базе данных, так как в них для управления доступом к данным применяется специализированное ПО промежуточного слоя. В наиболее распространенной схеме - трехзвенном приложении - это сервер приложения, который выполняет следующие функции:
§ обеспечивает авторизацию пользователей;
§ принимает и передает запросы пользователей и пакеты данных;
§ регулирует доступ клиентских запросов к серверу БД, балансируя нагрузку сервера БД;
§ может содержать часть бизнес-логики распределенного приложения, обеспечивая существование «тонких» клиентов.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Дарахвелидзе П. Г. Разработка Web-служб средствами Delphi / П. Г. Дарахвелидзе, Е. П. Марков. - СПб.: БХВ-Петербург, 2003. - 672с.
2. Рудикова Л. В. Базы данных. Разработка приложений / Л. В. Рудикова. - СПб.:БХВ-Петербург, 2006. - 496с.
3. Дарахвелидзе П. Г. Delphi 2005 для Win32 / П. Г. Дарахвелидзе П. Г., Е. П. Марков. - СПб.: БХВ-Петербург, 2005. - 1136с.
4. Радченко Г. И. Распределенные вычислительные системы / Г. И. Радченко. - Челябинск: Фотохудожник, 2012. - 184с.
5. Миков А. И. Распределенные системы и алгоритмы / А. И. Миков, Е. Б. Замятина. - Интуит, 2008. - 370с.
6. Таненбаум Э. Распределенные системы. Принципы и парадигмы / Э. Таненбаум, М. Ван Стеен. - СПб.: Питер, 2003. - 877с.
7. Камаев В. А. Технологии программирования: учебник / В. А. Камаев, В. В. Костерин. - М.: Высш. шк., 2006. - 454с.
Размещено на Allbest.ru
...Подобные документы
Тенденция развития систем управления базами данных. Иерархические и сетевые модели СУБД. Основные требования к распределенной базе данных. Обработка распределенных запросов, межоперабельность. Технология тиражирования данных и многозвенная архитектура.
реферат [118,3 K], добавлен 29.11.2010Функции технологии Ajax разработки Web-приложений: выполнение HTTP-запросов в клиентской части и анализ ответа XML-сервера. Создание данных объекта XMLHttpRequest для разных браузеров. Обработка с помощью сервлета. Функциональность задач в Ajax.
лабораторная работа [54,8 K], добавлен 06.06.2009Выбор беспроводной технологии передачи данных. Механизмы управления качеством передачи потоков. Программное обеспечение приемной и передающей станции. Эксперименты, направленные на изучение неравномерности передаваемого потока данных при доступе к среде.
дипломная работа [1,1 M], добавлен 18.05.2012Компоненты технологий, направленных на обеспечение безопасности данных. Аутентификация (с авторизацией), сохранение целостности данных, активная проверка установленной политики безопасности. Версии приложений и принцип работы сервера защиты TACACS.
курсовая работа [144,7 K], добавлен 16.01.2010Создание баз данных и таблиц. Ограничение доступа для пользователей. Хранимая процедура, доступная всем пользователям. Скрипты для проверки ограничений. Методы обеспечения безопасности сервера базы данных. Чтение, изменение и добавление данных.
лабораторная работа [1,4 M], добавлен 23.07.2012Определение базы данных и банков данных. Компоненты банка данных. Основные требования к технологии интегрированного хранения и обработки данных. Система управления и модели организации доступа к базам данных. Разработка приложений и администрирование.
презентация [17,1 K], добавлен 19.08.2013Системы управления базами данных в медицине. Основные идеи, которые лежат в основе концепции базы данных. Требования, предъявляемые к базам данных и системе управления базами данных. Архитектура информационной системы, организованной с помощью базы данных
реферат [122,5 K], добавлен 11.01.2010Появление системы управления базами данных. Этапы проектирования базы данных "Строительная фирма". Инфологическая и даталогическая модель данных. Требования к информационной и программной совместимости для работы с базой данных "Строительная фирма".
курсовая работа [93,0 K], добавлен 31.03.2010Понятие распределённого реестра. Обеспечение независимости данных, распределенных по множеству компьютеров за счет прозрачности сети, репликации и фрагментации. Создание драйвера, запроса, клиентской части. Выборка из данных, находящихся на двух серверах.
курсовая работа [573,5 K], добавлен 19.05.2016Выбор программного средства для клиентской и серверной части. Требования к программному обеспечению. Анализ приложений "Gmote", "Remote for VLC", "Пульт MPC&VLC", "The Remote Control". Схема функционирования клиентской части. Тестирование окна управления.
дипломная работа [1,5 M], добавлен 31.03.2013Архитектура "клиент-сервер". Системный анализ базы данных "Газета объявлений", ее инфологическое и физическое проектирование. Программирование на стороне SQL-сервера. Разработка клиентской части в Borland C++ Builder 6.0 и с помощью Web-технологий.
курсовая работа [1,3 M], добавлен 07.07.2013Общая характеристика и функциональное назначение проектируемого программного обеспечения, требования к нему. Разработка и описание интерфейса клиентской и серверной части. Описание алгоритма и программной реализации приложения. Схема базы данных.
курсовая работа [35,4 K], добавлен 12.05.2013Высокоуровневые и низкоуровневые функции СУБД. Управление данными во внешней памяти. Главные особенности управления транзакциями, буферами. Ведение журнала изменений в базе данных (журнализация изменений). Обеспечение целостности данных и безопасности.
презентация [38,8 K], добавлен 14.10.2013Система управления базами данных задач и составляющих их процессов предприятия. Требования к информационной системе. Состав запросов к базе данных. Связи и отношения между информационными объектами. Алгоритмы работы и архитектура информационной системы.
курсовая работа [727,5 K], добавлен 02.02.2014Определение, свойства и характеристики распределенных систем баз данных. Основная задача систем управления ими. Архитектура распределения СУБД. Сравнение технологий файлового сервера и "клиент-сервера". Стратегия распределения данных по узлам сети ЭВМ.
курсовая работа [601,3 K], добавлен 24.05.2015Понятие, состав информационной системы. Управление целостностью БД. Обеспечение системы безопасности. Блокировка неверных действий приложений-клиентов. Тенденции в мире систем управления базами данных. Основные функции, классификация и механизмы доступа.
курсовая работа [205,0 K], добавлен 11.12.2014Характеристика категорий современных баз данных. Исследование особенностей централизованных и распределенных баз данных. Классификация систем управления базами данных по видам программ и применению. Управление буферами оперативной памяти и транзакциями.
курсовая работа [45,2 K], добавлен 10.03.2016Проектирование аппаратной составляющей отказоустойчивого кластерного сервера для компании. Расчет полезной и полной пропускной способности сети. Требования к системе управления, дисковой подсистеме, сетевой инфраструктуре, надежности и отказоустойчивости.
курсовая работа [161,5 K], добавлен 04.12.2013Преимущества и недостатки статических и динамических сайтов. Эволюция и классификация web-приложений. Требования, предъявляемые к системам управления контентом (CMS). Создание структуры сайта, информационное наполнение страниц. Разработка базы данных CMS.
дипломная работа [856,2 K], добавлен 27.06.2012Состав и назначение рабочей и сетевой станции. Основы организации и хранения данных на HDD накопителях, использование системы RAID в файловом сервере. Типичная конфигурация сети Ethernet топологии "звезда". Использование оптоволокна для передачи данных.
курсовая работа [205,6 K], добавлен 27.12.2014