
- •Актюбинский государственный университет им. К.Жубанова
- •К.Ф.М.Н., доцент кафедры информационных систем _______Бигалиева м.Ж.
- •Лабораторная работа №1
- •Лабораторная работа №2-3
- •Лабораторная работа №4
- •Лабораторная работа №5-6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №10
- •Лабораторная работа №11
- •Лабораториялық жұмыс №12
Лабораториялық жұмыс №12
Тақырыбы: Клиент-серверлік қосымшаны құру. Қашықтықтағы мәліметтер қорына ену.
Мақсаты: Көп деңгейлі жүйені ұйымдастыру принциптерін меңгеру.
Материалдар және қолданылатын құралдар: IBConsole, Delphi6/7
Әдістемелік нұсқау
Қолданушы клиент қосымшасын жүктегенде, ол сервер қосымшасымен байланысады. Клиент қосымшасы жіберген сұраныс қондырылған форматтағы дельта-пакеттерге салынады және сервер қосымшасына жіберіледі. Сервер қосымшасы мәліметтер пакетің шифрлайды да, мәліметтер қоры серверіне беріледі. Сервер қажет мәліметтерді кері қайтарады. Сервер қосымшасы алынған мәліметтерді бизнес ережеге сай өңдейді де, пакетке салып, клиенттке жібереді. Клиент пакетті ашып, қолданушыға көрсетеді.
Егер қолданушы мәліметтерге өзгерту орындаған болса, мәліметтер қоры серверіне беру тізбегі келесі түрде орындалады. Клиент өзгертілген мәліметтерді пакетке салады және сервер қосымшасына жібереді. Ол пакетті ашып мәліметтер қоры серверіне береді. Егер мәліметтер өзгерісі ешқандай кедергісіз орындалса, мысалы, өзгерістер бизнес ережеге сәйкес келмей қалмаса немесе әр түрлі қолданушының бір мәліметті өзгертуі, әрекет аяқталып, мәліметтер қорына енгізіледі. Кедергілер болған жаңдайда мәліметтер қорына енгізілмейтін жазбалар клиентке кері қайтарылады. Клиентке хабарлама жіберу үшін сервер қосымшасында OnReconcilError оқиғасы орындалады.
Клиент қосымшасы мен сервер қосымшасы және мәліметтер қоы сервері арасында мәлімет алмасу үшін әр түрлі хаттамалар мен құралдар қолданылады: DCOM, MIDAS, MTS, OLЕEnterprise, J2EE, TCP/IP, HTTP, XML.
Үш деңгейлі қосымшаны құрудың серверді ғана қолданатын 2 деңгейлі қосымшаны құрудан айырмашылығы жоқ. Тек бір ерекшелігі сервер қосымшасы мен клиент қосымшасы құрылып, олардың арасындағы әрекет ұйымдастырылады. Көп деңгейлі қосымшаларды құруда қашықтықтағы мәліметтер модулі және Data Snap бетіндегі орналасқан компонентттер қолданылады. Сервер мен клиент арасындағы өзара әрекет оператор интерфейсі және провайдер деп аталатын провайдер интерфейсі арқылы ұйымдастырылады. Бұл интерфейс ақпаратты мәліметтер пакеті түрінде жіберуді қамтамассыз етеді. Мәліметтер пакеті физикалық түрде блокты түзетін екілік кодтар жиынтығы болса, логикалық түрде мәліметтер жиыны болып табылады. Провайдер мәліметтерді пакеттерге бөлуді, сонымен қатар желілік хаттамаға сәйкес пакеттерді кодтауды қамтамассыз етеді.
Сервер қосымшасы сервер мен клиент арасындағы өзара әрекетті ұйымдастыруға арналған қашықтықтағы мәліметтер модулін қолданады.
Жұмысты орындау реті:
Барлық тапсырмаларды орындау, нәтижені тексеру, есеп беру.
Лабораториялық жұмысты орындауы туралы есебі:
Лабораториялық жұмыстың №;
Тапсырма;
Программаның нәтижесі
Бақылау сұрақтарына жауаптар.
Өз бетінше тапсырма.
Cервер қосымшасын құру.
File/ New Application меню пункттін қолдану арқылы жаңа сервер құрамыз. Сондағы құрылған Form1 формасы сервер қосымшасының негізгі формасы болып табылады. Содан соң қашықтықтағы мәліметтер модулін құрамыз.
Қашықтықтағы мәліметтер модулінің әр түрлі сервер қосымшасын құруға арналған арнайы түрлері бар:
-Remote Data Module-DCOM, OLЕЕnterprise, TCP/IP серверлері үшін қолданылатын қашықтықтағы модуль.
-MTS Data Module –MTS серверлері үшін қолданылатын қашықтықтағы модуль.
CORBA Data Module –CORBA серверлері үшін қолданылатын қашықтықтағы модуль.
SOAP Data Module – SOAP серверлері үшін қолданылатын қашықтықтағы модуль.
Қашықтықтағы мәліметтер модулінде де қарапайым модульдегі секілді компоненттерді орналастыруға болады. Мұнда мәліметтерге енуді қамтамассыз ететін визуальді емес компоненттер орналасады және мұнда сервер қосымшасының барлық қызметі жинақталады. Оның қарапайым мәліметтер модулінен айырмашылығы, қашықтықтағы мәліметтер модулі қарапайым клиентке сервер қосымшасынан мәліметтерді алу мүмкіндігін береді. File-New-Other мәзір командаларын таңдап, пайда болған диалогты терезеден Multitier бөлімі таңдалады(2-сурет).
2-сурет. Қашықтықтағы мәліметтер модулін құру нұсқалары
Бұл беттен Remote Data Module объектісі таңдайтын болсақ, қашықтықтағы мәліметтер модулінің мастері терезесі ашылады(3-сурет).
3-сурет. Қашықтықтағы мәліметтер модулінің мастері
Мұнда CoClass Name мәнінде қашытықтағы сервер атауы, Instancing модульді жүктеу әдісі, Threading Model мәнінде клиент интерфейсін шақыру әдісі таңдалынады.
Instancing параметрінің мәндері:
-Integrnal - мәліметтер модулі DLL кітапханасының бөлігі болып табылса серверде мәліметтер модулінің экземпляры қолданылады;
-Single Instance - әрбір клиент үшін өзінің адрестік кеңістігінде қашықтықтағы мәліметтер модулінің бір экземпляры құрылады және әрбір клиентпен байланыс өз экземплярын жүктейді;
-Multiple Instance - барлық қашықтықтағы мәліметтер модулінің клиенттерге арналып құрылған қосымшасы бір экземпляр болады.
Threading Model параметрінің мәндері:
-Single - кітапхана клиент сұранысын бірден алады;
-Apartment - бір уақытта бірнеше клиент сұранысы өңделеді және әрбіреуі үшін бөлек мәліметтер модулінің экземпляры қолданылад;
-Free - мәліметтер модулінің бір экземпляры бір уақытта клиенттің барлық сұранысына жауап береді;
- Both-мәліметтер модулінің бір экземпляры клиенттің бірнеше сұранысына жауап береді және өңдеу нәтижесі сол уақытта қайтарылады;
-Neutral-әр түрлі клиент бір уақытта қашықтықтағы модульді шақырған жағдайда COM моделі шақыру кезінде кедергі болмауын қадағалайды.
CoClass Name өрісінде қашықтықтағы модулдің MyRDM атауын беріп, қалған өрістерді өзгеріссіз қалдырып, ОК батырмасы шертілсе проектіге қашықтықтағы мәліметтер модулінен тұратын Unit2 модулі қосылады. Формаға Data Access бетіндегі TTable компонентін орналастырылсын және қасиеттеріне Database Name –DBDEMOS, Table Name – animals.dbf, active – true мәндерін беріледі.
Ескерту! Қасиеттерінің қойылу реті маңызды.
Енді берілген кестені клиентке қолайлы ету үшін тағы бір TDataSetProvider компоненті қажет. Ол (delphi5 Midas бетінде ) Data Access бетінен DatasetРrovider компонентін Table компонентімен байланыстыру үшін Dataset қасиетіне table1 беріледі. Содан кейін сервер қосымшасын орындауға жіберіледі. Себебі орындауға жібергенде ғана сервер автоматты түрде тіркеледі.
4-сурет. Қашықтықтағы мәліметтер модулі.
Сонымен сервер қосымшасы дайын және жұмыс жасауға қабілетті. Енді клиенттердің қосылу санағышы есептеу жүргізілсін. Ол үшін негізгі формаға екі TLabel компонентін орналастырады. Бірінің Caption қасиетіне «Қосылу саны» мәні енгізіледі де, екіншісінің мәні тазартылсын.
5-сурет.
Қашықтықтағы модульдің OnCreate оқиғасына санағыш мәнін меншіктейміз.
with Form1.Label2 do
Caption := IntToStr(StrToInt(Caption) + 1);
Ал On Destroy оқиғасына
with Form1.Label2 do
Caption := IntToStr(StrToInt(Caption) - 1);
Енді клиент қосымшасын құруды орындайық. Ол үшін File/New Application мәзір командалары таңдалып, негізгі формаға Data Access бетінен TSocketConnection компонентін орналастырылсын. Бұл компонент сервер қосымшасымен байланыс орнату үшін қолданылады. Содан соң Borland Socket Server программасын жіберу қажет. Delphi/Bin/SocketServer.exe –де орналасқан. Берілген программа клиенттердің сұранысын өңдейді, оларды сервер қосымшасына жібереді және оны, бұрын орындалмаса, орындауға жібереді. Осы функцияларды орындайтын программалар SCM (Service Control Manager) деп аталады. Borland Socket Server-ді жіберу тек сокет хаттамасын қолдану кезінде қажет. Borland Socket Server –ді орындауға жібергенде оның белгісі тапсырмалар панеліне орналастырылады.
SocketConnection1 компонентінің Server Name қасиетіне төгілмелі тізімнен Progect1.MyRDM, сервердің орналасқан орны көрсетіледі. Егер сервер қосымшасы басқа компьютерде орналасқан болса, Address қасиетінің мәніне IP адресін көрсетіледі немесе Host қасиетінің мәндер тізімінен РС компьютер атын таңдалынады. Содан соң Connected қасиетіне true мәнін беріледі. Егер барлығы дұрыс орындалса, сервер қосымшасы жүктеледі де, оның клиенттер санағышына 1 мәні меншіктеледі. Қарапайым клиентке мәліметтер жиынына ену үшін Ttable, TQuery компоненттерінің орнына TClientDataSet қолданылады.
Негізгі формаға Data Access бетінен ClientDataSet1 компонентін алынсын. Оның Remote Server қасиетіне SocketConnection1, ProviderName қасиетіне DataSetProvider1 мәні берілсін. TClientDataSet компонентінің Active қасиетіне true мәнін таңдап, белсенді етеміз. Формаға DataSource, DBGrid, DBNavigator –қойылып, сәйкесінше байланыстар орнатылады(DataSource-DataSet-ClientDataSet1, DBGrid, DBNavigator-DataSource-DataSource1). Егер барлық әрекет дұрыс орындалса, онда кестеде мәліметтер жиынын көруге болады (3-сурет).
3-сурет. Қарапайым клиент қосымшасы.
Бақылау сұрақтары.
Клиент-серверлік қосымшаның жұмыс істеу принципі қандай?
Сервер қосымшасын құруда қолданылатын компоненттер.
Клиент қосымшасын құруда қолданылатын компоненттер.
Көпдеңгейлі қосымшаны құруда қолданылатын технологияның түрлері қандай?
Блиц тест:
Әдебиеттер тізімі:
Архангельский А.Я. «Язык SQL в Delphi5». –Москва, ЗАО «Издательство Бином» , 2000.
Гофман В., Хомоненко А. «Delphi7».СПб.:ВХV-Петербург.
Епанешников Д.Д., «Delphi5.Базы данных»-Москва, «Диалог-Кифа»,2000.
Кандзюба С.П., Громов В.И. Delphi6. Базы данных и приложения. Лекции и упражнения. – К.: ДиаСофт, 2001.
Карпова Т. Базы данных: модели, разработка, реализация. – СПб.: Питер, 2001.