Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

РОЗШИРЕННЯ ІНТЕРФЕЙСУ СЕРВЕРА ЗАСТОСУВАНЬ

У попередніх параграфах описано класичну схему проходження інформації у тришаровій архітектурі клієнт-сервер:

- формування запиту клієнтом і передача його серверу застосувань;

- аналіз і корекція запиту сервером застосувань і передача його серверу БД;

- виконання запиту сервером БД, формування результуючої вибірки даних і повернення її серверу застосувань;

- аналіз і корегування отриманої вибірки сервером застосувань і пересилання остаточного набору даних клієнтові.

Підтримку перелічених операцій з боку сервера застосувань (як COM сервера) реалізовано у методах його стандартного інтерфейсу IAppServer. Саме до цих методів звертаються компоненти T ххх Connection та TClientDataSet для посилання запитів та отриму-вання результуючих наборів даних. Однак розробник сервера застосувань має змогу доповнити його (розширити) будь-яким власним набором процедур обробки даних як внутрішніх, так і отриманих від клієнта, чи з БД. Зокрема, це можуть бути алгоритми бізнес-правил, не пов’язані з інформацією в БД (правила заокруглення сум, нарахування податків тощо). У цьому ж місці зручно розташувати процедури синхронізації виконання окремих технологічних операцій декількома клієнтами і т.п.

Залишається лише реалізувати доступ до цих процедур з боку клієнтської програми, зареєструвавши їх як розширення стандартного інтерфейсу IAppServer. За правилами створення ActiveX об’єктів, оболонка Delphi/C++ Builder у момент компіляції проекту сервера застосувань вносить описи всіх його інтерфейсів у спеціальну бібліотеку типів, котра має ту ж назву, що і проект, і розширення *.tlb. Важливим для розробника є наявність зручного редактора роботи з бібліотеками типів, включеного в оболонку Delphi/C++ Builder. Його роботу розглянемо на простому прикладі.

Задамося ціллю обчислити середнє арифметичне двох цілих чисел не в клієнтській програмі, а саме на сервері застосувань. Відкриємо ще раз створений у п. 3.2 проект PAppServer. Серед модулів проекту знаходимо PAppServer.tlb і засобами програмної оболонки відкриваємо його форму, реалізовану у вигляді редактора бібліотеки типів. За його допомогою до інтерфейсу IMyFirstAppServer додаємо “New Method” і назвемо його, наприклад, myAverage. На закладці Params додаємо два вхідних (type=int, modifier=in) параметри P1 і P2 та вихідний параметр результату AVG (type=float, modifier=out). Для автоматичного формування інтерфейсної частини майбутньої процедури знайдіть і натисніть кнопку Refresh Implementation. В результаті новий метод буде не тільки додано до інтерфейсу нашого сервера, а й у віддаленому модулі даних MyFirstAppServer з’явиться заготовка нової процедури з іменем myAverage і визначеними нами параметрами P1, P2 та AVG. Залишилось лише заповнити цю процедуру кодом, що присвоює змінній AVG півсуму вхідних параметрів P1 і P2.

Можливий і зворотний процес вводу у список інтерфейсів існуючої процедури з описом у секції public. Для цього з допомогою опції Add to Interface контекстного меню редактора коду викликають діалогову форму, в якій потрібно навести оголошення процедури. Наприкінці оголошення доцільно задати тип виклику (stdcall).

Аналогічно інтерфейс сервера застосувань можна розширити довільним необхідним числом процедур. Якщо ж, окрім того, взяти до уваги, що їхніми параметрами можуть бути змінні типу OLEVariant, з допомогою яких є змога передавати динамічні масиви різноманітних типів даних, то можливості спілкування сервера з клієнтами справді є достатньо широкими.

Залишилось лише визначити спосіб виклику нової процедури сервера в клієнтській програмі. Зробимо це легко з допомогою властивості AppServer компоненти SocketConnection у модулі даних клієнта:

SocketConnection.AppServer.myAverage(5,7,myVarAVG); //Delphi.

SocketConnection->AppServer->myAverage(5,7,myVarAVG) //CBuilder.

Зауважимо, що на етапі компіляції такого виклику процедури інтерфейс сервера застосувань компілятору невідомий, тому останній змушений приймати таке звертання “на віру”, тобто без перевірки як наявності самої процедури, так і кількості та типів її параметрів. Цей спосіб доступу до інтерфейсу сервера називають пізнім (динамічним) зв’язуванням. Залучення бібліотеки типів сервера застосувань у проект клієнта дає змогу виконати згадані дії ще на етапі компіляції і оптимізувати набір операцій з виклику процедури.




Дата добавления: 2015-09-12; просмотров: 20 | Поможем написать вашу работу | Нарушение авторских прав

Алматы, 2013 | Гетеротрофты организмдер- деп | Мониторинг -деп | ТРИШАРОВА АРХІТЕКТУРА MIDAS | Демонстраційний приклад | ComputerDBServer : с:\...\DBDir\Simple.gdb. | Internet ресурси | Приклади тестових завдань з математики | Приклади тестових завдань з української мови |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.01 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав