Портал магістрів

Автореферат за темою:
Розробка та дослідження клієнт-серверної системи для взаємодії мобільних пристроїв з сервером використовуючи технологію Java

Виконаний Шелуденковим А. В.

  Актуальність теми
  Введення
     1. Архітектура " клієнт-сервер"
     2. Моделі взаємодії клієнт-сервер
     3. Переваги архітектури клієнт-сервер
     4. Функції сервера
     5. Java платформа
       5.1 Об'єктно-орієнтованість
       5.2 Надійність
       5.3 Безпека
       5.4 Незалежність від архітектури
       5.5 Висока продуктивність
     6. CGI і Java технологи
     Висновок
     Література
Актуальність теми

У наш час практично у всіх сферах життя людського суспільства застосовуються ті або інші системи обробки даних. Це можуть бути банківські системи, промислові програмні комплекси, засоби автоматизації торгівлі й інші додатки. Постійне розширення областей застосування обчислювальної техніки й усе зростаюча складність розв'язуваних завдань вимагають удосконалювання методів створення сучасних інформаційних систем.
З початку 90-х років XX століття відома така технологія реалізації програмних додатків як архітектура "клієнт-сервер". Її основна особливість полягає в тому, що додаток ділиться на два рівні - подання даних (клієнт) і зберігання даних (сервер БД). Обробка інформації відбувається на клієнті, на сервер посилають запити й обробляються отримані у відповідь на них дані.
З появою мульти-платформних технологій програмування й телекомунікаційних систем виникла можливість впровадження архітектури клієнт- сервер у портативні пристрої.
У рамках даної роботи будуть розглянуті переваги цієї архітектури для мобільних пристроїв з використанням технології Java.
Введення

Архітектура клієнт-сервер припускає сервер бази данних, що представляє собою додаток, що здійснює комплекс дій по керуванню даними - виконання запитів, зберігання й резервне копіювання даних, відстеження посилальної цілісності, перевірку прав і привілеїв користувачів, ведення журналу транзакцій.
Одним з найважливіших переваг клієнт- серверних інформаційних систем у порівнянні з їхніми аналогами є зниження мережного трафика при виконанні запитів.
Другою перевагою архітектури клієнт- сервер є можливість зберігання бізнес- правил на сервері, що дозволяє уникнути дублювання коду в різних додатках, що використовують загальну базу даних.
Крім того, у цьому випадку будь-яке редагування даних, у тому числі й редагування позаштатними засобами, може бути зроблене тільки в рамках цих правил.
Крім перерахованих можливостей, сучасні серверні СУБД мають широкі можливості керування користувацькими привілеями й правами доступу до різних об'єктів бази даних, резервного копіювання й архівації даних, а нерідко й оптимізації виконання запитів.
Вони також, як правило, надають можливість паралельної обробки даних, особливо у випадку використання багатопроцесорних комп'ютерів як сервера баз даних.
1. Архітектура " клієнт-сервер"

Як правило, комп'ютери й програми, що входять до складу інформаційної системи, не є рівноправними. Деякі з них володіють ресурсами (файлова система, процесор, принтер, база даних і т.д.), інші мають можливість звертатися до цих ресурсів. Комп'ютер (або програму), керуючий ресурсом, називають сервером цього ресурсу ( файл-сервер, сервер бази даних, обчислювальний сервер...).
Клієнт і сервер якого-небудь ресурсу можуть перебувати як у рамках однієї обчислювальної системи, так і на різних комп'ютерах, зв'язаних мережею.
Основний принцип технології " клієнт-сервер" полягає в поділі функцій додатка на три групи:
• уведення й відображення даних (взаємодія з користувачем);
• прикладні функції, характерні для даної предметної області;
• функції керування ресурсами (файловою системою, базою даних і т.д.)
Тому, у будь-якому додатку виділяються наступні компоненти:
• компонент подання даних;
• прикладний компонент;
• компонент керування ресурсом.
Зв'язок між компонентами здійснюється за певними правилами, які називають "протокол взаємодії".
2. Моделі взаємодії клієнт-сервер

