Введення в технологію datasnap стор
DataSnap є технологією створення розподілених систем, що складаються з сервера баз даних, сервера доступу до даних (який, в свою чергу, є клієнтом сервера баз даних) і так званого тонкого, або полегшеного, клієнтського додатку, що є клієнтом сервера доступу до даних (рис . 12.2).
Фактично два останніх додатки ділять між собою функціональність, характерну для клієнтського додатка, що використовується в "класичних" двухзвенних клієнт-серверних системах. Тонкий клієнт зазвичай є додатком, з яким працює кінцевий користувач, і тому призначений головним чином для надання користувальницького інтерфейсу (тобто тих форм і інтерфейсних елементів, за допомогою яких користувач редагує дані). Природно, такий додаток повинен "знати", на якому комп'ютері локальної або глобальної мережі знаходиться сервер доступу до даних, яке ім'я (або інший ідентифікатор) наданого ним сервісу і за допомогою яких засобів (маються на увазі сервіси операційної системи, мережеві протоколи і т. д.) з ним можна обмінюватися цими даними. Це і є ті нечисленні параметри, які вимагають настройки.
Мал. 12.2. Інформаційна система з сервером доступу до даних
Що стосується сервера доступу до даних, зазвичай він кінцевим користувачам недоступний, і тому призначений для користувача інтерфейс в традиційному розумінні (форми, кнопки, поля для введення даних) мати може, але не зобов'язаний. Іншими словами, сервер доступу до даних може бути і звичайним Windows-додатком з формами, і додатком без форм, і консольним додатком, і навіть просто сервісом операційної системи, які пишуть повідомлення для адміністратора системи в файл журналу (log file). Його завдання - обмінюватися даними з тонким клієнтом і звертатися до сервера баз даних з власними запитами (зазвичай ініційованими цим обміном). Тому сервер доступу до даних, з одного боку, повинен надавати клієнтам інтерфейси, що дозволяють отримувати від нього дані, а з іншого боку, бути повноцінним клієнтом сервера баз даних. Іншими словами, у якому його комп'ютер повинен мати як мінімум встановлену клієнтську частину серверної СУБД. Нерідко такий комп'ютер має і інші бібліотеки доступу до даних. Наприклад, у версіях MIDAS 1 і MIDAS 2 (Delphi 3 і Delphi 4) обов'язковою складовою його частиною була бібліотека Borland Database Engine. У версії MIDAS 3 (Delphi 5) і більш пізніх як механізм доступу до даних можуть бути використані і інші бібліотеки, наприклад бібліотеки ADO (або взагалі ніяких бібліотек, крім тих, які підтримують клієнтський API і поставляються з сервером баз даних). І нарешті, з виходом Delphi 6 до різноманітних механізмів доступу до даних, що застосовуються в технології DataSnap, додався новий універсальний механізм - dbExpress, який отримав подальший розвиток в Delphi 7.
DataSnap-сервер доступу до даних є СОМ-сервер (обговорення питань застосування спільно з технологією DataSnap технології CORBA та інших технологій розподілених обчислень, що не базуються на моделі СОМ, виходить за рамки теми даної книги). З технологічної точки зору DataSnap є реалізована в ряді компонентів VCL надбудова над СОМ, що здійснює перетворення набору даних в тип, допустимий для СОМ, передачу таких даних звичайним для СОМ способом і зворотне відновлення набору даних на стороні, ці дані отримує.
Ліцензійна точка зору на DataSnap практично збігається з технологічної - в разі Delphi версій 4-6 оплаті підлягає можливість передавати набори даних з одного комп'ютера на інший; істотна різниця полягає лише в тому, що в межах одного комп'ютера дані можна передавати, не купуючи ліцензій. Відзначимо, що поставка розподілених DataSnap-додатку-жений, розроблених за допомогою Delphi 7 Studio, може здійснюватися без додаткового ліцензування.
Для створення DataSnap-серверів використовуються наявні в Delphi компоненти доступу до даних (спадкоємці класу TDataSet) і серверні DataSnap-компоненти, що надають клієнтського додатку дані, отримані за допомогою компонентів доступу до даних, такі як TDataSetProvider (а в ранніх версіях MIDAS - TProvider). Клієнтські DataSnap-додатки, в свою чергу, використовують ряд компонентів, що відповідають за обмін даних з сервером (до них відносяться розглянуті в попередньому розділі компоненти TDCOMConnection, TSocketConnecti on, TWebConnection), і компонент TClientDataSet, який здійснює кешування отриманих даних.
Коли слід вибирати DataSnap як технології розподілених обчислень? Робити це слід в тому випадку, коли:
# 9632; число клієнтських додатків може виявитися або великим, або непередбачуваним.
Далі ми розповімо детальніше, як застосовувати цю технологію, а потім обговоримо деякі особливості, пов'язані з перенесенням в Delphi 7 проектів, розроблених для ранніх версій MIDAS.