Ф Е Д Е РАЛ Ь Н О Е АГ Е Н С Т В О П О О БРАЗО В АН И Ю РФ В О РО Н Е Ж С К И Й Г О С У Д АРС Т В Е Н Н Ы Й У Н И В Е РС...
15 downloads
374 Views
263KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Ф Е Д Е РАЛ Ь Н О Е АГ Е Н С Т В О П О О БРАЗО В АН И Ю РФ В О РО Н Е Ж С К И Й Г О С У Д АРС Т В Е Н Н Ы Й У Н И В Е РС И Т Е Т
Распред ел енныесистемы: технол огияBorland MIDAS У чебноепособиепо специал ьности230201 (071900) «И нф ормационныесистемы итехнологии» Д С .09
Ч асть3
В О РО Н Е Ж 2005
2
У тверж д ено Н ау чно-метод ическим советом В оронеж ского у ниверситета П ротокол № 12 от18.02.2005 г.
С оставител ьФ ертиков В .В .
П особие под готовл ено накаф ед ре инф ормационных систем ф аку л ьтетакомпью терных нау к В оронеж ского госу д арственного у ниверситета. Рекоменд у етсяд л я использования сту д ентами4 ку рсад невного отд ел ения в качестве у чебных материалов напрактических занятиях по ку рсу «Распред ел енныесистемы вычисл ений » .
3
Т р ехз в ен н ая ар хи т ект ур а р аспр еделен н ого пр и лож ен и я М ногозвенныеприл ож енияпред ставл яю тсобой распред ел енныесистемы у д ал енного д осту па к д анным, которые состоят как миниму м из т рех л о ги ч ес ки х уро вней. Э ти логические у ровни могу т наход иться как наод ной , так инанескол ьких маш инах. В такой минимал ьной простой ф орме, т рехзвенно й ("three-tiered model"), использу ю тсясл ед у ю щ иеу ровни. • К л иентское прил ож ение обеспечивает интерф ей с пользовател я напользовател ьской маш ине. • С ервер прил ож ений наход ится в д осту пном д л я всех кл иентов месте иобеспечиваетобщ у ю перед ачу д анных. • У д аленный сервер базы д анных обеспечивает систему у правл ения базой д анных (С У БД ). П отребность в реал изации л ю бой инф ормационной системы наоснове треху ровневой (ибол ее) кл иент-серверной архитекту ры возникает в связис ее у сл ож нением, в частности, у вел ичением числ арабочих мест конечных пол ьзовател ей ипоявл ением у д аленных ф ил иал ов. В такой системе неизбеж но возникаю т пробл емы своевременной синхронной замены версий кл иентских прил ож ений нарабочих станциях (особенно в сл у чае территориал ьной разбросанностипред приятия), пробл емы под д ерж ания настроек, атакж е перегру зкисетии серверабаз д анных. В ыход – в созд аниимногозвенных инф ормационных систем с «т о нки м » кл и ент о м . «Т онкий » кл иент су щ ественно обл егчается по сравнению с кл ассическим «тол стым» кл иентом, характерным д л я трад иционной архитекту ры «кл иент/сервер» , в частностииз-заотсу тствия необход имости вкл ю чения в его состав кл иентской частисерверной С У БД ид ру гих компонентов д л яд осту пак д анным. В этом сл у чаеф у нкциональность, связанная с д осту пом к д анным, возл агается напромеж у точное звено, с ервер п ри л о ж ени й, испол няю щ еерол ькл иентасерверной С У БД . С ам у д аленный сервер базы д анных играет роль посл ед него из трех звеньев инф ормационной системы. П робл ема под д ерж кинастроек – такж е реш ается засчет переносаих насервер прил ож ений . И так, применение многозвенных прил ож ений позвол яет обеспечить нескол ько п реи м ущ ес т в. • Ф ормирование пакетабизнес-л огикив общ ед осту пном сред нем у ровне сервераприл ож ений . Н есколько кл иентов имею т д осту п наэтот сред ний у ровень. Э то позвол яет избеж ать д у бл ирования бизнес-л огикид л я каж д ого отд ел ьного кл иентского прилож ения. • "Т онкий кл иент" отл ичается высокой над еж ностью и простотой у становки. Н е надо заботиться о под д ерж ании программных компонентов д л я обеспечениясвязис базой д анных. • Распред ел енная обработкаинф ормации. П ри распред ел ении работы прил ож ения нанесколько маш ин мож но у л у чш ить эф ф ективность бл агод аря бал ансировкенагру зки. • У вел ичение у стой чивости. М ож но изол ировать чу вствител ьные ф у нкционал ьныевозмож ностив звенья, которыеимею тразл ичныеограничения д ос-
4
ту па. Э то обеспечивает гибкие, с перестраиваемой конф игу рацией у ровни защ иты. Н арису нке 1 показанау прощ енная схемаархитекту ры построения инф ормационной системы с тремя звеньями. П омимо описанных выш е сред ств зд есь показан специал ьный компонент, «Брокер объектов» , вкл ю чаемый в состав д остаточно слож ной системы и осу щ ествл яю щ ий д л я «тонкого» кл иента поиск ну ж ного сервераприл ож ений сред ид осту пных извне серверов. Д анный компонент обеспечивает возмож ность присбое работы испол ьзу емого сервера прил ож ений под кл ю чить кл иентское прил ож ение к д ру гому серверу , атакж е равномерноераспред ел ениекл иентов по серверам прил ож ений .
Р ис. 1. Трехзвеннаяархитекту ракл иент-сервер Рассматриваемые ниж е инстру ментальные сред ствапозвол яю т реал изовывать серверы прил ож ений как прилож ения д л я Windows. П рограммиру емость такого сервера прил ож ений обеспечивается технол огией COMпрограммирования. С ервер прил ож ений реал изу ется как OLE-сервер, инкапсу л иру ю щ ий наборы д анных в COM-объектах и д опу скаю щ ий у правл ение ими через опу бл икованныеCOM-интерф ей сы. Разработкасобственных специал изированных программных компонентов позвол яет в ряд е сл у чаев отказаться от испол ьзования д орогостоящ его ф ирменного программного обеспечения и д обитьсякомпактностииэф ф ективностиработы компл ексав цел ом. Ч то касается своевременного обновл ения версий «тонкого» кл иента кру пной инф ормационной системы, эта пробл ема реш ается пу тем поставки прил ож ений с помощ ью технол огий , применяемых в Internet (intranet). Н аибол ее распространенными насегод няш ний д ень способами поставки «тонких» кл иентов с помощ ью таких технологий явл яю тся копирование ил и у становка прил ож ений с Web-сервера, икак од ин из вариантов –копированиекомпонента ActiveX, пол ностью реал изу ю щ его ф у нкционал ьность «тонкого» кл иента, с це-
5
л ью отображ ения его в браузере. Т акой способпоставкипроил л ю стрирован на рису нке2.
Р ис. 2. П оставка«тонких» кл иентов корпоративной системы Рассматриваемый д ал ее инстру ментарий позвол яет разрабатывать рабочие местаконечных пол ьзовател ей в нескол ьких вариантах реал изации. В о-первых – как «тонкий » кл иент в вид е обычных 32-разряд ных Windowsприл ож ений , пред у сматриваю щ их процед у ру у становки нарабочу ю станцию припомощ ид истрибу тива. В о-вторых – реал изация «тонкого» кл иентав вид е отображ аемого в брау зере ActiveX, что позвол яет осу щ ествл ять его поставку через Internet (intranet), испол ьзу я Web-сервер в качестве источникаочеред ной версииприл ож енияиWeb-брау зер в качествесред стваего у становки. П риэтом су щ еству ет возмож ность выпол нения такого прил ож ения непосред ственно в браузере, с испол ьзованием тега , под д ерж иваемый MS Internet Explorer, начиная с версии3.0. Н аконец, мож но вообщ е отказаться от поставки кл иента, созд ав систему д л я обработки запросов Internet-прил ож ений (с так называемым прилож ением д л я Web насервере). В этом сл у чае рол ь кл иента выпол няетсобственно Web-брау зер ид опол нител ьных механизмов поставкине требу ется.
В в еден и е в Borland MIDAS Multi-tier Distributed Application Services Suite (MIDAS, набор сервисов д л ямногозвенных распред ел енных прилож ений ) –технологиякомпанииInprise Corporation (Borland International), пред назначенная д л я разработки многозвенных распред ел енных прил ож ений и их экспл у атации в корпоративных системах. Э тот прод у кт позвол яет испол ьзовать при построении инф ормационных систем трехзвенну ю архитекту ру с "тонким" кл иентом, обеспечивая высоку ю производ ител ьность, над еж ность изащ иту от сбоев при
6
экспл у атациипод обных систем. Т ехнология MIDAS позвол яетпол у чатьд осту п к д анным, ф изически располож енным наразных маш инах, распред ел ять нагру зку ресу рсов по сети, автоматическипол у чать ограничения над анные, что позвол яет у меньш ить сетевой траф ик, атакж е разд ел ить бизнес-л огику прил ож ения наменее у язвимые части, распред ел ив их по звеньям серверов. С помощ ью MIDAS мож но созд авать системы д л я обработки запросов Internetприл ож ений . MIDAS работает с технол огиямиCORBA, С О М , MTS иOLEnterprise (основанный напротокол е RPC прод у кт корпорации Open Environment, ставш ей впосл ед ствиипод разд ел ением Borland), атакж е у прощ ает интеграцию су щ еству ю щ их систем. П еречисл им о с но вны е ко м п о нент ы , реализу ю щ иетехнол огию . • М од у л иу д ал енных д анных. С пециал ьные мод у л и д анных, которые д ей ству ю т как серверы автоматизацииил икак CORBA серверы, пред оставл яя кл иентам д осту п к л ю бым провай д ерам, которые онисод ерж ат. Э тикомпоненты испол ьзу ю тся насервере прил ож ений . • К омпонент–провай д ер (TDataSetProvider ). Брокер д анных, который обеспечивает д анными, созд авая пакеты д анных, и принимает изменения откл иента. Э тикомпоненты испол ьзу ю тся насервере прил ож ений . • К омпонентнаборад анных кл иента(TClientDataSet ). С пециал изированный набор д анных кл иента, который испол ьзу ет MIDAS.DLL д л яу правл енияд анными, записаннымив пакеты д анных. • К омпоненты связи (TDCOMConnection , TSocketConnection , TWebConnection, TCorbaConnection ). Н абор компонентов, которые опред ел яю т сервер прил ож ений , тип взаимод ей ствия ид ел аю т интерф ей с IAppServer д осту пным д л я наборов д анных кл иента. К аж д ый компонент связиспециал изиру ется наконкретном протокол есвязи. • Брокер SimpleObjectBroker . Брокер бизнес–объектов д л яраспред ел ениявычисл ител ьной нагру зкипо нескол ьким серверам. О сновными инстру ментами разработки в технологии MIDAS явл яю тся интегрированные сред ы Delphi иC++Builder. В простей ш ей трехзвенной архитекту ресред ствамиDelphi ил иC++Builder мож но созд атьпервый ивторой у ровень, ад л я третьего воспол ьзоваться у ж е су щ еству ю щ имиС У БД . П ерей д ем к рассмотрению особенностей разработки с точки зрения программиста, знакомого с Visual Control Library (VCL) и основами реал изации прил ож ений д л я у правл енияд анными.
С хема р аспр еделен н ого пр и лож ен и я в т ер ми н ах VCL И нф ормационные системы, созд анные наоснове кл ассической архитекту ры кл иент-сервер, называю тся д ву хзвенными системами ил и системами с «тол стым» кл иентом. О нисостоят из серверабаз д анных, сод ерж ащ его сгене-
7
рированныетем ил ииным способом табл ицы, инд ексы, триггеры ид ру гиеобъекты, реал изу ю щ иебизнес-правил ад анной инф ормационной системы, иод ного ил инескол ьких кл иентских прил ож ений , пред оставл яю щ их интерф ей с пол ьзовател я и производ ящ их проверку д опу стимости иобработку д анных согл асно сод ерж ащ имся в них ал горитмам. Е сл и говорить о кл иентских прил ож ениях, созд анных с помощ ью Delphi ил и C++Builder, д л я д осту пак источникам д анных они применяю т вызовы ф у нкций прикл ад ных программных интерф ей сов кл иентских частей соответству ю щ их серверных С У БД . Э тивызовы осу щ ествл яю тся обычно посред ством использования библ иотеки Borland Database Engine (BDE), хотя посл ед нее не явл яется обязательным. С хематакого кл ассического кл иентского прилож ения, по пред ставл ению Delphi–программиста, выгл яд итсл ед у ю щ им образом.
Р ис. 3. К л ассический «тол стый » кл иент Н аф орме помещ аю тся требу ю щ иеся визу альные компоненты Data Controls, в то времякак невизу ал ьныекомпоненты д осту пак д анным (Data Access и д ру гие), как правил о, сохраняет специал ьный контей нер, называемый мод у л ем д анных (Data Module). С хематрехзвенной системы, гл азамитого ж е программистаVCL, показананасл ед у ю щ ем рису нке4. П оскол ьку в д анном сл у чаеречь ид ето разработке л иш ь д ву х звеньев, «тонкого» кл иентаисервераприл ож ений , посл ед ний у ровень серверов С У БД насхеменепоказан. В известном смысл есервер прил ож ений и«тонкий » кл иентпред ставл яю тсобой разд ел енноенад вечастикл ассическое кл иентское прил ож ение. П ервая часть (сервер прил ож ений ) сод ерж ит компоненты д осту пак д анным и требу ет нал ичия BDE и кл иентасерверной С У БД , авторая (кл иент) д ол ж насод ерж ать л иш ь пол ьзовател ьский интерф ей с
8
инетребовать нал ичия BDE икакого-либо д ру гого программного обеспечения д осту пак д анным.
Р ис. 4. «Т онкий » кл иентисервер прилож ений « Т онки й » кл и е нт К ак вид но, кл иентское прил ож ение по-преж нему сод ерж ит мод у ль д анных (назовем его л окал ьным), в котором помещ аю тся невизу ал ьные компоненты д осту пак д анным. Н аибол еесу щ ественноеотл ичиеоткл ассического кл иентазакл ю чается в испол ьзовании вместо л ю бого из компонентов, инкапсу л иру ю щ их наборы д анных (TDataSet ), специал ьных компонентов кл и ент с ки х набо ро в данны хTClientDataSet , обеспечиваю щ их кэш иру емоесоед инениес у д ал енныминаборамид анных, распол ож енныминасервере прилож ений . К роме этого явл яется обязател ьным испол ьзование од ного из так называемых ко м п о нент о в с вязи : TDCOMConnection , TSocketConnection , TWebConnection , TOLEnterpriseConnection , TCorbaConnection . За д ачакомпонентов связи– поиск исоед инение с сервером прил ож ений , азатем – у правл ениеэтим соед инением. М ож но такж е испол ьзовать компоненты связи д л я вызоваметод ов интерф ей сасервераприлож ений . К аж д ый из компонентов связииспол ьзу ет опред ел енный комму никационный протокол : DCOM, Windows sockets (TCP/IP), HTTP, RPC иCORBA, соответственно. К омпонент TClientDataSet пред назначен д л я хранения д анных, пол у ченных отсервераприлож ений , в кэш екл иента, и, бу д у чипотомком компонентаTDataSet, обл адает, под обно компонентам TTable и TQuery , как навигационнымиметод ами, так иметод ами, осу щ ествл яю щ имиред актирование д ан-
9
ных. Кроме того, этот компонент облад ает метод ами SaveToFile и LoadFromFile , позволяю щ ими сохранять д а нные из кэш ав ф ай л е и восстанавл иватьих отту д а, реал изу ятак называему ю «briefcase model» . Т акая мод ел ь обработкид анных, основананатом, что «тонкий » кл иент осу щ ествл яет ред актирование д анных по бол ьш ей части при отсу тствии соед инения с сервером, испол ьзу я л иш ькэш ил ил окальныевнеш ниеу строй ства, ил иш ьиногд асоед иняется с сервером прилож ений д л я перед ачи ему измененных д анных с цел ью д альней ш ей обработки. К омпонент TClientDataSet д ел ает возмож ным, под обно TQuery, посыл ать д инамический SQL-запрос серверу . Д л я этого имеется специал ьное свой ство CommandText , с помощ ью которого мож но посыл атькоманд у наSQL от кл иентасерверу . Д л я выпол нения команд ы насервере необход имо у становить значение свой ства Provider.Options.poAllowCommandText равным True ид ал еевызва тьл ибо метод Open, л ибо метод Execute . П рииспол ьзованиикомпонентаTClientDataSet необход имо помнить о том, что он сод ерж итвсесвоид анныев памяти, поэтому кл иентнемож етработать с очень бол ьш иминаборамид анных (размер д анных зависитот размера памятиу маш ины кл иента). Д л яконечного пол ьзовател якл иентскаячастьмногозвенного прилож ения выгл яд ит иработает точно так ж е, как ив трад иционном д ву хзвенном прил ож ении, котороеиспол ьзу еткэш ированныеизменения. П о стру кту рекл иентская часть пред ставл яет собой прилож ение, которое работает без BDE и позвол яет испол ьзовать набор д анных кл иентав реж име работы с ф ай л ами. Д л я работы такому кл иенту необход иматолько библ иотекаMIDAS.DLL. И спол ьзу я л иш ь эту библ иотеку , прил ож ения л егче распространять; не над о инстал л ировать, конф игу рировать и под д ерж ивать программное обеспечение д л я у правл ения соед инениямис базой д анных. П оскольку этиприлож ениянеиспользу ю тбазу д анных напряму ю , онине под д ерж иваю т многопол ьзовател ьский вариант работы. В место этого наборы д анных пол агаю тся насамостоятел ьну ю реал изацию прилож ением работы с нескол ькимипол ьзовател ями. Д анные могу тбыть сохранены в ф ай л над иске и в д ал ьней ш ем загру ж ены, но не су щ еству ет встроенной защ иты д л я пред отвращ енияперезаписинескол ькимипол ьзовател ямиф ай л ов д анных д ру г д ру га. С е рве р при л ож е ни й В аж ней ш ей частью серверного прил ож ения явл яется так называемый удал енны й м о дул ь данны х (Remote Data Module), см. рис.4. С у щ еству ет три типау д ал енных мод у л ей д анных. • TRemoteDataModule . Э тот тип испол ьзу ется в том сл у чае, когд акл иент имеет д ело с компонентамисервераприл ож ений , испол ьзу ю щ имипротокол ы DCOM, HTTP, Sockets, ил иOLEnterprise, заискл ю чением сл у чаев с испол ьзованием MTS. • TMTSDataModule . Э тот тип испол ьзу ется в том сл у чае, есл исозд ается сервер прил ож ений как библ иотека, которая у станавл ивается в MTS. М ож но
10
такж е использовать этот тип с DCOM, HTTP, Sockets ил иOLEnterprise компонентами. • TCorbaDataModule . Э то сервер CORBA. Э тот тип испол ьзу ется д л я обеспеченияд аннымиCORBA-кл иентов. С о всемиэтимитипамимод у л ей д анных мож но использовать невизу ал ьные компоненты, поскол ьку непосред ственным пред ком у д ал енного мод у л я д анных явл яется обычный мод у л ь д анных, иу насл ед ованные от него механизмы обеспечиваю т взаимод ей ствие компонентов д осту пак д анным с сервером баз д анных через BDE. С обственные механизмы у д аленного мод у л я д анных обеспечиваю твзаимод ей ствиескл иентами. К аж д ый у д аленный мод у л ь д анных на сервере прил ож ений сод ерж ит од ин ил и нескол ько п ро вайдеро в, инкапсу л ированных компонентами TDataSetProvider . К аж д ый набор д анных кл иентаиспол ьзу ет опред ел енного провай д ера, который д ей ству еткак мостмеж д у набором д анных кл иентаид анными, которые пред ставл яет у д ал енный мод у л ь д анных. П ровай д ер заботится об у паковке д анных в пакеты, которые он посыл ает кл иенту , ио приеме изменений , пол у ченных от кл иента. У д ал енный мод у л ь д анных д ел ает каж д ый такой провай д ер д осту пным д л я кл иента, поскол ьку позвол яет пред оставить DCOMинтерф ей с д л я соответству ю щ их объектов, д ел ая их у правл яемыми извне и превращ ая, таким образом, сервер прилож ений в DCOM-сервер (см. ниж е). В свою очеред ь, провай д ер д анных: • пол у чаетзапрос над анныеоткл иента, пол у чаетзапрош енныед анныеотбазы д анных, у паковываетд анныед л яперед ачиипосыл аетих кл иенту ; • пол у чает измененные д анные от кл иента, применяет изменения к базе д анных и записывает все изменения, которые не могу т быть применены, возвращ аетнепримененныеизменениякл иенту д л яд альней ш его согл асования. О тносител ьно посл ед него пу нктанеобход имо сд ел ать сл ед у ю щ ее замечание. И нф растру кту раразрабатываемого распред ел енного прил ож ения пред оставл яет ш ирокие возмож ностид л я реш ения характерных д ля многопол ьзовател ьского д осту пак д анным пробл ем, связанных с попыткамиод новременного ред актирования нескол ькимипользовател ямиод них итех ж ед анных. О тметим, что в д анном сл у чаемеханизм блокировок, испол ьзу емый в трад иционной д ву хзвенной мод ел икл иент-сервер, мож ет оказаться неэф ф ективным ил ид аж е неприемл емым, так как промеж у ток временимеж д у ред актированием записии сохранением ее в базе д анных мож ет быть весьмад л ител ьным. В место этого испол ьзу ется сл ед у ю щ ий механизм. П ри попытке сохранения сервером прил ож ений измененной записив базе д анных, преж д е всего, производ ится ее поиск в соответству ю щ ем наборе д анных насервере прил ож ений и сравнение всех еепол ей с исход нымизначениями. В д анном сл у чаепод исход нымипонимаю тся значения, которые был ив кэш е кл иентанамомент пол у чения этой записис серверад о того, как пол ьзователь изменил в кэш еэту запись. Т аким пу тем автоматически выявл яю тся потенциал ьно опасные сл у чаи паралл ельного изменения од ной и той ж е записи нескол ькими пол ьзовател ями. Е сл и какиел ибо пол я завремя меж д у пол у чением оригинал азаписикл иентом ипопыткой сохранить изменения был и мод иф ицированы д ру гим пол ьзовател ем, запись
11
мож ет быть перед анаобратно в кл иентское прил ож ение д л я д ал ьней ш ей обработкипол ьзовател ем. Т аким образом, основная л огикад анных сервераприл ож ений обрабатывается провай д ером, который сл у ж ит бро керо м данны х меж д у у д ал енным сервером базы д анных и набором д анных кл иентанакл иентской маш ине. О бработчики событий , отвечаю щ ие за кл иентские запросы, применяю т бизнесл огику д анных, в то время как свой ствапровай д ерау правл яю т тем, какая инф ормациявклю ченав пакеты д анных. У д ал енный мод у л ь д анных под д ерж ивает д у ал ьный интерф ей с сервера автоматизации, реал изу ю щ его интерф ей с с именем IAppServer. Э тотинтерф ей с обеспечиваетоснову комму никаций д л я многозвенных прил ож ений : именно он испол ьзу ется набором д анных кл иентад л я общ ения с провай д ером насервере прил ож ений . Н аборы д анных кл иента пол у чаю т экземпл яр IAppServer от компонентасвязив кл иентском прил ож ении. П о у молчанию интерф ей с явл яется «stateless» , это означает, что вызовы ф у нкциинезависимы ине привязаны к пред ыд у щ ему вызову . П оэтому интерф ей с IAppServer не имеет свой ств, которыебы хранил иинф ормацию о состояниимеж д у вызовами. О д нако естьсл у чаи, в которых набор д анных кл иентапол агается насохраненну ю инф ормацию о состоянии, таку ю как теку щ ая позиция ку рсорабазы д анных, когд авыпол няется постепенно возрастаю щ ая выборка. Э таинф ормацияо состояниисохраняется тол ько, есл инескол ько кл иентов не испол ьзу ет совместно сервер прил ож ений , который реал изу етIAppServer. В закл ю чение обратим внимание нанал ичие в у д ал енном мод у л е ещ е д ву х компонентов, TВatabase иTSession (см. рису нок 4). О тметим, что д л я каж д ого «тонкого» кл иента, под кл ю ченного к серверу прил ож ений , созд ается с во й экзем п л яр у д ал енного мод у л я д анных, что собственно иобеспечивает од новременное обсл у ж ивание сервером сразу нескол ьких кл иентов. Таким образом, д л я того, чтобы избеж ать конф л иктов меж д у соед инениями с базой д анных, у станавл иваемых в разных экземпл ярах мод у л я д анных, сл ед у ет позаботиться о разных именах пол ьзовател ьских сессий . Э ту зад ачу выпол няет компонент TSession , точнее, соответству ю щ ий его экземпл яр в конкретном экземпл яре мод у л я д анных. «Размнож ение» ж е экземпл яров TDatabase необход имо д л я того, чтобы иметь возмож ность инд ивид у альной регистрациинасервере С У БД каж д ого из под кл ю чаемых кл иентов, поскол ьку имя пол ьзовател я С У БД и пароль явл яю тся свой ствами именно этого компонента. Е сл и соображ ения безопасностипозвол яю т применить д л я всех под кл ю чений общ ее имя и парол ь, мож но у простить рассматриваему ю схему , вынеся компонент TDatabase запред ел ы мод у л яд анных, например, поместив его нагл а вну ю ф орму . В этом сл у чае нескол ьких его экземпл яров созд ано не бу д ет и необход имость в явном испол ьзованиикомпонентаTSession отпад ет. С ое ди не ни е кл и е нт а с с е рве ром при л ож е ни й О сновная цел ь у помяну тых выш е компонентов связи– TDCOMConnection , TSocketConnection , TWebConnection , TOLEnterpriseConnection ,
12 TCorbaConnection – состоит в том, чтобы най ти и соед иниться с сервером
прил ож ений . П оскол ьку они у правл яю т соед инениями сервера, мож но такж е испол ьзовать компоненты связи д л я вызоваметод ов интерф ей сасервераприл ож ений . Рассмотрим реш ениеэтих д ву х зад ач под робнее. П еред поиском исоед инением с сервером прилож ений необход имо у становить свой ства компонента связи, которые од нозначно опред ел яю т сервер прил ож ений . С оед инениеоткрываетсяавтоматически, когд анабор д анных кл иентаобращ ается к серверу прил ож ений . К омпонент связи разрывает соед инениес сервером прилож ений , есл и: • у станавл иваетсязначениеFalse свой стваConnected ; • у ничтож аетсякомпонент; • изменяется какое-л ибо из свой ств, од нозначно опред ел яю щ их сервер прил ож ений (ServerName , ServerGUID , ComputerName ). Э ти свой стватакж е позвол яю т переклю чаться меж д у серверами прилож ений во время испол нения кл иентского прилож ения: приих изменениикомпонент разру ш ает теку щ ее соед инение иу станавл ивает новое. М ож но испол ьзовать вместо од ного компонентасвязи д л я перекл ю чения меж д у серверами прил ож ений нескол ько компонентов связи. Ч то касается второй зад ачи, то прил ож ениям в бол ьш инстве сл у чаев нет необход имостивызыватьинтерф ей с IAppServer непосред ственно, потому что соответству ю щ ие запросы д ел аю тся автоматическиприиспол ьзованиисвой ств иметод ов наборад анных кл иента. В то ж евремя, прид обавл ениик интерф ей су своих с о бс т венны х м ет о до в возникает необход имость прямого вызоваинтерф ей са. Д л я этого мож но испол ьзовать свой ство AppServer компонентасвязи. Н апример (наязыкеObject Pascal): MyConnection.AppServer.MyMethod(x, у);
Э тотспособобеспечиваетп о зднее с вязы вани е вызовов интерф ей са–связывание, котороепроисход иттол ько во времяиспол нения, то естьв моментвызовад анного метод а. П озд нее связывание явл яется очень гибким, но при его испол ьзованиитеряется много преиму щ еств, таких как проверкатипов ипросмотр непосред ственно реал изацииметод а. К рометого, позд неесвязываниеработает бол ее мед л енно, чем раннее, поскол ьку компил ятор генериру ет некоторые д опол нител ьные вызовы интерф ей сад л я посыл ки насервер преж д е, чем бу д етвызван д анный «пол езный » метод . С пособивозмож ностиреал изациираннего с вязы вани я зависят от выборапротокол ов. Д л я испол ьзования раннего связывания с DCOM, библ иотека типов серверад ол ж набытьзарегистрировананакл иентской маш ине. Д л яэтого над о испол ьзовать у тил иту TRegsvr.exe, которая распространяется вместе с Delphi. Д л я испол ьзования раннего связывания с CORBA над о д обавить в секцию uses программный мод у л ь, у которого в имени есть расш ирение _tlb (этотф ай л генериру етсяприсозд аниибибл иотекитипов). П риработе с протокол амиTCP/IP ил и OLEnterprise нел ьзя испол ьзовать раннее связывание, но поскол ьку у д ал енный мод у л ь д анных испол ьзу ет д у ал ьный интерф ей с, мож но испол ьзовать д испинтерф ей с (dispinterface) д л яу л у чш е-
13
ния производ ител ьности(над о такж е д обавить в uses программный мод у л ь, у которого в имениестьрасш ирение_tlb). Н апример: var TempInterface: IMyAppServerDisp; begin TempInterface := MyConnection.AppServer; TempInterface.SpecialMethod(x,y); end;
П еречисл им наибол ее важ ные особенности компонентов связи. К л асс TDispatchConnection являетсярод ител ьским кл ассом д л яобъектов, которые соед иняю т кл иентов с сервером прил ож ений , и не испол ьзу ется напряму ю . В место этого от него созд аю тся перечисл енные выш е потомки, у читываю щ ие специф ику конкретного соед инения. TDispatchConnection пред ставл яет механизм д л я вхож д ения насервер прилож ений (проверку имениипарол я пол ьзовател я), пол у чения интерф ей са IAppServer, вызова метод ов интерф ей са, у правл енияу д аленным соед инением. К омпонент TDCOMConnection испол ьзу ю т в кл иентской части, и он обеспечивает инициал изацию иразру ш ение соед инения, атакж е обеспечивает работу с интерф ей сом IAppServer . С помощ ью этого компонентау станавл ивается взаимод ей ствие через протокол DCOM. Д анный протокол обеспечивает наибол ее «прямой » под ход к организации связи, не требу я никаких д опол нител ьных прил ож ений во время выпол нения насервере (есл иDCOM вкл ю чен в поставку Windows, например, д л я операционной системы Windows 95 необход имо пред варител ьно его у становить). Е сл и сервер не испол ьзу ет DCOM (во всех ниж е перечисл енных сл у чаях), необход имо инстал л ировать д опол нител ьные сред ствад л я пол у чения сообщ ений кл иента, инициирования у д ал енного мод у л яд анных иу правл ениявызовамиинтерф ей са. К омпонент TSocketConnection испол ьзу ет станд артные сокеты Windows д л я у правл ения соед инением с сервером прил ож ений ипротокол TCP/IP. Э тот компонент мож ет инициировать и прекращ ать соед инение с у д ал енным сервером прил ож ений , пол у чать интерф ей с IAppServer от сервера, атакж е испол ьзоватьотд ельный С О М -объектд л я ш иф рования сод ерж ания сообщ ений , под д ерж ивать список провай д еров сервераприл ож ений . Д л я обеспечения соед инения требу ется запу ск насервереу тил иты Scktsrvr.ехе, вход ящ ей в поставку MIDAS. В процессе развития MIDAS появил ось некоторое изменение в пл ане безопасности. В прош л ом TSocketConnection разреш ал выпол нять л ю бой объект автоматизациинасервере. Т еперь это мож но пред отвратить, переписав метод UpdateRegistry у д аленного мод у л я д анных. В этом метод е мож но вызвать специальные у тил иты MIDAS д л я у правл ения регистрацией сервер прил ож ений : DisableSocketTransport д ел ает сервер прил ож ений нед осту пным д л я кл иентов, которые соед иняю тся с ним через TSocketConnection , EnableSocketTransport на оборот, д обавл яет запись о сервере прил ож ений в системный реестр. П ример использованияу тил итпривод итсяниж е:
14 class procedure TMyRDM.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); begin if Register then begin inherited UpdateRegistry(Register, ClassID, ProgID); EnableSocketTransport(ClassID) end else begin DisabieSocketTransport(ClassID); inherited UpdateRegistry(Register, ClassID, ProgID) end end;
К омпонентTWebConnection испол ьзу ет протокол HTTP д л я у правл ения соед инением с сервером прил ож ений и такж е наход ится в кл иентской части многозвенного прилож ения, обеспечивая те ж е ф у нкции, что и TSocketConnection. TWebConnection позволяет созд а вать кл иентов, которые могу т связываться с сервером прилож ений через «firewall» , испол ьзу я наибол ее распространенный портд л ясвязи. В место прямого обращ ениякл иентом к у д ал енному мод у л ю д анных, соед инения на основе HTTP испол ьзу ю т библ иотеку httpsrvr.dll, которая принимает запросы кл иентаи самаработает с у д аленным мод у л ем д анных. Web-соед инениемож ет воспол ьзоваться преиму щ еством системы безопасностиSSL, обеспечиваему ю через библ иотеку wininet.dll (этабибл иотекаиспол ьзу ется накл иенте). Бл агод аряэтому мож но проверять имя ипарол ь пол ьзовател я через свой ствакомпонентаприобращ ениинасервер прил ож ений . В качестве д опол нител ьной меры защ иты, сервер прил ож ений д ол ж ен регистрировать возмож ность кл иентаиспол ьзовать Web-соед инение через вызов у тил иты EnableWebTransport (анал огичной EnableSocketTransport ) в метод еUpdateRegistry у д аленного мод у л яд анных. К омпонент TCorbaConnection испол ьзу ется в кл иентской частид л я у становл ения с его помощ ью CORBA-соед инения меж д у кл иентом иу д ал енным сервером прил ож ений . В д анном сл у чае требу ется у становкаброкераобъектных запросов VisiBroker ORB. П ротокол CORBA позвол яетсозд аватьприл ож ения MIDAS с испол ьзованием разл ичных пл атф орм. И спол ьзу я CORBA, прил ож ение автоматически пол у чает много преиму щ еств, сред и которых – прозрачность распол ож ения, распред ел ение нагру зки и обработка ош ибок программным обеспечением ORB. В заклю чение обратим внимание наещ е не у поминавш ий ся компонент TSimpleObjectBroker . Э тот компонент сод ерж ит список возмож ных серверов прил ож ений д л я компонентов связи. К огд акомпоненты связизапраш иваю т сервер, простой бро кер о бъект о в перед ает имя од ного из возмож ных серверов в список. Э тотпроцесс позвол яеткл иентам опред ел ить сервер д инамически, во время работы прилож ения. TSimpleObjectBroker мож ет сл у чай ным образом выбиратьсервер сред испискавозмож ных серверов, обеспечиваятем самым некий бал анс нагру зки.
15
Учебн ы й пр и мер т р ехз в ен н ого пр и лож ен и я П реж д е всего, обратим внимание на важ ность поряд ка д ей ствий . В ы д ол ж ны созд атьизапу ститьсервер прил ож ений п еред созд анием кл иента. Е сл и вы сл ед у ете этому поряд ку , наэтапе разработкивы мож ете под соед иниться к серверу и протестировать кл иента. В ы мож ете, конечно, созд авать кл иентаи без привязкик серверу во время разработкиииспол ьзовать его тол ько в готовом варианте. О д нако в этом сл у чае вы заранее не вид ите, работает л икл иент так, как вы того хотите, ине мож ете выбирать сервер ипровай д ер из спискав И нспектореобъектов. П осл есозд аниясервераприл ож ений , его необход имо зареги с т ри ро ват ь. Е сл исервер прил ож ений испол ьзу ет как комму никационный протокол DCOM, HTTP, sockets ил и OLEnterprise, то он д ей ству ет как сервер автоматизации и д ол ж ен быть зарегистрирован под обно л ю бому д ру гому ActiveX- ил и С О М серверу . Е сл ивы испол ьзу ете MTS, сервер прил ож ений д ол ж ен быть реал изован в вид е д инамической библ иотеки. П оскол ьку все вызовы С О М д ол ж ны проход ить через MTS-прокси, нел ьзя просто зарегистрировать сервер прил ож ений . В место этого сл ед у ет инстал л ировать библ иотеку в сред е MTS. П ри испол ьзованииCORBA регистрацияневсегд анеобход има. Е сл ивы хотитепозвол итькл иенту использоватьд инамическоесвязываниес ваш им интерф ей сом, вы д ол ж ны инстал л ировать интерф ей с серверав репозиторий интерф ей сов. Е сл и вы, крометого, хотитепозвол итькл иенту запу скать сервер, есл итотещ ене запу щ ен, он д ол ж ен бытьзарегистрирован с OAD (Object Activation Daemon). Р азработ ка уче бного с е рве ра при л ож е ни й И так, разработкалю бой инф ормационной системы наоснове технол огии MIDAS пред пол агает испол ьзование какой -л ибо серверной С У БД . О д нако в цел ях у прощ ения рассматриваемой первоначал ьной ил л ю страции процесса разработки наш сервер прил ож ений бу д ет использовать в качестве источника д анных обыкновенные л окальные табл ицы dBase ил и Paradox. П ри этом мы воспол ьзу емся д емонстрационными табл ицами из составапоставки BDE, например, из базы д анных, названной поставщ иком DBDEMOS . Т аким образом, рассматриваемый пример насамом д ел е не сод ерж ит третьего звена, что впрочем, не сниж ает его ил л ю стративности: помещ енные в у д ал енном мод у л е компоненты наборов д анных (TDataSet ) приж ел аниимож но перестроить над осту п к ну ж ной серверной базед анных. Разработку сервераприл ож ений начнем с созд ания обычной ф ормы небол ьш ого размера, поскол ьку основное ее назначение – быть инд икатором запу щ енного сервераприл ож ений . М ож но разместить ее гд е-нибу д ь в у гл у экрана и при ж ел ании у становить значение свой ства FormStyle равным fsStayOnTop (поверх всех оста л ьных окон), чтобы непотерятьэто окно сред и д ру гих открытых окон. П омимо инд икации запу скасервера, его ф ормабу д ет отображ ать числ о под кл ю ченных кл иентов. Д л я реал изации д анной ф у нкции испол ьзу ем компонентTLabel, у становив свой ство Caption равным ’0’. Д ал ее из репозитария объектов д обавим к проекту у д ал енный мод у л ь д анных. Д л я этого из основного меню File выберите команд у New, затем стра-
16
ницу Multitier инаней необход имый тип TRemoteDataModule . С озд ание у д ал енного мод у л я д анных начинается с запу скамастера«Remote Data Module Wizard» , гд е необход имо у казать имя класса(CoClass Name), под которым д анный сервер прил ож ений бу д ет зарегистрирован в реестре как OLE-сервер. Зад ад им, к примеру , имя DemoRDM. С огл асно рассмотренной выш е общ ей схеме трехзвенного прил ож ения, помещ аем в созд анным мод у л ь д анных ну ж ное кол ичество компонентов наборов д анных ид л якаж д ого из них –по собственному провай д еру (TDataSetProvider ). В д анном сл у чае мы использу ем тол ько од ин компонент TQuery д л я д осту пак д анным исоответственно од ин провай д ер. Д л я того чтобы их связать меж д у собой , как показано насхеме, необход имо у становитьзначениесвой стваDataSet провай д ера. В аж но ещ ераз обратить внимание насл ед у ю щ у ю особенность реал изации провай д ера: есл и требу ется у правл ятьприсоед иненным к нему компонентом наборад анных из кл иентского прил ож ения, например пу тем перед ачи текста SQL-запроса, необход имо в свой ство Options провай д еравкл ю чить значение poAllowCommandText . Д л я наш его примерау становкаэтой опцииявл яетсяобязател ьной . С амикомпоненты наборов д анных (TDataSet) необход имо настроить на д осту п к соответству ю щ ей базе д анных (в наш ем сл у чае– DBDEMOS). П оскол ьку требований к обеспечению безопасностид осту пак д анным в наш ем ил л ю стративном примере не пред ъявл яется, выберем наибол ее простой способ настрой ки (см. закл ю чител ьный абзац разд ел а«С ервер прилож ений » ): д осту п к д анным д л я всех «тонких» кл иентов организу ем через ед инственный компонент TDatabase , который мы с этой цел ью поместим нагл авной ф орме. Е го свой ство AliasName у становим равным DBDEMOS, асвой ству DatabaseName присвоим имя (например, demo), которое бу д ет испол ьзоваться всеми компонентамиTDataSet в качестве именииспол ьзу емой базы д анных. Т ак в наш ем сл у чае ед инственный компонент TQuery ну ж но соед инить с TDatabase, у становив значениеего свой стваDatabaseName соответственным образом. Н аконец, реал изу ем у помяну тый счетчик под кл ю ченных кл иентов. Е го работаоснована наописанном выш е механизме, при котором д л я каж д ого «тонкого» кл иента, под кл ю ченного к серверу прил ож ений , созд ается новый экземпл яр у д ал енного мод у л я д анных. Ф актически, разрабатываемому серверу необход им счетчик созд аваемых во времявыпол ненияу д аленных мод у л ей д анных. Реал изу ем обработчикисобытий , связанные с созд анием иу ничтож ением у д ал енного мод у л я д анных, которые бу д у т отображ ать резу л ьтат под счетав меткеф ормы: procedure TDemoRDM.RemoteDataModuleCreate(Sender: TObject); begin with Form1.Label1 do Caption:=IntToStr(StrToInt(Caption)+1) end; procedure TDemoRDM.RemoteDataModuleDestroy(Sender: TObject); begin with Form1.Label1 do Caption:=IntToStr(StrToInt(Caption)-1) end;
17
П рограммист, испол ьзу ю щ ий сред у C++Builder, напиш етсл ед у ю щ ее: void __fastcall TDemoRDM::CRemoteDataModuleCreate( TObject *Sender) { Form1->Label1->Caption = IntToStr(StrToInt(Form1->Label1->Caption)+1); } void __fastcall TDemoRDM::CRemoteDataModuleDestroy( TObject *Sender) { Form1->Label1->Caption = IntToStr(StrToInt(Form1->Label1->Caption)-1); }
П еред тем как компил ировать проект незабу д ьтев текст д анного мод у л я (связанного с у д аленным мод у л ем д анных) д обавить ссыл ку намод у л ь ф ормы: uses Unit1; на языке C++ это означа ет вклю чение загол овочного ф ай л а гл авной ф ормы: #include "Unit1.h" П ол езно такж е изу чить состав проектаразработанного сервераприл ож ений . В частности, кромеиспол ьзованных намиф ормы имод у л я д анных, в проекте мож но обнару ж ить автоматически созд аваему ю библ иотеку типов (Type library):
Р ис. 5. Ф орма, мод у л ьд анных исвязаннаяс ним библ иотекатипов И спол ьзу ябрау зер библ иотекитипов, мож но у бед иться, что COM-объект, который бу д етсозд аваться припод кл ю ченииочеред ного кл иента, обл адает интерф ей сом д л я д осту паизвне к у д ал енному мод у лю д анных. Т аким образом,
18
разработанный намисервер прил ож ений явл яетсяпол ноценным OLE-сервером, оф ормл енным по всем правил ам технол огииCOM. П осл е того как проект сохранен и откомпил ирован, сервер прилож ений ну ж но запу стить навыпол нение, чтобы зарегистрировать его в реестре Windows. Рекоменд у ется у бед иться, что регистрация прош л ау спеш но припомощ и у тил иты Regedit (ред актор реестра), посл е чего разработку сервера(атакж е – у становку его наваш компью тер) мож но считатьзаверш енной . Р азработ ка кл и е нт а с дос т упом по прот окол у TCP/IP П еред созд анием кл иентского прил ож ения рекоменд у ется инстал л ировать д опол нительные сред ствад л я у становл ения связис разработанным ранее сервером прил ож ений , обеспечиваю щ ие пол у чение сообщ ений кл иента, инициированиеу д ал енного мод у л яд анных иу правл ениевызовамиего интерф ей са. Д л я выбранного нами протокол аTCP/IP сокетов таким промеж у точным программным обеспечением явл яется у помяну тая выш е специал ьная у тил итаBorland Socket Server (ф ай л scktsrvr.ехе). В общ ем сл у чае посл е запу скад анной у тил иты л ю бой из у становл енных накомпью тере серверов прил ож ений , созд анных по технол огии MIDAS, мож ет быть запу щ ен с л ю бого компью тера, д осту пного с помощ ью д анного протокол а. П оэтому прииспол ьзованиипод обных распред ел енных систем сл ед у ет рассматривать разл ичные вопросы, связанныес безопасностью их экспл у атации. И так, созд ад им новый проект бу д у щ его кл иентского прилож ения. У д обно, хотяэто инеобязател ьно, разработку вестинатом ж екомпью тере, накотором разрабатывал ся сервер. И л и, по край ней мере, накомпью тере, имею щ ем д осту п по сетик у становл енному серверу . С огл асно общ ей схеме трехзвенного прил ож ения (рис.4), рассмотренной выш е, кл иентд ол ж ен иметьл окал ьный мод у л ьд анных с невизу альнымикомпонентами. В простей ш ем сл у чаебез мод у л я д анных мож но обой тись, использу я в качестве их контей нерагл авну ю ф орму . Т аким образом, помимо визу ал ьных компонентов (Data Controls), из которых мы воспол ьзу емся д ву мя: TDBGrid иTDBNavigator , наф орму сл ед у етпоместить компонент связи TSocketConnection , рассмотренный выш е компонент д л я д осту пак у д аленному набору д анных TClientDataSet , атакж е компонент–источник д анных, TDataSource , обеспечиваю щ ий взаимод ей ствие визу ал ьных компонентов с наборамид анных, как показано наобщ ей схеме(рис.4). П опытаемся у становить связь с сервером прил ож ений (в этом изакл ю чается у помяну тоеу д обство: сервер мож етбыть д осту пен ещ е наэтаперазработкикл иента). Д л я этого сначалазапол ним свой ство Address компонентасвязи (IP ад рес компью терас у становл енным сервером), л ибо его свой ство Host (имя компью терав сети). Е сл итеперь выбрать д л я у становкисвой ство ServerName того ж е компонентасвязи, выпад ет список всех MIDAS серверов, зарегистрированных насоответству ю щ ем компью тере, с которым компонент у ж е у становил связь. В ыберем разработанный намисервер DemoSrv.DemoRDM . П осл е запол нения свой ства ServerName компонент связи автоматически у становит свой ство ServerGUID , записав в него значение гл обального ид ентиф икатора COM-объектаDemoRDM из реестра. Е слизначение свой стваServerGUID оста-
19
л ось пу стым, это значит, что сервер прил ож ений не най д ен (т.е. он л ибо не зарегистрирован в реестре, л ибо к компью теру нет д осту па). О кончател ьно у бед иться в д осту пностисерверакл иенту мож но, у становив свой ство Connected компонентасвязи: сервер прил ож ений приэтом д ол ж ен запу ститься ипоказать нал ичие у себя од ного присоед иненного кл иента(в д анном сл у чаеэтим кл иентом являетсясред аразработки). Д ал ее согл асно общ ей схеме, необход имо компоненту TClientDataSet у казать компонент связи, который он бу д ет использовать (свой ство RemoteServer ), посл ечего появитьсявозмож ностьзад а тьимяу д ал енного провай д ера, экспортиру емого запу щ енным сервером прил ож ений (свой ство ProviderName мы у станавл иваем, выбирая из выпад аю щ его списка значение DataSetProvider1 ). С вязь меж д у кл иентским иу д ал енным наборамид а нных обеспечена. Т еперь компонент TDataSource свяж ем с набором д анных (свой ство DataSet ), а все визу ал ьные компоненты (в наш ем прил ож ении их д ва: TDBGrid и TDBNavigator ), в свою очеред ь, с компонентом TDataSource (свой стваDataSource визу ал ьных компонентов). П омимо сред ств отображ ения д анных наф орме разрабатываемый кл иент бу д ет генерировать SQL-запрос навыборку этих д анных, иперед авать этот запрос в вид е команд ы навыпол нение серверу прил ож ений . В простей ш ем сл у чае код , испол няю щ ий эти д ей ствия, мож но поместить в обработчик события наж атиякнопкинаф орме: procedure TForm1.Button1Click(Sender: TObject); begin with ClientDataSet1 do begin CommandText := 'SELECT * FROM COUNTRY'; Open end end;
Зд есь COUNTRY – од на из табл иц д емонстрационной базы д анных DBDEMOS, над осту п к которой мы настроил ина ш сервер прилож ений . В сред е C++Builder этотф рагментвыгл яд итсл ед у ю щ им образом: void __fastcall TForm1::Button1Click(TObject *Sender) { ClientDataSet1->CommandText = "SELECT * FROM COUNTRY"; ClientDataSet1->Open(); }
Т еперьмож но запу ститьипротестироватькл иентскоеприлож ение. О братите внимание: показания счетчикасоед инений наф орме сервераприлож ений д ол ж ны измениться, так как теперь у сервераприл ож ений д вакл иента– сред а разработкиизапу щ енноекл иентскоеприл ож ение(см. рису нок ниж е).
20
Р ис. 6. «Т онкий » кл иентнакомпью терес сервером прилож ений О тметим, что разработанный кл иент позвол яет не тол ько просматривать, но иред актировать д анные. О д нако над о иметь в вид у , что изменения, вносимыепол ьзовател ем, непереносятсянасервер базы д анных автоматически. Ф актически разработанный нами кл иент вообщ е не возвращ ает серверу никаких д анных. В место этого д анные кэш иру ю тся настороне кл иента. М еханизм кэш ирования инкапсу л иру ется испол ьзованным компонентом TClientDataSet , о чем рассказано ранее. Э тотж екомпонентосу щ ествл яет д осту п к сод ерж имому кэш а, принеобход имостииницииру я д обавл ение в него новых записей ил и изменение су щ еству ю щ их. П ринцип работы «тонких» кл иентов – у помяну тая ранееBriefcase Model (мод ел ь работы с д аннымибез постоянного соед инения). Э то означает, что кл иенты л иш ь время от времени соед иняю тся с сервером прил ож ений д л я синхронизациид анных, апод авляю щ у ю часть времениработаю т в автономном реж име с кэш ем и л окал ьными внеш ними у строй ствами, период ически сохраняя и восстанавл ивая свои д анные с помощ ью метод ов SaveToFile иLoadFromFile компонентаTClientDataSet . Д л я инициации ж е процесса реального сохранения в базе д анных использу ется метод ApplyUpdates того ж екомпонента . Н аш простей ш ий «тонкий » кл иентне пред у сматривает вызовов этого метод а, поэтому он никак не смож ет изменить чтол ибо в базед анных.
21
Заключен и е: осн ов н ы е ш аги пр и р аз р абот ке мн огоз в ен н ы х пр и лож ен и й Д л я созд ания сервераприл ож ений начните новый проект, сохраните его исд ел ай тесл ед у ю щ ее. 1. Д обавьте новый у д ал енный мод у л ь д анных. И з основного меню File выберитекоманд у New, затем страницу Multitier инаней необход имый тип. 2. П оместите соответству ю щ ий компонентнаборад анных намод у л ь д анных и у становитеего над осту п к базед анных сервера. 3. П оместите компонент TDataSetProvider намод у л е д анных д л я каж д ого наборад анных. 4. У становитесвой ство DataSet д л якаж д ого провай д ера. 5. Н апиш ите код д л я обработки событий , бизнес-правил , проверки д анных и обеспечениябезопасности. 6. С охраните, скомпил иру й те, зарегистриру й те (ил и у становите) сервер прил ож ений . 7. Е сл и сервер не испол ьзу ет DCOM, то вы д ол ж ны инсталл ировать д опол нител ьные сред ства д л я пол у чения сообщ ений кл иента, инициированияу д ал енного мод у л яд анных иу правл ениявызовамиинтерф ей са: • д л яTCP/IP сокетов это у тил итаscktsrvr.ехе; • д л я HTTP соед инений это библ иотеки httpsrvr.dll, ISAPI.DLL (NSAPI DLL), которыед ол ж ны бытьинстал л ированы наваш ем Web-сервере; • д л яOLEnterprise это пакетOLEnterprise runtime; • д л яCORBA это брокер запросов VisiBroker ORB. Д л ясозд аниякл иентского прил ож ениянеобход имо сд ел атьсл ед у ю щ ее. 1. Д обавитьновый мод у льд анных в проект. 2. П оместитькомпонентсвязинамод у л ьд анных. 3. У становить свой ствакомпонентасвязи, опред ел яю щ ие сервер прилож ений , с которым бу д ету становл ено соед инение. 4. У становить свой ствад ру гих компонентов связи, есл ив этом есть необход имость. Н апример, вы мож ете у становить свой ство ObjectBroker , которое позвол яеткомпоненту связивыбиратьд инамическиод ин из нескольких д осту пных серверов. 5. П оместить стол ько компонентов TСlientDataSet на мод у л ь д анных, скол ько потребу ется и у становить свой ство RemoteServer д л я каж д ого компонентасоответственно, чтобы у казать од ин из испол ьзу емых компонентов связи. 6. У становить свой ство ProviderName д л я каж д ого компонента TClientDataSet. Е сл иваш компонент связипод соед инен к серверу прил ож ений во времяд изай на, то вы мож етевыбратьзначениесвой стваиз списка.
22
П р акт и чески е з адан и я 1. Д оработай те у чебный пример трехзвенной системы так, чтобы онапозвол ял асохранятьв базед анных резу л ьтаты ред актированиятабл иц настороне «тонких» кл иентов. 2. Д оработай те у чебный пример трехзвенной системы так, чтобы оператор, работаю щ ий с «тонким» кл иентом, имел возмож ность у правл ять соед инением с сервером прилож ений . П ри этом необход имо д опол нител ьно пред у смотреть интерф ей сные команд ы наперед ачу резу л ьтатов ред актированиятабл иц серверу прилож ений д л ясохраненияих в базед анных. 3. Д оработай те у чебный пример трехзвенной системы так, чтобы оператор «тонкого» кл иентаимел возмож ность у д обной работы в автономном реж име (без связи с сервером прил ож ений ). П ри этом необход имо д опол нител ьно пред у смотреть интерф ей сные команд ы у правл ения соед инением с сервером прил ож ений , команд ы сохранения кэш аред актиру емых табл иц в ф ай л ах налокальных д исках, восстановл ения сод ерж имого кэш аиз ф ай л ов, атакж е команд ы наперед ачу резу л ьтатов ред актирования табл иц серверу прилож ений д л я сохранения их в базе д анных (при переход е из автономного реж имав реж им связис сервером прил ож ений ). 4. Д оработай те у чебный пример трехзвенной системы д л я реализации возмож ностирегистрациикл иентов в базед анных. С этой цел ью , преж д евсего, необход имо д л якаж д ого «тонкого» кл иентаобеспечитьнасервереприлож ений собственное соед инение с базой д анных (см. выш е: компоненты TDatabase и TSession помещ а ю тся в у д ал енный мод у л ь д анных), чтобы иметь возмож ность инд ивид у ал ьной регистрации на сервере С У БД . Н еобход имо такж е обеспечить перед ачу имени пол ьзовател я и парол я, ввод имых оператором «тонкого» кл иента, насервер прил ож ений . Н аибол ее под ход ящ им д л я реал изации такой перед ачи явл яется механизм вызоваспециал ьных (разработанных вами) метод ов COM-интерф ей са у д ал енного мод у л я д анных. Н апример, вы мож ете при помощ и ред акторабибл иотеки типов д обавить метод Login, позвол яю щ ий перед ачу именипол ьзователяипарол ячерез параметры. 5. Д оработай те у чебный пример трехзвенной системы так, чтобы она обеспечивал акорректну ю многопол ьзовател ьску ю работу «тонких» кл иентов, испол ьзу ю щ их briefcase model (см. выш е). И зу чите событие TClientDataSet.OnReconcileError , возника ю щ ее в сл у чае, когд априпопытке сохранения измененной записив базе д анных выясняется, что этазапись у ж е был аизменена д ру гим пользовател ем. В ам необход имо написать обработку этого события в кл иентском прилож ении. С танд артный интерф ей с пол ьзовател я, пред у сматриваю щ ий обычные д л я такой ситу ации команд ы, реал изован в д иалоге Reconcile Error Dialog. Е сл ион вас у страивает, его мож но д обавить к кл иентскому проекту из репозитарияобъектов.
23
С оставител ьФ ертиков В ад им В алериевич Ред актор Бу нинаТ .Д .