Web сървър

Web сървърът е програма, която използвайки модела клиент-сървър и протокола HTTP на World Wide Web, обслужва файловете, които формират Web страниците за Web потребителите (чиито компютри съдържат HTTP клиенти, които препращат заявките им).


Всеки компютър в Интернет, който предоставя Web сайт, трябва да има програма Web сървър. Най-популярните Web сървъри са Internet Information Server (IIS) на Microsoft, който излезе заедно с Windows NT сървър; FastTrack и Корпоративните (enterprise) сървъри на Netscape; и Apache, Web сървър за UNIX базираните операционни системи. Други Web сървъри включват Web сървъра на Novell за потребители с неговата операционна система – NetWare и IBM фамилията от Lotus Domino сървъри, основно за моделите на IBM OS/390 и AS/400.

Web сървърите често се появяват като част от по-голям пакет за Интернет- и интранет-свързаните програми за обслужване на e-mail, заявки за даунлоуд (download) чрез File Transfer Protocol (FTP) файлове, и за изграждане и публикуване на Web страници. Ще се спрем по-подробно на последното.

Ще фокусираме вниманието си върху разширяване функционалността на Web сървърите за достъп до база данни през Web. Методите, използвани в тази част , включват Общия шлюзов интерфейс - Common Gateway Interface (CGI), други шлюзови програми, като например Директиви за включване от сървърната страна - Server-side Includes (SSI) и Програмен Приложен Сървърен Интерфейс - Server Application Programing Interface (SAPI).

Новите типове документи, проектирани да позволят на потребителите да въвеждат информация в страница (като HTML контроли от вида на <INPUT>), създават необходимост от разработване на приложения, които могат да четат тази информация и да я използват. От друга страна доставянето на съдържание, извлечено от друго приложение, особено от някакъв тип база данни, изисква по-добро решение от пренаписване на текстово-базираните страници всеки път. Затова за Web сървърите стана нормална практика да излагат интерфейс, към който могат да се свързват други приложения. Чрез този интерфейс информацията, изпратена от клиента, може да се получава от други изпълними приложения. Тази информация може да включва подробности за заявката, направена чрез избиране на хипервръзка или въвеждане на URL адрес в браузъра. След това приложението може да дава отговор на клиента вътрешно, вместо да чете файл с текст и форматиращи елементи от диска на сървъра.

Ще изясним какво включва едно Web приложрние.

Markup езици

“Езикът за форматиране (markup language) e просто серия от елементи, всеки от които определен от специални знакове, наречени тагове и от правила, които ни помагат да придадем смисъл на части от документа.” (Homer, Sussman, Francis, Esposito…, Professional Active Server Pages 3.0) Таговете винаги започват с лява ъглова скоба (<) и завършват с дясна ъглова скоба (>). Името на тага се поставя между тези два знака. Обикновено, но не винаги, таговете вървят по двойки, като обграждат текста, който трябва да се форматира. Такива тагове се наричат обграждащи тагове., като първият от една двойка тагове се нарича начален (отварящ) таг, а вторият – завършващ (затварящ). Завършващият таг носи същото име като началния, с изключение на знака / (дясно наклонена черта), поставен веднага след знака <.

Другите тагове, познати като разделящи, не вървят по двойки и не притежават съответни на тях затварящи тагове. Чрез тях във форматирания текст се вмъкват елементи като нови редове, изображения и хоризонтални линии.

И в обграждащите, и в разделящите тагове се използват атрибути за определяне на свойствата на форматирания текст. Тези атрибути се включват в тага заедно със своите стойности (ако има такива). В двойките обграждащи тагове атрибутите и техните стойности се поставят в отварящия таг. Например хоризонтална линия с ширина 10 пиксела може да се зададе чрез следния таг:

<HR SIZE="10">

На тази основа е създаден езикът за форматиране на хипертекст, или HTML - HyperText Markup Language, който е универсалният език на Web, и се използва за създаване на Web страници. HTML е език за форматиране, базиран до голям степен на SGML (Standard Generalized Markup Language). /SGML е начин за описване на езици и сам по себе си не е език за създаване на страници./

HTML