Історично першої з'явилася модель розподіленого подання даних, яка реалізовувалася на універсальній ЕОМ з підключеними до неї неінтелектуальними терміналами.
Керування даними й взаємодія з користувачем при цьому поєднувалися в одній програмі, на термінал передавалася тільки "картинка", сформована на центральному комп'ютері.
Потім, з появою персональних комп'ютерів (ПК) і локальних мереж, були реалізовані моделі доступу до вилученої бази даних. Якийсь час базової для мереж ПК була архітектура файлового сервера.
При цьому один з комп'ютерів є файловим сервером, на клієнтах виконуються додатки, у яких сполучені компонент подання й прикладний компонент (СУБДсуд і прикладна програма). Протокол обміну при цьому представляє набір низькорівневих викликів операцій файлової системи. Така архітектура, реалізована, як правило, має очевидні недоліки - високий мережний трафик і відсутність уніфікованого доступу до ресурсів.
З появою перших спеціалізованих серверів баз даних з'явилася можливість іншої реалізації моделі доступу до вилученої бази даних. У цьому випадку ядро СУБД функціонує на сервері, протокол обміну забезпечується за допомогою мови SQL. Такий підхід у порівнянні з файловим сервером веде до зменшення завантаження мережі й уніфікації інтерфейсу " клієнт-сервер".
Однак, мережний трафик залишається досить високим, крім того, по- колишньому неможливо задовільне адміністрування додатків, оскільки в одній програмі сполучаються різні функції.
Пізніше була розроблена концепція активного сервера, який використовував механізм збережених процедур.
Це дозволило частину прикладного компонента перенести на сервер (модель розподіленого додатка). Процедури зберігаються в словнику бази даних, розділяються між декількома клієнтами й виконуються на тому ж комп'ютері, що й SQL- cервер. Переваги такого підходу: можливо централізоване адміністрування прикладних функцій, значно знижується мережний трафик (тому що передаються не SQL- запити, а виклики збережених процедур).
Недолік - обмеженість засобів розробки збережених процедур у порівнянні з мовами загального призначення.
На практиці зараз звичайно використовуються змішаний підхід: найпростіші прикладні функції виконуються збереженими процедурами на сервері; більш складні реалізуються на клієнті безпосередньо в прикладній програмі.
Зараз ряд постачальників комерційних СУБД оголосило про плани реалізації механізмів виконання збережених процедур з використанням мови Java. Це відповідає концепції "тонкого клієнта", функцією якого залишається тільки відображення даних (модель вилученого подання даних).
Останнім часом також спостерігається тенденція до всебільшого використання моделі розподіленого додатка. Характерною рисою таких додатків є логічний поділ додатка на дві й більше частин, кожна з яких може виконуватися на окремому комп'ютері. Виділені частини додатка взаємодіють один з одним, обмінюючись повідомленнями в заздалегідь погодженому форматі.
У цьому випадку дворівнева архітектура клієнт- сервер стає трирівневою, а в деяких випадках, вона може включати й більше ланок (рис 1).

CGI
Рисунок 1 - 3-х рівнева архітектура "клієнт-сервер"
3. Переваги архітектури клієнт-сервер

Силою, що сприяє розвитку систем з архітектурою клієнт- сервер, служить те, що підключення до недорогих серверів недорогих ПК дозволить одержати оптимальне співвідношення ціни й продуктивності. Найчастіше це припущення вірне.
Використовуючи безліч невеликих комп'ютерів, розроблювачі систем клієнт- сервер можуть эмулировать обчислювальну потужність більших ЕОМ, розподіляючи прикладне завдання по різних мікрокомп'ютерах і серверах.
Кожний з них бере на себе свою частину обчислювального навантаження, використовуючи інформацію разом з іншими процесорами мережі. Суть ідеї в тому, що щоб підвищити потужність системи, не нарощуючи продуктивність одного комп'ютера, а підсумовуючи засобу багатьох.
Швидкодія - основний фактор доцільності розробки систем для архітектури клієнт- сервер.
Технологи серверів баз даних стає простіше у використанні й сполучиться в одних системах із засобами RAD. Таким чином, очікується, що за допомогою цієї швидкісної й практично захищеної платформи скоротиться час, необхідне для підготовки й передачі прикладної програми користувачеві.
Привабливість ГИК (графічного інтерфейсу користувача) - ще один фактор, що схиляє користувачів до застосування архітектури клієнт- сервер .
До переваг прикладних програм клієнт- сервер ставляться також простота використання й зручність дл користувачів, що працюють із такими ГИК, як Windows 3.1, Windows 95, Windows NT і OS/2 Warp. Користувачі почувають себе більш комфортно й працюють продуктивніше з такими прикладними програмами, як текстові процесори, засоби перегляду Internet (браузери) і електронні таблиці, і подібними до них .
Нарешті, клієнт-сервер - це технологія, що надає більше самостійності користувачам. Прикладні програми й дані перебувають на невеликих, більш доступних системах, а не в надрах міні-ЕОМ і потужних обчислювальних центрів.
Найбільш проста форма архітектури клієнт- сервер - це поділ обчислювального навантаження між двома окремими процесами: клієнтом і сервером.
Хоча й клієнт, і сервер можуть перебувати на тому самому комп'ютері, більшість систем цієї архітектури запускають клієнтський процес на одному комп'ютері, а процес- сервер на іншому, використовуючи для обміну інформацією мережні зв'язки. У цій моделі один процес може працювати незалежно від іншого, виконувати певні завдання й розділяти обчислювальне навантаження.
Звичайно клієнтом служить настільний ПК, що виконує програмне забезпечення кінцевого користувача. програмне забезпечення (ПЗ) кінцевого користувача (front-end software) - це будь-яка прикладна програма або пакет, здатні направляти запити по мережі серверу й обробляти одержувану у відповідь інформацію. Сервер, у свою чергу, одержує запити й уживає дії від імені клієнта.
Проміжне забезпечення (middleware) надає загальний інтерфейс для ПЗ кінцевого користувача й сервера, що проникає крізь шари ГИП, ОС, обчислювальної мережі й власних драйверів бази даних за допомогою загальних викликів. Для завершення операції сервер бази даних виконує запит і передає клієнтові зажадані дані для обробки їхньою програмою клієнта.
4. Функції сервера

