4. Розподілені багаторівневі програми
Специфікація DCOM і створені на її основі технології дозволили перейти до нового етапу побудови програм — розподілених багаторівневих систем. Як попередник для них з'явилася платформа клієнт/сервер. Вона зводиться до того, що на верхньому рівні є виділений сервер даних, який зберігає базу даних і здійснює управління нею. А на нижньому рівні є клієнтські програми, що працюють з цими даними. Це так звані товсті клієнти, які реалізують бізнес-логіку, — правила маніпулювання з даними, перевірки їх несуперечності і достовірності. Втім, в системах клієнт/сервер є можливість частково перенести бізнес-логіку на сервер за допомогою процедур, що зберігаються на сервері. Клієнти можуть викликати ці процедури зі своїх комп'ютерів і проглядати отримані відповіді.
Технологія клієнт/сервер можу обслуговує системи рівня окремих підрозділів деякого підприємства. Але при створенні крупніших систем рівня підприємства структура клієнт/сервер стикається з певними складнощами. Розміщення бизнеслогики в основному на комп'ютерах клієнтів заважає створенню єдиної системи з єдиними правилами обробки і представлення даних. Багато ресурсів йде на узгодження роботи різних клієнтських програм, на побудову мостів між ними, на усунення дублювання одних і тих же функцій різними програмами.
Виходом з такого положення з'явилася концепція багаторівневих розподілених програм.. Найчастіше використовується трирівнева архітектура. На верхньому рівні розташований видалений сервер баз даних. Він забезпечує зберігання і управління даними. На середньому рівні розташовується сервер програм. Він забезпечує з'єднання клієнтів з сервером БД і реалізує бізнес-логіку. На нижньому рівні знаходяться клієнтські програми. У ряді випадків це можуть бути тонкі клієнти, що забезпечують тільки призначений для користувача інтерфейс, оскільки вся бізнес-логіка може розташовуватися на сервері програм.
Багаторівнева система функціонує таким чином. Користувач запускає клієнтську програму. Вона з'єднується з доступним йому сервером програм. Потім клієнт запрошує якісь дані. Цей запит упаковується в пакет встановленого формату і передається серверу програм. Там пакет розшифровується і передається серверу БД, який повертає дані у відповідь на запит. Сервер програм обробляє ці дані згідно закладеної в нього бизнес-логіці, упаковує і передає цей пакет клієнтові. Клієнт розпаковує дані і показує їх користувачеві.
Якщо користувач змінив дані, то ланцюжок їх передачі на сервер БД виглядає таким чином. Клієнт упаковує змінені дані і відправляє пакет на сервер програм. Той розпаковує їх і відправляє на сервер БД. Якщо всі виправлення можуть бути без ускладнень занесені в БД, то на цьому все завершується. Але можуть виникнути ускладнення: зроблені зміни можуть суперечити бизнес-правилам або зміни одних і тих же даних різними користувачами можуть суперечити один одному. Тоді ті записи, які не можуть бути занесені в БД, повертаються клієнтові. Користувач може виправити їх або відмовитися від зроблених змін.
Для обміну інформацією сервера програм з клієнтами і серверами БД розроблені різні протоколи і засоби: DCOM, CORBA, MIDAS, MTS, OLEnterprise, J2EE, TCP/IP, HTTP, XML. Поки обмежимося короткою характеристикою основних з них.
CORBA є одним з потужніших інструментів створення розподілених програм. Для використання CORBA на кожному комп'ютері, що містить додатки клієнтів, повинен бути встановлено спеціальне програмне забезпечення - брокер VisiBroker, що забезпечує зв'язок додатку з середовищем CORBA. А на одному з комп'ютерів в мережі повинні бути встановлені елементи цього середовища. Якщо все це зроблено, відкриваються дуже широкі можливості для створення складних розподілених інформаційних систем.
Система MIDAS дозволяє створювати розподілені програми, що використовують самі різні протоколи і технології: DCOM, CORBA, OLEnterprise, HTTP, сокети TCP/IP, MTS та інші.
Система Microsoft Transaction Server (MTS) — це ще одна система створення багаторівневих програм. Правда, вона працює в повну силу далеко не у всіх версіях Windows.
Мова програмування Java — це об'єктно-орієнтована мова, яка використовується, перш за все, для додатків Інтернет. Вона характеризується простотою, надійністю, здатністю створювати простими засобами інтерактивні мережеві програми. Відмітною особливістю Java є можливість виконувати створений код на будь-якій з підтримуваних платформ. Досягається це тим, що програми транслюються в деяке проміжне представлення, яке називається байт-кодомм. Цей байт-код може потім інтерпретуватися в будь-якій системі, в якій є середовище виконання Java. Зазвичай програми на мовах, що використовують інтерпретацію, працюють повільно. Але до Java це не відноситься. Байт-код легко переводиться безпосередньо в машинні коди, що дозволяє досягти дуже високої продуктивності.
Подальшим розвитком можливостей, закладених в Java, з'явилася платформа J2EE (Java 2 Enterprise Edition). Вона увібрала в себе всі технології, напрацьовані до цього часу, і стала основою для більшості серверів програм. Ця платформа забезпечує виконання програм, написаних в рамках певних стандартів, і знімає з розробника турботу про управління чергами, транзакціями, повідомленнями і багато чому іншому.
Перераховані технології можуть використовуватися в різних видах розподілених систем, що працюють з базами даних. Але, звичайно, зараз основний упор при розробці розподілених систем робиться на використання Інтернет, корпоративних мереж, заснованих на тих же протоколах, що і Інтернет, а також технології Web.