В първите си версии езика за форматиране на хипертекст, проектиран за простота и имащ гъвкава структура, дава възможност за визуализиране на текст и графика в Web браузър или друго приложение с подходящи възможности. Определени части от документа могат да станат хипервръзки, които при избиране предизвикват визуализирането на друга страница или секция. След тези основи бяха добавени допълнителни възможности като езикът премина през няколко основни преработки. Всяка преработка добави нови тагове, които увеличават изразителната сила на езика. Например HTML 2 добави възможности за включване на формуляри в Web документите, a HTML 3.2 добави тагове за таблици и тагове, които поддържат използването на JavaScript и Java. HTML 4.0 добави поддръжка на международен текст, по-голяма достъпност, по-гъвкави таблици, възможности за отпечатване и по-сложни набори от стилове, механизми за скриптове и фреймове, вложени обекти, и подобрения във формите, предлагащи допълнителни възможности за хора с недъзи.

Нещото, което липсва на ранните страници, но е направен опит да присъства в следващите, е динамичното съдържание, но тогава това не е проблем, защото основната цел за разработването на HTML е визуализирането и предаването на информация между различни компютри, мрежи и операционни системи. Стандартизирането на документите като просто обикновен текст и форматиране, при което изображенията или другото нетекстово съдържание се съхраняваха в отделни файлове, означава, че те могат да бъдат свободно предавани в какъвто и да е тип мрежа. И понеже форматът на информацията в първите версии е фиксиран и "значението" на всеки елемент е дефинирано от HTML, относително лесно беше да се имплементира "четец", или браузърно приложение, на който и да е език за програмиране, на която и да е платформа или операционна система.

Последната известна версия на HTML, оповестена от компанията World Wide Web Consortium, е 4.01. Тя не съдържа генерални промени спрямо предната преработка, а изглажда някои от грешките, направени в нея. Поправени са и някои скриптове, за да се премахнат проблемите, които биха се появили при употребата на някои браузер.

Необходимостта от въвеждане на динамично съдържание в обикновените HTML документи, доведе до създаването на Dynamic HTML – DHTML.

DHTML

Трите компонента на Dynamic HTML са каскадните набори от стилове (Cascading Style Sheets, или CSS), позициониране на съдържанието (Content Positioning) и downloadable fonts. Използвани заедно тези три компонента дават голяма възможност за конпрол на изгледа, подреждането и определянето на поведението на web страници.

Kaскадни набори от стилове

Наборите от стилове – CSS - предлагат възможност за контролиране на начина, по който HTML елементите се разполагат и визуализират. Например чрез набори от стилове можете да контролирате цвета, шрифта и отстоянията между различните HTML елементи. Поддръжката на CSS е разработена от World Wide Web консорциума и е въведена в HTML 3.2; допълнителна CSS поддръжка е добавена след това в HTML 4. Определението каскадни се отнася до възможността да се използват множество нива на стилови набори в документа, като едно ниво на стил може да бъде използвано за дефиниране на друго.

Дефинирани са две нива на каскадни набори от стилове. CSS1 е прост механизъм за набори от стилове, който дава възможност за асоцииране на основни стилове (например шрифтове, цветове и отстояния) към HTML елементите. Tой е последица от развитието на HTML 3.2 и се поддържа от Internet Explorer 3x, Navigator 4x и останалите браузъри. CSS2 е построен върху CSS1 и добавя поддръжка на набори от стилове, специфични за различните медийни обекти; позициониране на съдържанието; шрифтове с възможност за сваляне; подредба на таблиците; интернационализация; автоматични броячи и номериране; и други възможности.

Позициониране на съдържанието

Използвайки JavaScript, можете да промените подреждането на една Web страница динамично, и можете да модифицирате страницата по много различни начини, след като един потребител се е обърнал към нея. Съдържанието може да изчезне или да се появи, цветовете на отделните части на страницата могат да се променят. Може да се включи анимацията в web страниците чрез движение или модификация на отделните части на една HTML страница. Ползвани заедно, позиционирането на съдържанието и каскадните набори от стилове, позволяват създаването на Web страници, които използват различни стилове в различни части на страницата.

Downloadable fonts

Downloadable font-овете се използват за прикрепяне на специфични фонтове към една Web страница. Като резултат, тази страница винаги ще бъде показвана с фонтовете, които сте избрали за нея. Вече не е необходимо използването на готовите фонтове за да направите страниците да изглеждат приблизително еднакво на различните платформи. Не се налага вече избиране на специални платформено-специфични фонтове, защото downloadable фонтовете могат да бъдат показани на всяка платформа.

Нека сега да направим едно отклонение от обикновените markup езици, за да разгледаме едно от вече поостарелите нововъведения в областта на Markup езиците – XML.

XML

Разширяемият език за форматиране, XML - eXtensible Markup Language, все по-често присъства в живота на програмистите. Той има свойството да пресича всякакви граници и вероятно е шансът за създаване на истински независим, междуплатформен език за обмен на данни. Той се възприема добре от всички участници в компютърната индустрия и вече е международен стандарт, контролира се от стандартизационен комитет, има широка поддръжка по целия свят и е много вероятно да се превърне в един от малкото приложими формати за дадена технология. Ето защо XML е един широко използван стандарт. Той е още доста добър за съхранение на данни, при това широко използван формат, така че е добре да се занимаем с него.

Форматирането на документ, както вече споменахме по-горе, е процесът на идентифициране на определени обекти от документа като притежаващи специфично значение. XML не е език в смисъла, в който са езици Visual Basic, или С++. По-скоро той представлява набор от правила, дефиниращи как да форматираме данни или документи.

Въпреки че и XML и HTML използват тагове, те се различават помежду си. Основната разлика е в това, че XML описва структурата на текста, а не външния му вид. Освен това XML няма фиксиран набор от тагове. Той е разработен с цел да достигне силата и гъвкавостта на SGML, като премахне голяма част от неговата сложност. Въпреки че XML е ограничена форма на SGML, той успява да запази голяма част от силата и богатството SGML, и едновременно с това да запази най-често използваните му възможности. Същевременно с това XML изчиства много от по-сложните черти на SGML, които правят разработването и проектирането на подходящ софтуер едновременно скъпо и трудно.

Това съвсем кратко описание на eXtensible Markup Language е необходимо за да направим следващата стъпка – комбинирането на силата на HTML 4.0 и мощта на XML, за създаването на следващата версия на HTML – XHTML 1.0.

XHTML

Extensible HyperText Markup Language – XHTML се основава изцяло на въведените подобрения в областта на markup езиците, и всъщност е преформулиране на HTML 4.01 в термините на XML. Той е първата радикална промяна на HTML от 1997година, когато HTML 4.0 беше пусната в употреба.

XHTML е “семейство” от настоящи и бъдещи типове документи и модули, които репродуцират, включват, и разширяват HTML 4. Типовете документи от семейството на XHTML се основават на XML, и са проектирани да работят заедно с XML-базираните потребителски агенти. XHTML 1.0 е първия тип документ от семейството на XHTML. Той е преформулиране на трите HTML 4 типа документи като приложения на XML 1.0. Намерението е той да се използва като език за съдържание, което е едновременно XML-приспособено, и като се следват някои елементарни граници, да оперира в HTML 4-приспособените потребителски агенти. Разработчиците, които преработят кода си в XHTML 1.0, биха могли да реализират код, притежаващ следните предимства:


Tъй като XHTML семейството включва документи, съответстващи на XHTML 1.0, ще бъде много по-естествено да се взаимодейства в и сред различни XHTML среди.

Семейството на XHTML е следващата стъпка в еволюцията на Интернет. Чрез мигриране към XHTML днес, разработчиците могат да въведат света на XML с всичките му съпровождащи подобрения, като същевременно остава сигурен в тяхната възвръщаемост в обратна посока и бъдеща съвместимост.

Разработчиците на документи и проектантите на потребителски агенти постоянно разкриват нови начини за изразяване на идеите им чрез нов markup. В XML, е пределно лесно да се представят нови елементи или допълнителни атрибути на елементи. XHTML семейството е проектирано да приспособява тези разширения чрез XHTML модули и техники за разработване на нови XHTML-приспособени модули. Тези модули ще позволят комбинацията на съществуващите и новите средства, при разработването на код и при проектирането на нови потребителски агенти.

Непрекъснато се представят алтернативни начини за достъп до Интернет. Някои статистики показват, че за 2002 година 75% от документите, видими в Интернет ще бъдат прокарани на тези алтернативни платформи. XHTML семейството е проектирано с възможност за генерално взаимодействие между потребителските агенти, предварително. Чрез нов потребителски агенит и документо-профилиращ механизъм, сървърите, прокситата, и потребителските агенти ще могат да представят най-добрите усилия за трансформация на съдържанието. Така ще стане възможно разработването на XHTML-приспособено съдържание, което може да се използва от всеки XHTML-приспособим потребителски агент.

За повече информация относно Markup езиците или каквато и да е справка по темата, препоръчвам: http://www.w3c.org/

Скриптови езици

Скриптовите езици са междинната платформа между HTML и програмните езици като Java, C++, и Visual Basic. Както вече беше обяснено, HTML като цяло се използва за форматиране и свързване на текст. Програмните езици се използват за създаване на серии от комплексни инструкции към компютрите. Скриптовите езици попадат някъде помежду, въпреки че функциите им повече приличат на програмните езици, отколкото на обикновени HTML документи. Основната разлика между скриптовите и програмните езици, е че синтаксиса и правилата на първите са много по-устойчиви и сложни отколкото тези при вторите такива.

HTML не може да интерпретира скриптовия език сам по себе си, но знае достатъчно за да извика интерпретатор на скриптов език, за да му го “преведе”. Това позволява на разработчика използвайки всички браузър-поддържани скриптови езици, да увеличи възможностите на Web страницата, като включи използване на бази данни, например. Със скриптовите езици като VBScript, ограниченията наложени от HTML изчезват, възможностите се ограничават само от самия скриптов език.

Въпреки че и други скриптови езици се опитват да се наложат, двата най-широко използвани скриптови езици, са JavaScript и VBScript. И двата езика могат да бъдат вложени в Web страница, и ако браузера ги поддържа, те осигуряват пътя към по-интелигентни, активни програми, които са част от тази страница.

JavaScript

Един от най-често използваните скриптови езици е JavaScript на Netscape. JavaScript e мощен език за програмиране за World Wide Web. Той не само осигурява възможност за разработване на истински интерактивни Web страници, но представлява и основното средство за интегриране на Java aплети, ActiveX контроли, plug-in модули за браузъри, сървърни скриптове и други Web обекти, позволявайки на разработчиците да създават разпределени приложения за работа в Интернет или в корпоративните интранет мрежи.

JavaScript поддържа изпълнение на скриптове както в Web браузъри, така и в Web сървъри. JavaScript е интерпретаторна разновидност на Java, което означава, че Web браузърът трябва да интерпретира и изпълнява всеки ред от скрипта. Браузърните скриптове се използват за създаване на динамични Web страници, които са по-интерактивни и по-силно интегрирани с plug-in модулите, ActiveX компонентите и Java аплетите. За тази цел JavaScript осигурява специални възможности за програмиране, като например способността за динамично генериране на HTML и за дефиниране на функции за обработка на събития.

JavaScript скриптовете се включват в HTML документите в HTML тагове <SCRIPT>. Когато един браузър, поддържащ JavaScript, зарежда HTML документ със скриптове, той обработва скриптовете по реда на постъпването им. Скриптовете могат да бъдат използвани за създаване на HTML елементи, които се добавят към визуализирания документ, или за дефиниране на функции (наречени функции за обработка на събития), които реагират на действия от страна на потребителя, като щракване с мишката или въвеждане от клавиатурата. Скриптовете могат да се използват също и за контролиране на plug-in модулите, ActiveX компонентите и Java аплетите.

От страната на сървъра, JavaScript се използва за по-лесно разработване на скриптове, които обработват данни от формуляри, изпълняват търсене в бази данни и имплементират специфични Web приложения. Скриптовете, изпълнявани на сървъра, са по-тясно интегрирани с Web сървъра, отколкото CGI програмите. По този начин, JavaScript предоставя един от най-често използваните интерфейси за свързване с бази данни през Web.

Visual Basic Script

Visual Basic Script, е базиран на Visual Basic - силно ориентирана към Windows версия на Microsoft на езика за програмиране BASIC, но се използва по аналогичен начин на JavaScript. Обаче докато разновидността на Java се използва в създаването на JSP - Java Server Pages, VBScript се използва за приложенията, разработени от Microsoft, ASP – Active Server Pages. И двата вида сървърни страници – ASP и JSP са обект на разглеждане в главата Web Application сървър.