Сервери баз даних займаються не тільки обслуговуванням даних. У них передбачені також механізми блокувань і елементи керування багатокористувацьким доступом, які забезпечують захист даних від небезпеки паралельного доступу. Крім цього, серверу баз даних доводиться обгороджувати дані від несанкціонованого доступу, оптимізувати запити до бази даних, забезпечувати кеширування й надавати місце для розміщення словника даних.
Дві інші важливі особливості, на які варто звернути увагу, - здатність сервера забезпечувати цілісність даних, що відсилаються і обопільний контроль завершення транзакції. Посилальна цілісність даних (referential integrity) - це механізм, що забезпечує кожному зовнішньому ключу відповідний первинний ключ. Обопільний контроль завершення транзакцій (two-phase commit) - гарантія того, що ваші дані не будуть ушкоджені навіть при апаратному збої.
За допомогою збережених процедур, тригерів і правил розроблювачі можуть скласти програму безпосередньо самого сервера баз даних і, таким чином, з'являється ще одне місце для розміщення логіки програми. Збережені процедури (stored procedures) - це група пропозицій мовою SQL і процедурна логіка, які розроблювачі можуть компілювати й зберігати на сервері баз даних як об'єктів.
Програми-Клієнти здатні виконувати збережені процедури, також як і інший вид збережених процедур або тригерів, шляхом посилки повідомлень серверу баз даних.
Тригери (triggers) - це збережені процедури, які активізуються автоматично, як тільки серверу баз даних зустрічається пов'язане з даними подія. Правило (rule) - це спеціальний тип тригера, який перевіряє дані до внесення їхнього в базу даних.
Більша частина наявних на даний момент збережених процедур, тригерів і правил має досить вузьку спеціалізацію й можливості, що відрізняються. SQL Server здатний запускати тільки один тригер дл операції вставки, у той час як Ca-openingres забезпечує роботу декількох тригерів. Більше того, розширення процедур SQL у різних виготовлювачів різні.
5. Java платформа


"Написано один раз, працює скрізь!" Технологія Java - це об'єктно-орієнтована, платформо- незалежна, багатопоточне середовище програмування. В Java не включені деякі рідко використовувані, погано розуміються й ускладнюючі роботу можливості С++, які приносять більше проблем, чому переваг. Довелося відмовитися від перевантаження операторів (але перевантаження методів в Java залишилася), множинного спадкування, автоматичного розширювального приведення типів.

5.1 Об'єктно-орієнтованість

Мова Java із самого початку проектував як об'єктно-орієнтований. Завданням розподілених систем клієнт- сервер відповідає об'єктно-орієнтована парадигма: використання концепцій інкапсуляції, спадкування й поліморфізму. Java надає ясну й діючу об'єктно-орієнтовану платформу розробки.

5.2 Надійність

