Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ободяк 3 курс / РСтаМ-том1-2011.docx
Скачиваний:
128
Добавлен:
19.04.2015
Размер:
8.73 Mб
Скачать
    1. Базові технології представлення інформації в розподілених системах

      1. Вимоги до прикладних програм серверної сторони

При розгляді платформ для створення прикладних програм серверної сторони необхідно виділити два основних існуючі підходи:

  • безпосередня обробка запитів і формування відповідей;

  • вбудовування програмного коду в шаблони HTML сторінок.

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

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

Крім різного підходу до генерації сторінок платформи розробки в різному ступені задовольняють сучасним вимогам, що висуваються при створенні складних Web-систем. Найбільш важливі з цих вимог, наявність яких робить систему привабливою для використання, наведені нижче:

  • платформну незалежність;

  • мова реалізації;

  • продуктивність, масштабованість;

  • можливості розширення й інтеграції;

  • простота використання, наявність засобів розробки;

  • наявність необхідних програмних бібліотек.

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

      1. Огляд базових технологій

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

Платформи розглядаються з точки зору побудови на них складних гетерогенних Web-систем, тому деякі з популярних технологій не наводяться в детальному огляді з причини неможливості або недоцільності їх використання в якості базової платформи. Наприклад, технологія ISAPI та інші розширення Web-серверів, не підходять для застосування внаслідок прив'язки до конкретного Web-сервера. Нижче наводяться тільки основні технології, потенційно придатні для створення складних гетерогенних Web-систем.

Технологія Common Gateway Interface

Технологія Common Gateway Interface (CGI), відрізняється від інших розглянутих технологій тим, що є найбільш низькорівневої і є стандартом інтерфейсу, який служить для зв'язку зовнішньої програми з web-сервером.

Сам протокол розроблений таким чином, щоб можна було використовувати будь-яку мову програмування, який може працювати зі стандартними пристроями введення/виводу. Оскільки така можливість є на рівні операційної системи, то, якщо не потрібен складний скрипт, його можна оформити у вигляді командного файлу.

Розглянемо основні переваги та недоліки технології CGI за виділеними критеріями:

  • CGI не накладає особливих умов на платформу і web-сервер, тому працює на всіх популярних платформах і web-серверах. Також технологія не прив'язана до конкретної мови програмування і може бути використана на будь-якій мові, що працює зі стандартними потоками вводу / виводу;

  • продуктивність CGI – програм не висока. Основною причиною цього є те, що при черговому зверненні до сервера для роботи CGI – програми створюється окремий процес, що вимагає великої кількості системних ресурсів;

  • вбудованих засобів масштабованості технологія не передбачає, про це розробникам доводиться піклуватися окремо;

  • CGI – програма представляє з себе готовий до виконання файл, що перешкоджає легкому розширенню системи.

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

Технологія Personal Home Page

Технологія Personal Home Page (PHP) отримала дуже широке розповсюдження завдяки своїй безкоштовності і підтримки самих популярних платформ. Вона базується на принципі побудови сторінок з шаблонів, що вперше з'явився в Active Server Pages, але розвиває і доповнює його. Сторінки РНР мають вигляд звичайних HTML сторінок, в яких можуть використовуватися спеціальні теги виду <? Php і?>. Між тегами вставляються рядка програмного коду на спеціальній мові сценаріїв РНР.

Принцип шаблонів дозволив розробникам писати програми набагато швидше і без помилок, властивих традиційним CGI-програмам, що видає HTML вміст в потік виводу. На сьогоднішній день діапазон систем, побудованих на шаблонах простирається від простих сторінок з вибірками з бази даних до великих прикладних програм електронної комерції, заснованих на XML. Шаблонні системи користуються великою популярністю серед розробників, оскільки найбільш підходять для типових сайтів. Такі рішення включають ColdFusion, PHP, JSP і ASP, з яких РНР є найбільш поширеною.