Предназначението и на Visual Basic и на JavaScript е съществено да се разшири HTML за създаване на по-динамични Web страници, но доколко е постижимо това ще зависи от по-новите браузъри на двете компании, тъй като по-старите бяха написани още преди появяването на тези инструменти. Като се възползват от предимствата на конкретната платформа, тези инструменти могат да се изпълняват по-бързо и да правят повече неща от един общ пакет, предназначен за всички платформи. Но ако ги използвате, вашият сайт няма да бъде достъпен за всички посетители, тъй като не всеки притежава хардуера или софтуера, за който те са предназначени. Някои посетители няма дори да са в състояние да визуализират графика. Но всички те трябва да бъде взети под внимание при създаването на сайта. Както и JavaScript, така и Visual Basic Script-а се използва и от сървърната и от браузърната страна, но понеже в тази глава разглеждаме отделните компоненти на Web сървър, а интегрирането на приложения с бази данни през Web, е обект на разглеждане на следващата глава, ще приключим с общия преглед на този скриптов език дотук.

До този момент вниманието ни беше съсредоточено в по-голямата си част към Web сървъра като браузър. За да изпълним основната цел на настоящата дипломна работа, обаче, е необходимо да преминем към следващия компонент на Web сървъра – интерфейса, осигуряващ връзката между Web сървъра и сървъра за приложения (Web Application сървър). Един от начините за осъществяването й е използването на CGI.

СGI програми

“CGI (Common Gateway Interface - общ шлюзов интерфейс) е стандарт, който определя начина, по който Web сървърите могат да използват външни програми. Програмите, които съблюдават CGI стандарта, се наричат CGI програми.” (Perl, CGI & JavaScript - SYBEX) Те могат да се използват за обработване на данни, подадени от формуляри, за търсене в бази данни и за поддържане на други видове Web приложения. Малко по-долу ще се спрем по-основно на първата и последната възможност.

Заявката за URL адреса на дадена CGI програма се получава след като потребителят избере хипервръзка или подаде формуляр. За да направи заявката, браузърът използва HTTP. Когато Web сървърът я получи, той изпълнява CGI програмата и, като й предава изпратените от браузъра данни. Когато CGI програмата извърши обработката им, обикновено тя генерира данни под формата на Web страница, която връща на браузъра чрез Web сървъра.



Стандартът CGI определя начина, по който CGI програмите обменят данни с Web сървъра. Таблицата по-долу резюмира тези интерфейси.

TABLICA 4

Какво е всъщност CGI ?

CGI е начинът, по който понятието CGI се прилага и интерпретира в спецификацията HTTP. Той е най-често използваният метод за изпращане на информацията от документите към програма, която извършва нейната обработка. CGI не се интересува от браузъра, който използва, дори неграфичен софтуер от типа на Lynx ще свърши работа.

За разлика от Java и неговите братовчеди Visual Basic Script, JavaScript, CGI не е език за програмиране, нито се зарежда за изпълнение в компютъра на посетителя, а е интерфейс, или набор от правила. Той работи в компютъра на Web сървъра, като осигурява начин за комуникация за изпращане на данните от Web страницата към програма, която извършва тяхната обработка на сървъра. CGI позволява да пишете програми, които получават входните си данни от HTML документ (страница в World Wide Web) и извършват някаква обработка над тях, на всякакъв език. А след това CGI изпраща изходните данни на програмата пак към Web сървъра. Ако изходните данни са правилно форматирани, сървърът ще ги изпрати като HTML документ към браузъра, който е осъществил конекция с него.



CGI като понятие се прилага за много системи, различни от връзките между Web сървъри и приложни програми. Например той би могъл да осигурява ясен и почти универсален интерфейс за сървъри на бази данни и техни клиенти, като чрез него се избягват бариерите, които производителите поставят в своите системи.

"Общият шлюз" от една система към друга осигурява стандарт, към който производителите на софтуер трябва да се придържат; ако не се съобразяват с него, никой няма да купува приложенията им.

CGI: движещата сила зад Web

Ако HTML създава облика на World Wide Web, то CGI го прави функционален. CGI е общ шлюз за Web сървъра и други приложения. Той се използва от сървъра, но не е част от него. CGI е единственият начин, по който Web сървърът може да комуникира с други приложения, като например бази данни. Извън HTTP сървърите не съществува поддръжка за CGI. С други.думи, CGI работи единствено с HTTP сървъри. И ако трябва с една графика да обясним какво точно прави CGI, то следващата е най-подходяща за целта:


Общ шлюз

На технически език шлюзът, е интерфейс (или приложение), който позволява на две системи да разменят информация помежду си.

Web сървърът не знае какво е например Perl, но чрез механизма на CGI той може да обработва заявки от "клиентите" (посетителите на сайта) и да връща резултат.