Платформа Java розроблена для створення високонадійного прикладного програмного забезпечення. Велика увага приділена перевірці програм на етапі компіляції, за якою варто другий рівень - динамічна перевірка (на етапі виконання).
Модель керування пам'яттю гранично проста: об'єкти створюються за допомогою оператора new. В Java, на відміну від С++, механізм покажчиків виключає можливість прямого запису на згадку й псування даних: при роботі з покажчиками операції строго типізовані, відсутні арифметичні операції над покажчиками. Робота з масивами перебуває під контролем керуючої системи. Існує автоматичне складання сміття.
Дана модель керування пам'яттю виключає цілий клас помилок, що так часто виникають у програмістів на С и С++. Програми на Java можна писати, будучи впевненим у тому, що машина не "зависне" через помилки при роботі з динамічно виділеною пам'яттю.

5.3 Безпека

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

5.4 Незалежність від архітектури

Java розроблений для підтримки додатків, впроваджуваних у гетерогенні мережні середовища. У подібних середовищах додатка повинні виконуватися на різних апаратних архитектурах, під керуванням різних операційних систем і у взаємодії з інтерфейсами різних мов програмування.
Для забезпечення платформо- незалежності програм компілятор Java генерує байт- код - архітектурно-нейтральний проміжний формат програми, створюваний для ефективної передачі коду на різні апаратні й програмні платформи. При виконанні програми байт- код інтерпретується виконуючою машиною Java. Той самий Java- байткод буде виконуватися на будь-якій платформі.

5.5 Висока продуктивність

Продуктивність завжди заслуговує на особливу увагу. Java досягає високої продуктивності завдяки спеціально оптимізованому байт- коду, легко перекладному в машинний код. Автоматичне складання сміття виконується як фоновий потік з низьким пріоритетом, забезпечуючи високу ймовірність доступності необхідної пам'яті, що веде до збільшення продуктивності.
Додатки, що вимагають більших обчислювальних ресурсів, можуть бути спроектовані так, щоб ті частини, які вимагають інтенсивних обчислень, були написані мовою асемблера й взаємодіяли з Java- платформою. В основному, користувачі відчувають, що додатки взаємодіють швидко, незважаючи на те, що вони інтерпретуються.
6. CGI і Java технологи

За допомогою сервлетів можна витягати дані з баз даних. Пропонований підхід актуальний для широкого спектра завдань объектно–ориентированного дизайну для побудови объектно–ориентированных моделей, що забезпечують роботу з базами даних різних організацій.
Розглянемо різницю між CGI і Fast CGI технологіями й роботою Java based Web Server. Коли Web- сервер одержує CGI (Common Gateway Interface) - запит, йому потрібно запустити сторонню програму, дати можливість цій програмі виконатися й потім завершитися, і після цього повернути отриманий у результаті виконання текст в Web- Браузер. Ще більше ускладнює ситуацію те, що більшість сучасних Web- Додатків припускають наявність якоїсь подоби доступу до баз даних.
Щораз під час виконання CGI повинне створюватися нове звертання до бази даних, яке займає кілька секунд. Процес одержання відповіді від CGI скрипта зображено на рисунку 2.

CGI
Рисунок 2 - CGI

Час відпрацьовування скрипта часто порівнянне згодом створення нового процесу. Технологія Fastcgi дає 6-10 кратне збільшення продуктивності в порівнянні з CGI за рахунок того, що процес, що відробив, не віддаляється з пам'яті. Також в Fastcgi передбачені Api- Функції, за допомогою яких скрипт використовує може використовувати деякі ресурси сервера, що також підвищує продуктивність системи. Fastcgi зображено на рисунку 3.

FastCGI
Рисунок 3 - FastCGI

Сервлети є об'єктами, які утворюють специфічний інтерфейс, за допомогою якого їхнього можна вільно вбудовувати в Java- орієнтовані Web-сервера. На рис. 4. показана робота Java Web Server. Відзначимо многопоточность у єдиному процесі. Безліч сервлетів виконуються паралельно в рамках одного процесу на сервері й по своїй продуктивності перевершують як CGI, так і Fast-cgi додатка.

Servlet
Рисунок 4 - Servlet

