Проектування триланкової розподіленої інформаційної системи для роботи з БД із використанням технології DataSnap (MIDAS)
СОДЕРЖАНИЕ: Проектування розподіленої інформаційної системи із використанням технології MIDAS. Методика створення сервера прикладень за технологією MIDAS. Віддалений модуль даних - основна частина сервера прикладень. Методика створення клієнтського прикладення.Проектування триланкової розподіленої інформаційної системи для роботи з БД із використанням технології DataSnap (MIDAS)
- Мета : отримання практичних навичок проектування розподіленої інформаційної системи із використанням технології MIDAS .
- Завдання :
Створити оригінальну (!) розподілену триланкову інформаційну системуна основі технології MIDAS . Сервер прикладень повинен інкапсулювати та експортувати деякий набір даних з абиякої таблиці БД. Прикладення-клієнт повинен підключатися до сервера прикладень та відображувати отримані від сервера дані у вигляді мережі.
Методика створення сервера прикладень за технологією MIDAS
Сервер прикладень інкапсулює велику частину бізнес-логіки розподіленого прикладення і забезпечує доступ клієнтів до БД. MIDAS-сервери прикладень повинні підтримувати деякий набір SQL-запитів для змін в БД і надсилати їх серверу БД за командою клієнтського прикладення.
Проектуємий тут сервер прикладень використовується для генерації запитів до БД через механізм BDE .
Спочатку створимо головну форму прикладення, основне призначення якої - служити індикатором запущеного сервера (мал. 2.1 ).
Малюнок 2.1
Форму можна розташувати де-небудь у кутку екрану, а її властивість FormStyle встановити рівною fsStayOnTop , щоб не втратити її вікно серед інших відкритих вікон.
Основною частиною сервера прикладень є віддалений модуль даних . Він є платформою для розташування невізуальних компонентів доступу до даних і компонентів-провайдерів. Розташовані на ньому компоненти зєднань, транзакцій і компоненти, що інкапсулюють набори даних, забезпечують триланкове прикладення звязком із сервером БД . Це можуть бути набори компонентів для технологій BDE , ADO , InterBase Express , dbExpress та ін. Віддалений модуль даних реалізує основні функції сервера прикладень на основі надання клієнтам інтерфейсу IAppServer (або нащадка цього інтерфейсу). Для цього віддалений модуль даних повинен містити компонент-провайдер DataSetProvider , який передає пакети даних клієнтському прикладенню, а точніше компонентам ClientDataSet , а також забезпечує доступ до методів інтерфейсу IAppServer .
Для створення віддаленого модуля даних треба виконати команду File | New | Other і зі сторінки Multitier репозитарія обєктів обрати піктограму Remote DataModule (мал. 2.2 ) .
Малюнок 2.2
У діалозі, що зявився, слід задати імя компонентного класу сервера (SampleMIDASServer ) і, при необхідності, встановити прапорець Generate Events support code (мал. 2.3 ).
Малюнок 2.3
На одержаній порожній формі розташуйте компоненти (мал. 2.4 ):
· Session – для забезпечення сеансів звязку з БД;
· Table (тут TableCustomer ), встановивши необхідні значення властивостей: DatabaseName (тут BCDEMOS ), Session (тут Session1_1 ) і TableName (тут customer.db ). Властивість Active також слід встановити рівною true (або встановити її значення динамічно при створенні модуля даних). Інакше компонент не міститиме ніяких даних, і не зможе надавати їх клієнтському прикладенню;
· DataSetProvider і звяжіть його властивість DataSet з TableCustomer . Якщо цього не зробити, клієнтське прикладення не матиме доступу до джерела даних.
Малюнок 2.4
Після цього треба побудувати сервер прикладень і виконати команду Run | Install COM+ Objects. для реєстрації сервера механізмом DCOM (мал. 2.5 ).
Малюнок 2.5
Зареєстрований таким чином сервер повинен зявитися у дереві Службы компонентов , яке можна оглянути командою Пуск | Панель управления | Администрирование | Службы компонентов (мал. 2.6 ).
Малюнок 2 .6
І, нарешті, MIDAS-сервер треба запустити на виконання. Тепер MIDAS-сервер зареєстрований у реєстрі Windows як ActiveX-сервер (т.н. обєкт Автоматизації ).
За допомогою його контекстного меню командою Свойства можна дізнатися імя і код прикладення для подальшого використання у прикладенні-клієнті (мал. 2.7 ).
Малюнок 2.7
Методика створення клієнтського прикладення
Віддалене клієнтське прикладення повинне забезпечити зєднання з сервером прикладень. Для цього можна використовувати компоненти зєднань DataSnap : DCOMConnection (використовує DCOM ), SocketСonnection (використовує «кубла » Windows ), WebConnection (використовує http ). Компоненти зєднання DataSnap надають інтерфейс IAppServer , використовуваний компонентами-провайдерами на боці сервера і компонентами ClientDataSet на боці клієнта для передачі пакетів даних. Для роботи з наборами даних використовується компонент ClientDataSet , що працює у режимі кешування даних . Для представлення даних і створення призначеного для користувача інтерфейсу в клієнтському програмному забезпеченні застосовуються стандартні компоненти зі сторінки Data Controls палітри компонентів.
Створення клієнтського прикладення починається зі створення звичайного прикладення, на якому слід розташувати компоненти (мал. 2 . 8 ):
Малюнок 2 . 8
· кнопки Установить/разорвать связь с сервером, Загрузить, Применить, Сохранить ;
· компонент DCOMConnection для встановлення звязку з віддаленим сервером, властивості якого слід встановити так:
·ServerGUID : {314929B6-CFC8-493D-874F-FC1CBBE6B802 }чи ж ServerName (при заповненні одного з цих двох параметрів інший параметр зчитується з реєстру Windows і заповнюється автоматично); перевірити правильність DCOM-з’єднання можна встановленням властивості Connectеd в значення true . При цьому повинен автоматично запуститися MIDAS-сервер .
· джерело даних ClientDataSet , властивості якого слід встановити так:
·RemoteServer у значення DCOMConnection1 ;
·ProviderName у значення DataSetProvider1 (обрати зі списку);
· компонент DataSource і повязати його з джерелом даних ClientDataSet1 ;
· компонент DbGrid і звязати його з компонентом DataSource для відображення даних таблиці БД, одержаних від сервера.
Тепер тільки залишилося написати реакції на події від кнопок форми:
//---------------------------------------------------------------------------
#include vcl.h
#pragma hdrstop
#include ClientMainForm.h
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource *.dfm
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ConnectClick(TObject *Sender)
{
if (ClientDataSet1-Active) // close and disconnect
{
ClientDataSet1-Close();
DCOMConnection1-Close();
}
else // open (will automatically connect)
{
//DCOMConnection1-Open();
ClientDataSet1-Open();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplyClick(TObject *Sender)
{
ClientDataSet1-ApplyUpdates(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SaveClick(TObject *Sender)
{
ClientDataSet1-SaveToFile(customer.cds, dfBinary);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LoadClick(TObject *Sender)
{
ClientDataSet1-LoadFromFile(customer.cds);
}
Клієнтське прикладення у триланковій моделі повинне володіти лише мінімально необхідним набором функцій, делегуючи більшість операцій з обробки даних серверу прикладень . Все! Прикладення готове до запуску.
?Контрольні запитання:
1. Опишіть процес спілкування сервера прикладення з клієнтом за технологією MIDAS .
2. З якою метою у прикладенні використані компоненти DCOMConnection , ClientDataSet ?
3. Яку роль виконує Remote Data Module ?.
4. Дайте вичерпні пояснення до розробленого вами прикладення.