Розглянемо основні переваги та недоліки платформи:

  • застосовувана в РНР мова проста і зручна, однак не є в повному розумінні об'єктно-орієнтованою;

  • для РНР існують великі бібліотеки, а також маса вбудованих функцій для вирішення найрізноманітніших завдань;

  • при використанні РНР з Web-сервером Apache є можливість ефективного виконання ядра, як розширення сервера. В інших випадках продуктивність платформи невисока;

  • власних коштів масштабування РНР не має, всі можливості по кластеризації цілком лягають на Web-сервер та розробників;

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

  • шаблонний підхід РНР, при всіх великих можливостях, приховує серйозні недоліки.

Із загальних недоліків цього підходу, застосовних як до РНР, так і ASP, JSP необхідно виділити наступні:

  • файл-сторінку може підтримувати тільки людина, що добре володіє як програмуванням, так і HTML, що вимагає підвищеної кваліфікації;

  • один файл, в конкретний момент часу, може правити тільки одна людина. Це означає, що працює або програміст, або дизайнер. Тобто спостерігається неможливість поділу праці там, де вона потенційно можлива;

  • зберігання бізнес логіки у файлах ­– сторінках в розподіленому по керуючим елементам вигляді призводить до утруднення її винесення в об'єкти другого рівня.

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

Технологія Java Servlets

Технологія Java Servlets (сервлети) була розроблена компанією Sun Microsystems, щоб використовувати переваги платформи Java для вирішення проблем технології CGI і API розширень сервера. Технологія вирішує проблему продуктивності, виконуючи всі запити як нитки в одному процесі. Сервлети також можуть легко розділяти ресурси, і не залежать від платформи, оскільки виконуються всередині Java Virtual Machine (JVM).

Технологія має широкі функціональні можливості. Велика кількість бібліотек надає найрізноманітніші засоби, необхідні в розробці. Модель безпеки Java робить можливим точне управління рівнем доступу, наприклад дозволяючи доступ тільки до певної частини файлової системи. Обробка винятків Java робить сервлети більш надійним засобом, ніж розширення серверів на C/C#.

Будь-який сервлет є класом Java, і, тому, повинен бути виконаний усередині Java VM так званим сервлет-контейнером (servlet container, servlet engine). Сервлет-контейнерзавантажує клас сервлета при першому зверненні до нього, або відразу при запуску сервера при спеціальному вказівці. Далі сервлет залишається завантаженим для обробки запитів, поки він не вивантажується явним чином, або до зупинки контейнера.

Технологія є поширеною, і може бути використана з усіма популярними Web-серверами (Enterprise Server від Netscape, Microsoft Internet Information Server (IIS), Apache, Java Web-сервер від Sun).

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

Оскільки сервлети обробляються в одному процесі з допомогою створення потоків всередині нього, програмний код сервлетов повинен бути потоці - безпечним. Це накладає певну відповідальність на програміста, але за допомогою стандартних прийомів, таких як відмова від використання полів у класах сервлетів, і зберігання необхідних даних в контексті або зовнішньому сховище такі властивості коду легко досягаються. При цьому сервлети набувають таке неоціненне перевагу як масштабованість.

Отже, сервлети забезпечують компонентний, платформо-незалежний метод для побудови web-прикладних програм без обмежень продуктивності CGI програм. Вони мають широкий діапазон доступних прикладних API, дозволяють використовувати всі переваги Java, легко розширюються і масштабуються, підтримуються всіма популярними Web-серверами. Все це робить їх відмінним засобом розробки великих Web-систем.

Технологія Java Server Pages

Технологія Java Server Pages (JSP) від компанії Sun Microsystems стала надбудовою над технологією Java Servlets, що забезпечує більш швидку і просту розробку web-прикладних програм за допомогою застосування шаблонів підходу.

Для розуміння архітектури і переваг JSP необхідно знати технологію Java Servlets, оскільки вони тісно пов'язані. Сторінки Java Server Pages представляють із себе шаблони сторінок HTML, схожі з шаблонами РНР і ASP. Основною відмінністю від інших подібних технологій є те, що код, що знаходиться всередині спеціальних тегів не інтерпретується при зверненні до сторінки, а попередньо компілюється в Java Servlet. Статичні ділянки шаблону перетворюються на виклики до функцій для їх приміщення в потік виводу. Код компілюється так, як якщо б він знаходився усередині сервлета. Компіляція JSP сторінок в сервлети є трудомісткою, але проводиться один раз - або при першому зверненні до сторінки, або при запуску сервлет-контейнера.