Сервлетам немає необхідності перезавантажувати процес при кожному новому запиті, і це також підвищує їхня швидкодія.
Сервлеті стійкі, платформено незалежні, мають усі необхідні якості, включаючи захист даних, спрощений доступ до даних і полегшений спосіб інтеграції з Java- Аплетами. Сервлети, що є частиною пропонованого проекту, мають цілий ряд переваг у порівнянні з CGI – технологіями. Основні переваги сервлетов такі:
Незалежність від платформи. Сервлети можуть виконуватися на будь-якій платформі без необхідності рекомпіляції або модифікації. Скрипти на PERL теж можуть мігрувати із платформи на платформу, однак розширення для CGI і серверів, написані на мовах високого рівня типу С, не так рухливі.
Сервлеты завантажуються тільки один раз, у той час як програми CGI повинні завантажуватися у відповідь на кожний новий запит. Використовуваний у сервлетах метод init() дозволяє програмістові здійснювати ресурсопоглинаючі операції (типу з'єднання з базою даних) у момент завантаження й багаторазово використовувати їх при повторних звертаннях до сервлетам. Інакше кажучи, замість того щоб входити в базу й назад багаторазово, досить приєднатися до неї один раз.
Розширюваність. Java є стійким, добре продуманим і повністю об'єктно-орієнтованою мовою. Спеціалізовані бібліотеки Java, інструментальні засоби розробки й драйвери для роботи з базами даних постійно поповнюються й обновляються. Фактично, сервлети - це ключовий елемент для Java Server API (Application Programming Interface), який повинен працювати скрізь, починаючи з Web- Серверів і закінчуючи мережними комп'ютерами.
Сервлети часто використовуються при розробці Web- Додатків.
Застосування сервлетов дозволяє значно спростити процес динамічного формування вмісту Web- документів. Web –додаток являє собою сукупність наступних компонентів: Jаvа–сервлети, Java Server Page, бібліотека користувацьких дескрипторів, бібліотека класів Java, дескриптор доставки, статичні компоненти ( Html-Сторінки, зображення і т.д.), інші ресурси.
Для забезпечення роботи даних додатки підходить будь-який сервер, що підтримує ці компоненти. Якщо Wеb–додаток містить сервлети, JSP або бібліотеки користувацьких дескрипторів, то Web- сервер повинен бути постачений спеціальним контейнером, що підтримують дані компоненти. Це може бути або контейнер, спеціально орієнтований для роботи з Java- Сервлетами й JSP, або повнофункціональний сервер, призначений для забезпечення роботи J2EЕ-додатків, наприклад, Borland Enterprise Application Server
Одне з переваг використання мови Java для створення програм полягає в тому, що написаний і скомпільований код можна переносити з однієї платформи на іншу. В ідеальному випадку Web- додаток повинний являти собою автономну структуру, що містить усі необхідні файли й визначальні особливості доставки й виконання програмних компонентів.
Таким чином, переваги, властиві мові Java , переносяться на цілу платформу, що містить коректне подання інформації на різних серверах. Уміст Web- вузла й розміщених на них Web- додатків являє собою сполучення статичної, тобто не змінюваної із часом , інформації й динамічно формованих даних.
До Wеb–узлам пред'являються вимоги, що припускають формування інформації з урахуванням інтересів конкретних користувачів. Крім того, Web-Сторінки часто, наприклад, у нашім випадку, доводиться формувати на підставі інформації, що втримується в базах даних.
Висновок

У ході виконання роботи магістра по даній темі було отримане подання про архітектуру клієнт- сервер і про роль цієї технології.
Були виконані експериментальні наробітки клієнт- серверної системи, що базується на Java Servlet і Midlet технологіях. Виробляється передача контенту між клієнтом і сервером, що зв'язуються за допомогою GPRS.
У перспективі створення порталу, здатного приймати широкий різновид контентів, розширення клієнтської бази, адаптація однієї з існуючих БД для зберігання спеціалізованих типів інформації.
Я вважаю, що дана робота може бути використана як основа для подальшого вивчення технологій, об'єднаних концепцією веб-серверів.
Література

1. Н. Мухамедзянов, Java. Server applications, - Издательство: СОЛОН - Р, 2003

2. Роберт Орфалі, Ден Харкі, "JAVA and CORBA in client server applications"

3. Дуглас Камер, Девід Л. Стівенс, Сети TCP/IP, том 3. Разработка приложений типа клиент/сервер, издательство «Вильямс», 2002 г., 592 стр.

4. Фленов М. Є., Web-сервер глазами хакера: Проблемы безопасности Web-серверов; Ошибки в сценариях на PHP, Perl, ASP; SQL-инъекции

вгору
Для оформлении сайта использованы графические фрагменты из игры Winding Trail, что согласовано с её авторами