Основи серверного програмування - підручник для вебмайстра з Macromedia Dreamweaver MX
Що? Яке ще серверне програмування? Що це за біда? І навіщо вона нам потрібна?
Ми начебто навчилися створювати Web-сторінки в середовищі Dreamweaver. Ми навіть навчилися створювати з його допомогою цілі Web-сайти та публікувати їх на Web-сервері. Ми вивчили два різновиди дизайну сторінок: кадровий, коли сайти будуються на основі наборів кадрів, та табличний, коли вміст сторінки міститься у велику складну таблицю. Ми познайомилися з таблицями стилів, метатегами та серверними директивами. І, нарешті, дізналися про Web-програмування та Web-сценарії, що дозволяють додати "життя" нашим статичним сторінкам. Що ще треба для щастя?
Так, раніше вивченого нам цілком вистачить, щоб створювати цілком пристойні сайти. Багато веб-дизайнерів на цьому і зупиняються. Але ж ми хочемо більшого, чи не так?
Тож давайте зробимо наступний крок — перейдемо від сторінок, що зберігаються у файлах на сервері, до сторінок, що генеруються спеціальними програмами. Саме написанням таких програм і займається серверне програмування.
Але давайте по порядку. І почнемо ми з того, що з'ясуємо, навіщо ці серверні програми потрібні.
Що таке серверне програмування
Справді, що це таке та з чим його їдять?
Навіщо потрібні серверні програми
Ви колись відвідували інтернет-магазин? Наприклад, найпопулярніший "Озон"(http://www.ozon.ru).Пам'ятаєте, як там виконується замовлення товару?
Якщо не пам'ятаєте чи взагалі не знаєте, що таке інтернет-магазин, давайте згадаємо (або дізнаємось).
Що при цьому відбувається? Як обробляються введені вами дані? Невже самим Web-браузером?
Не. Ці даніобробляються на Web-сервері.
Як це відбувається насправді? Нині ми це з'ясуємо. І насамперед відповімо на запитання.
Як Web-серверобробляє дані користувача
Отже, яким чином програма Web-сервера обробляє дані, відправлені їй користувачем?
Та ніяк. Web-сервер не пристосований їх обробляти. Його завдання: прийом від Web-браузера запиту на файли (Web-сторінки, таблиці стилів, графічні зображення, фільми, звуки, архіви, файли, що виконуються тощо), пошук цих самих файлів на жорстких дисках серверного комп'ютера і відправка знайдених файлів назад Web-браузеру. Це його основне завдання. Звичайно, деякі особливо потужні сервери можуть виконувати додаткові дії над файлами, що надсилаються перед власне їх відправкою (зокрема, виконувати серверні директиви). Є і програми-"багатоверстатники", що виконують функції не тільки Web-сервера, але і сервера FTP, пошти, новин UseNet і бог знає чого ще. Але основна функція: проста видача файлів за вимогами клієнтів -і не більше.
Секрет у тому, що дані відвідувача обробляються не самим Web-сервером. Для цього застосовуються спеціальні програми, що працюють разом із Web-сервером на тому самому серверному комп'ютері. Вони називаютьсясерверними програмами,не мають інтерфейсу користувача і "спілкуються" тільки з Web-сервером, приймають від нього введені користувачем дані та повертають йому результат. Цим вони докорінно відрізняються від клієнтських програм, що працюють безпосередньо з користувачем. (До клієнтських програм відноситься, зокрема, ваш улюблений Web-браузер.)
З цього випливає, що Web-сервер вміє прийняти дані від користувача. Так, це входить до його основного завдання: прийняти даніта перенаправити їх серверній програмі. У свою чергу, серверна програма їх обробить і поверне Web-серверу результат.
Ось тут і починається найцікавіше. Справа в тому, що результат, який повертається серверною програмою Web-серверу, - це не що інше, як звичайний HTML-код! Фактично серверна програма повертає готову Web-сторінку, сформовану з урахуванням даних, введених відвідувачем. Така сторінка називаєтьсядинамічної,на відміну відстатичнихсторінок, написаних Web-дизайнером і збережених у файлах на дисках серверного комп'ютера. А цю динамічну сторінку Web-сервер і направляє клієнту як відповідь на введені дані.
Серверні програми поділяються на чотири види.
Тепер розглянемо все це розмаїття докладніше.
CGI-програми являють собою звичайні файли, що виконуються, написані будь-якою мовою програмування і відкомпіловані в машинний код процесора. Вони не мають інтерфейсу користувача (як і всі серверні програми), а працюють з Web-сервером, отримують від нього вхідні дані і йому пересилають результати своєї роботи. Запускаються вони самим Web-сервером, коли вони виникає потреба (коли необхідно обробити отримані від користувача дані), і працюють під управлінням операційної системи серверного комп'ютера. При цьому, якщо Web-сервер надходить одночасно кілька запитів на обробку даних від користувачів, він запускає відповідну кількість копій CGI-програми.
Розширення Web-сервера - новий різновид серверних програм. Вони є звичайні бібліотеки DLL, у яких реалізована вся логіка серверної програми. Такі бібліотеки хіба що вбудовуються у програму Web-сервера і як її невід'ємна частина.Оскільки бібліотеки DLL працюють тільки в середовищі Windows, щоб створювати розширення в інших операційних системах, були придумані й інші формати. Зокрема, модулі розширення сервера Apache є бібліотеками DLL,
Саме як бібліотек DLL створюються розширення Web-серверів Internet Information Server фірми Microsoft і Netscape Web Server фірми Netscape. У першому випадку розширення мають форматISAPI(Internet Server Application Programming Interface - інтерфейс програмування програм інтернет-сервера), а в другому -NSAPI(Netscape Server Application Programming Interface - інтерфейс програмування програм сервер ^ Netscape). Формат модулів розширення Apache так і називається - модулі Apache.
Гідність у розширень Web-сервера одна: дбайлива витрата системних ресурсів. Справа в тому, що для обробки всіх наборів даних користувача запускається всього один екземпляр розширення, який забирає істотно менше ресурсів, ніж безліч запущених CGI-програм. Однак розширення важче створювати та налагоджувати, до того ж вони не такі безпечні.
Як CGI-програми. Оскільки вони працюють як частина Web-сервера, будь-яка помилка розширення призведе до зависання сервера.
Обидва описані вище види серверних програм мають один величезний недолік. Перш ніж вони зможуть працювати, вони повинні бути написані мовою програмування та відкомпільовані в машинні коди процесора, що забирає багато часу, особливо при налагодженні. Звичайно, відкомпільовані програми працюють швидше за інтерпретованих, тобто тих, де кожна інструкція читається, розшифровується і обробляється спеціальною програмою-інтерпретатором. Але в інтерпретованих програм є свої переваги, головними з яких є простота ішвидкість написання. Два наступні різновиди серверних програм, які будуть описані, якраз інтерпретуються.
Переваги активних серверних сторінок ви знаєте: легкість і швидкість написання і простота налагодження. Крім того, оскільки активні серверні сторінки - це звичайні Web-сторінки з "вкрапленнями" програмного коду, їх написання легко освоїть усі, хто знайомий з HTML. Недолік: відносна повільність та підвищені вимоги до системних ресурсів.
Переваги та недоліки серверних сценаріїв ті ж, що й у активних серверних сторінок. Однак сценарії споживають виключно багато системних ресурсів, навіть більше, ніж CGI-програми. Адже для обробки кожного набору даних користувача запускається своя копія інтерпретатора, а інтерпретатор у свою чергу витрачає багато ресурсів на обробку сценарію. І все-таки, незважаючи на це, сценарії — найпопулярніший спосіб створення серверних програм.
У табл. 15.1 наведено розширення файлів серверних програм.
Таблиця 15.1.Розширення файлів серверних програм