Технологія JSP вдало поєднує шаблонний підхід до побудови сайтів і всі переваги Java платформи. Завдяки цьому технологія одержала широке поширення як серед професійних комерційних розробників, так і при створенні відкритих безкоштовних проектів. Важливим кроком до розширення шаблонного підходу стали так звані бібліотеки тегів (tag libraries). Це гнучка можливість інтегрувати стандартні, сторонні, або власні програмні компоненти в сторінки. Простота створення та використання призвели до великої популярності бібліотек тегів.

Завдяки роботі на основі Java технологія JSP не прив'язана до конкретної апаратної або програмній платформі. Таким чином JSP є відмінним рішенням для використання в гетерогенних середовищах.

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

Основними перевагами JSP є простота розробки, характерна для шаблонів підходу, наявність великої кількості сторонніх бібліотек, легкість їх використання, потужні і різноманітні середовища розробки. Завдяки всім цим факторам JSP є найбільш перспективною базовою технологією розробки при створенні Web-сайтів. Однак при створенні складних Web-систем обмеження, що накладаються шаблонним підходом стають серйозною перешкодою до розвитку.

Технологія Microsoft. NET і середовище ASP. NET

Технологія. NET є новітньою розробкою компанії Microsoft і заявлена як новий етап у розвитку засобів взаємодії між прикладними програмами. На даний момент вона доступна в якості доповнення. NET Framework до сімейства операційних систем Microsoft Windows, а також у новому продукті Windows Server 2003. Також ведуться роботи зі створення. NET Framework на інших операційних системах. Платформа. NET спрощує розробку прикладних програм і підвищує надійність коду. Зокрема, вона забезпечує автоматичне керування часом життя об'єктів, нейтральні до мов бібліотеки класів та перетинають кордони мов спадкування, обробку виключень і налагодження.

Основа. NET - Common Language Runtime (загальна середовище виконання мов) спирається на системні служби операційної системи і управляє виконанням коду, написаного на будь-якому сучасній мові програмування. Набір базових класів дає доступ до сервісів платформи, які розробники можуть використовувати з будь-якої мови програмування. Common Language Runtime і базові класи разом складають основу. NET платформи. NET пропонує також високорівневі сервіси:

  • ADO. NET – нове покоління ADO, яке використовує XML і SOAP для обміну даними;

  • ASP. NET – нова версія ASP, що дозволяє використовувати будь-який (. NET сумісний) мова для програмування Web-сторінок;

  • Windows Forms і Web Forms – набір класів для побудови користувацького інтерфейсу локальних і Web-орієнтовані прикладних програм.

Розгортання систем на платформі. NET здійснюється особливим чином. Вихідні коди компілюються не в команди процесора х86 або інші машинні коди. Замість цього компілятор створює код на Проміжному Мові Microsoft (Microsoft intermediate language – MSIL). Файл, що містить MSIL, може виконуватися на платформі будь-якого процесора, якщо операційна система, надає. NET CLR.

Важливою складовою частиною платформи. NET є нове середовище ASP.NET (раніше використовувалося назву ASP). Можливості ASP.NET настільки великі, що її важко назвати наступною версією ASP. В її основі лежить інша платформа, і основними мовами програмування для неї обрані С# і Visual Basic, замість колишніх скриптінг мов. У той же час, нова технологія дозволяє писати ASP сторінки на будь-якому відповідному мовою.

У ASP.NET закладено все, для того, щоб зробити весь цикл розробки web-орієнтовані програми більш швидким, а підтримку простіше. Нижче наведені основні можливості та принципи роботи ASP.NET.

  • компілювання коду при першому зверненні;

  • широкий вибір бібліотек компонентів, що поставляються з. NET;

  • підтримка потужного засобу розробки - Visual Studio. NET;

  • мовна незалежність у межах платформ для яких реалізована загальна мовне середовище виконання CLR;

  • можливості розширення за допомогою мультипроцесорних і кластерних рішень;

  • нові можливості з обробки помилок;

  • об'єктно-орієнтовані мови розробки (нову мову С #);

  • розширені можливості повторного використання компонент.