Тъй като сървърът единствено предава информация, използвайки някакъв набор от правила, той не се интересува от средствата, с които се обработва информацията. Функциите са изцяло независими една от друга. Следователно е възможно написването на CGI програми на всеки език за програмиране. Единственото изискване е информацията, която се изпраща като резултат, да бъде форматирана по начин, който сървърът разпознава.

Езици за CGI програмиране

Няма никакви изисквания или предпочитания към езика, на който трябва да бъде написано CGI приложението. Да изследваме накратко предимствата и недостатъците на някои от най-широко използваните езици.

C, C++

И в последно време са най-популярните езици за разработване на приложения и системи.

Предимства


Недостатъци

Visual Basic

Visual Basic е основното средство, което Microsoft предоставя за разработване на прости Windows приложения

Предимства


Недостатъци

Езици на шела

Скриптовете на шела, включи- телно файловете за пакетна обработка и командните файлове в MS-DOS, Windows 95/98 и NT, лесно се изпол-зват и лесно се създават.

Предимства


Недостатъци

CGI методи на Microsoft и Netscape

Струва си да споменем CGI методите ActiveX на Microsoft и JavaScript на Netscape. Това определено са много мощни инструменти. Тъй като те се възползват напълно от предимствата на конкретните хардуерни/софтуерни платформи, на които работят, тези пакети са естествено по-бързи и много по-ефективни от "традиционния" CGI софтуер.

В края на краищата, не може да става дума за сравнение между програма, която работи според строго наложени правила основно в най-високото ниво на операционната система, и програма, която е в състояние да използва дори най-дълбоко заложените функции на операционната система.

Целта на CGI, обаче е да позволява на колкото се може повече хора, с колкото се може по-разнообразни машини, да станат част от общността, а не да се придържа към конкретна хардуерна или софтуерна платформа.

Създаване на CGI програма

CGI програмата се изпълнява на сървърната машина, като взаимодейства и с Web браузъра, и с Web сървъра.

CGI програмите могат да създават динамични Web страници, които се изграждат в отговор на заявка на потребителя. CGI програмите могат да бъдат явни (каквото е например едно приложение за пазаруване) или напълно скрити (като записват и предоставят данни, но никога не създават дори ред HTML код).

Общият шлюзов интерфейс е общ между клиента и сървъра, като това обикновено са Web браузърът и Web сървърът. Всички Web сървъри и Web клиенти комуникират чрез заявки и отговори, в които включват HTTP хедъри.

CGI действа като шлюз между Web клиента и Web сървъра. Шлюзовата програма действа като мост между Web клиента и Web сървъра, като интерпретира и отговаря на заявките на Web клиента.

Без шлюзова програма Web сървърът трябваше да отговаря на Unix заявките, като връща нединамични, или статични, Web страници. Шлюзовата програма съдейства на Web сървъра за връщането на динамично генерирани Web страници в отговор на заявките от Web клиента.

CGI действа като интерфейс между Web сървъра и други приложения на сървърната машина. Интерфейсните програми разбират изискваните от Web сървъра интерфейсни HTTP протоколи и могат да действат като интерфейс между Web сървъра и други компютърни приложения.

Експортирането на бази данни е често срещана CGI задача. CGI програмата не изпълнява действителните задачи за управление на базата данни, а вместо това действа като интерфейсна програма, като преобразува идващите заявки за данни в коректния синтаксис за Microsoft Access, Microsoft SQL Server, Oracle или други големи приложения за бази данни. Когато базата данни отговори на заявката интерфейсната програма превежда отговора в коректния формат за предаване към Web сървъра, който от своя страна изпраща тези данни към Web клиента. Експортирането на бази данни и e-mail са две от по-големите интерфейсни приложения на CGI програмирането.

CGI програмата е част от комуникацията между Web клиента и Web сървъра, а от своя страна тази комуникация е ключов елемент в интерфейсния модел клиент/сървър, който разгледахме по-рано.

SAPI – Server Application Programming Interface

Метода за разширяване функционалността на Web сървърите за достъп до база данни през Web, прибавя към HTTP сървър интерфейс, познат като Server Application Programing Interface (SAPI). Той съдържа динамична свързана библиотека (Dynamic-Linkable Library-DLL), която се състои от изпълними рутини, изисквани от взаимодействието с различни наследствено информационни системи. DLL подрежда функциите по същия начин както Gateway програмите, но за разлика от външните програми, тези рутини се зареждат в същия адрес, като местоположение, където и сървъра. Ето защо това е минималното допълнение, асоциирано с изпълнението им , все едно няма допълнителна цена за създаване на процес за всяка заявка. Оттук нататък, само активните функции ще останат в паметта, докато сървъра динамично променя неактивните такива, за да се освободят ресурси на системата. Като резултат, сървърното представяне може да бъде подобрено.