Очевидно, що платформа. NET і ASP.NET надали нові можливості по розробці Web-систем. Вони відповідають всім сучасним вимогам і дозволяють значно прискорити і спростити розробку складних прикладних програм. Однак, на даний момент,. NET в повному обсязі існує тільки для платформи Windows. Розробки по перенесенню на інші системи ведуться, але ще не завершені і їхні майбутні результати важко оцінити. Що стосується розробки сайтів, то ASP.NET сильно прив'язана до сервера IIS, і, хоча архітектура. NET дозволяє перенести прикладну програму ASP.NET на іншу платформу, на даний момент реальна можливість відсутня. Таким чином найважливіше - багатоплатформність поки що не може бути задоволено платформою. NET, а значить її використання для такої системи поки не виправдано. Однак необхідно відзначити, що така система повинна мати можливості інтеграції з платформою. NET (особливо Web-сервіси), оскільки її майбутнє широке використання не викликає сумнівів.

Порівняння технологій

Отже, в попередньому матеріалі було розглянуто найбільш популярні базові технології побудови прикладних програм серверної сторони. З розглянутого можна виділити такі основні підходи до архітектури серверних прикладних програм:

  • окреме виконання запитів. При кожному запиті динамічного вмісту, запускається окрема програма для обробки запитів. Програма генерує вміст, що передається клієнтові. Цей підхід використовується в класичних CGI-скриптах;

  • накопичення виконуваних процесів. Підхід аналогічний попередньому, але при цьому якщо запит виконується повторно, нового запуску програми не відбувається, а обробка передається існуючого процесу. Даний підхід застосовується в технологіях Java Servlets, Fast CGI;

  • шаблони сторінок. При запиті шаблони заповнюються динамічним вмістом, звичайно, але необов'язково, створюваним інтерпретується мовою сценаріїв. Підхід застосовується в технологіях ASP, JSP, PHP;

  • розширення Web-сервера. Web-сервер звертається до особливих розширень для обробки динамічного змісту. Розширення специфічні для Web-сервера. Цей підхід використовується в IS API, NSAPI, mod_perl.

Кожен із зазначених підходів має свої можливості і обмеження, і, відповідно, свою область застосування. Модель окремого виконання запитів істотно обмежує продуктивність. Варіант накопичення процесів є розвитком цієї технології, підвищує продуктивність, при цьому зберігаючи максимальну гнучкість розробки. Шаблонний підхід надзвичайно зручний при розробці невеликих систем, однак при збільшенні складності він починає гальмувати процес розробки і не є підходящим для великих систем. Він також відрізняється невисокою продуктивністю, хоча дослідження показують, що в певних умовах можуть демонструвати досить високі показники і конкурувати з підходом 2. Розширення Web-сервера не є найзручнішим засобом розробки, жорстко прив'язують систему до певного Web-сервера, але демонструють максимальну продуктивність і дають найбільшу гнучкість у розробці.

Розглянемо платформи по вимогам, визначеним раніше. CGI не входить в огляд, оскільки є незручною у використанні, і що має низьку ефективність, а розширення серверів занадто сильно прив'язані до конкретних програмних продуктів. За схемою обробки запитів платформи розподіляються наступним чином:

  • РНР - шаблони. При виконанні на Web-сервер Apache інтерпретатор може бути розширенням сервера (в експериментальному режимі IIS);

  • Java Servlets – накопичення процесів для кожного сервлета;

  • JSP - шаблони. При обробці виконується їх предкомпіляція в Java Servlets, дозволяючи використовувати схему накопичення процесів;

  • ASP.NET - шаблони. Використовується схема попередньої компіляції, а не інтерпретації коду. У результаті використовується розширення Web-сервера IIS. Можуть використовуватися і низькорівневі обробники.

Основні оціночні характеристики платформ порівняємо у зведеній таблиці, де "-" – повна відсутність підтримки, "-/+" – недостатня підтримка, "+/-" – підтримка не в повному обсязі, і "+" – повна підтримка. Для порівняльних характеристик, таких як мова реалізації або продуктивність, оцінки відповідають ступеню переваги технології.

Соседние файлы в папке Ободяк 3 курс