Друга особеност на SAPI е че позволява създаване на предварителен процес за заявки и следващ такъв за отговори., като това разрешава сайт-специфично поддържане на HTTP заявки и отговори. SAPI филтрите могат да бъдат използвани за приложения като например създаване на поръчка за автентичност, достъп или логване. NSAPI (Netscape Server Application Programing Interface) и Microsoft ISAPI (Internet Information Server Application Programing Interface) са два примера за този метод.

Ще разгледаме малко по-подробно втория, по-често използван Server Application Programing Interface – на Microsoft – ISAPI.

ISAPI

Традиционната техника за създаване на динамични страници, които ще бъдат обект на разглеждане в следващата част, е чрез интерфейс към Web сървъра, като разгледания по-горе от Common Gateway Interface, CGI (Общия шлюзов интерфейс). За да се даде възможност на изпълнимите програми, написани на компилаторен език като С или С++, да работят по-ефективно, Microsoft създадоха интерфейс, малко по различен от CGI. Това е Internet Server Application Programming Interface, ISAPI, който предоставя много по-широк достъп до Web сървъра, отколкото простите функции stdin и stdout, от които зависят традиционните интерпретаторни машини, като Perl и много други технологии.

ISAPI може да се използва за изпълнение на други приложения и тези приложения могат да четат стойностите от клиентската заявка и да създават отговора на Web сървъра чрез поточните функции в стил "С" stdin и stdout. Всичко, което ISAPI приложенията трябва да направят, е да запишат текста и HTML кода, които съставят резултатната страница, в изходните данни на Web сървъра чрез функцията stdout. Всъщност това е нещото, което DLL библиотеките на сървърните страници /като например ASP и JSP/ прави скрито по един по-обектноориентиран начин.

SSI (Server-Side Include) директиви

Kонструкциите /директиви/ за включване от сървърната страна - Server Side Includes (SSI) - е друга алтернатива за свързване на бази данни с Web. Това е един по-ограничен начин от SAPI, разгледан по-горе, за достъп до заявката и отговора на сървъра. SSI съдържат специална последователност от символи (знаци), вложени в HTML документ. Преди документа да бъде изпратен от Web сървъра до клиента, направил заявката, най-напред той се сканира от сървъра за тези специални знаци. Когато бъде намерен един точно определен знак, сървъра интерпретира инструкциите от знака и извършва съответното действие. Данните, които са получени в резултат на извличането на информация от базата данни, след това се слепват в HTML документ, и се изпращат на клиента. Тази възможност е имплементирана например в Internet Information Server (IIS) чрез DLL библиотека, наречена ssinc.dll. В тази библиотека SSI конструкциите се обработват и резултатът (ако има такъв) се вмъква в отговора на сървъра, а оттук и в страницата, която клиентът получава. Една от спънките на това проучване е че полученият резултат е ограничен в един единствен документ с всичките данни в него, a да се парсват документите от сървъра могат да струват скъпо, особено в случай на по-трудно зареждане. Затова освен ако не решим да създаваме свои-собствени изпълними файлове, които се изпълняват на Web сървъра и имат достъп до ISAPI чрез функциите stdin и stdout, няма голям смисъл да се използват конструкциите за включване от сървърната страна, или директивите, както са по-известни (SSI). Ако все пак се употребяват, това всъщност означава да пишем SSI на С, C++ или може би друг език от типа на Delphi. Visual Basic не е подходящ за тази цел. Също така почти всички неща, които можем да правим с SSI инструкциите, могат да бъдат постигнати почти еднакво добре от ASP например. В много случаи SSI възможностите на IIS съществуват за обратна съвместимост с по-стари Web сайтове и Web страници, които ги използват.

Все пак може да има моменти, в които да искаме да използваме SSI вместо (или освен) сървърни страници, особено като начин за изпълнение на команди на операционната система или наследени CGI приложения.

След като обяснихме ролята на двата основни компонента, включени в изграждането на Web приложение с достъп до база данни, е време да спрем вниманието си на последната, много важна подобласт – сървъра за приложения в Web (Web Application сървър).