Файл: Учебнопрактическое пособие Владимир 2021.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 759

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
4.2. Средства для проектирования и разработки серверного
программного обеспечения
Виды серверных программ
Серверные программы делятся на следующие четыре вида.

235

Исполняемые программы, работающие через интерфейс
CGI (Common Gateway Interface — общий интерфейс обмена), так называемые CGI-npoграммы. Эта разновидность серверных программ
— самая старая, однако отнюдь не устаревшая.

Расширения Web-сервера (приложения формата ISAPI,
NSAPI, модули расширения Apache и т. п.). Новый способ, позволя- ющий встраивать серверные программы в сам Web-сервер, делая их его составными частями. Впервые предложен фирмой Microsoft для их сервера Microsoft Internet Information Server (интерфейс ISAPI) и разработчиками популярного бесплатного Web-сервера Apache.

Активные серверные страницы (ASP, JSP и др.). Фактиче- ски это обычные статические Webстраницы, сохраненные в файлах,
Которые, кроме обычного HTML-кода, включают в себя команды, обрабатываемые либо самим Web-сервером, либо его расширением.
Также новый способ, впервые предложенный Microsoft для того же
Internet Information Server.

Серверные сценарии, написанные на интерпретируемом языке (Perl, Python, VBScript, JavaScript и др.). Обычные сценарии, работающие через интерфейс CGI или ISAPI на стороне сервера.
Описание серверных программ, работающих через интерфейс
CGI.
CGI-программы представляют собой обычные исполняемые файлы, написанные на любом языке программирования и откомпили- рованные в машинный код процессора. Они не имеют интерфейса пользователя (как и все серверные программы), а работают с Web- сервером, получают от него входные данные и ему же пересылают результаты своей работы. Запускаются они самим Web-сервером, ко- гда в них возникает нужда (когда необходимо обработать полученные от пользователя данные), и работают под управлением операционной системы серверного компьютера. При этом, если Web-серверу посту- пает одновременно несколько запросов на обработку данных от поль-

236 зователей, он запускает соответствующее количество копий CGI- программы.
К достоинствам CGI-программ можно отнести легкость созда- ния (многие среды разработки программ поддерживают создание та- ких приложений, в частности популярнейший Borland Delphi, начиная с версии 3) и простоту отладки. Также, поскольку CGI-приложения представляют собой независимые программы, они выполняются от- дельно от Web-сервера (как говорят программисты и системные ад- министраторы, выполняются в другом адресном пространстве). Это значит, что при сбое в CGI-программе завершается только она — сам
Web-сервер остается "на плаву". А недостаток у CGI-программ всего один: большой расход системных ресурсов, поскольку для обработки каждого набора данных запускается отдельная копия серверной про- граммы. И если Web-серверу поступит слишком много запросов на обработку данных, серверный компьютер может и зависнуть.
Web-сервера.
Расширения 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 — интер-


237 фейс программирования приложений сервер: Netscape). Формат мо- дулей расширения Apache так и называется — модули Apache.
Достоинство у расширений Web-сервера одно: бережный расход системных ресурсов. Дело в том, что для обработки всех наборов данных пользователя запускается всего один экземпляр расширения, который отнимает существенно меньше ресурсов, чем уйма запущен- ных CGI-программ. Однако расширения труднее создавать и отлажи- вать, к тому же они не так безопасны. Как CGI-программы. Посколь- ку они работают как часть Web-сервера, любая ошибка в расширении приведет к зависанию сервера.
Оба описанных выше вида серверных программ обладают од- ним огромным недостатком. Прежде чем они смогут работать, они должны быть написаны на языке программирования и откомпилиро- ваны в машинные коды процессора, что отнимает много времени, особенно при отладке. Конечно, откомпилированные программы ра- ботают быстрее интерпретируемых, т. е. тех, где каждая инструкция читается, расшифровывается и обрабатывается специальной про- граммойинтерпретатором. Но у интерпретируемых программ есть и свои преимущества, главными из которых являются простота и быст- рота написания. Две следующие разновидности серверных программ, которые будут описаны, как раз будут интерпретируемыми.
Активные серверные страницы (ASP, JSP).
Как уже говорилось, активные серверные страницы — это обычные Web-страницы, включающие в себя особые серверные сце- нарии, выполняемые самим Web-сервером или специальной сервер- ной программой (CGI-приложением или расширением Web-сервера).
В частности, ASP (Active Server Pages — активные серверные страни- цы), поддерживаемые Microsoft Internet
Information Server, и JSP (Java Server Pages — серверные стра- ницы, написанные на JavaScript), поддерживаемые рядом других
Web-серверов, работают именно таким образом. Серверные страницы

238
ASP пишутся на языках JavaScript и VBScript, a JSP — только на
JavaScript.
Достоинства активных серверных страниц вы уже знаете: лег- кость и быстрота написания и простота отладки. Кроме того, по- скольку активные серверные страницы -- это обычные Web-страницы с "вкраплениями" программного кода, их написание легко освоят все, кто знаком с HTML. Недостаток: относительная медлительность и повышенные требования к системным ресурсам.
Серверные сценарии.
Серверные сценарии подобны активным серверным страницам тем, что являются интерпретируемыми, однако представляют собой "чистый" программный код, без HTML ''примесей". Интерпретатор практически всегда представляет собой CGI-программу, однако ничто не мешает разработать его в виде расширения Web-сервера. Сценарии обычно пишутся на языке программирования Perl, специально пред- назначенном для обработки текста; также используются языки Python,
JavaScript, VBScript и даже (как говорят) язык командных файлов MS-
DOS. Фактически писать сценарии можно на любом языке програм- мирования, для которого есть интерпретатор.
Достоинства и недостатки серверных сценариев те же, что у ак- тивных серверных страниц. Однако сценарии потребляют исключи- тельно много системных ресурсов, даже больше, чем CGI- приложения. Ведь для обработки каждого набора данных пользовате- ля запускается своя копия интерпретатора, а интерпретатор, в свою очередь, расходует много ресурсов на обработку сценария. И все же, несмотря на это, сценарии — самый популярный способ создания серверных программ.
Способы передачи данных по сети.
На самом обобщенном уровне сеть - это система, которая позво- ляет производить обмен информацией.


239
Компьютерные сети можно классифицировать по ряду призна- ков, например:
I) по территориальной распространенности:
Локальные (ЛВС) - охватывающие ограниченную территорию
(обычно в пределах удаленности станций не более чем на несколько десятков или сотен метров друг от друга).
Корпоративные (масштаба предприятия) - совокупность связан- ных между собой ЛВС, охватывающих территорию, на которой раз- мещено одно предприятие или учреждение в одном или нескольких близко расположенных зданиях.
Территориальные - охватывающие значительное географиче- ское пространство; среди территориальных сетей можно выделить се- ти региональные и глобальные, имеющие соответственно региональ- ные или глобальные масштабы.
II)
По топологии (Общая схема соединения компьютеров в локальной сети называется топологией сети). Топологии сети могут быть различными, среди них выделяют три базовые:
Шинная (bus) - все сетевые компьютеры подключаются через определенные промежутки к магистральной линии и данные, переда- ваемые любой станцией, одновременно становятся доступными для всех других станций;
Кольцевая (ring) - узлы связаны кольцевой линией передачи данных один за другим, при этом данные передаются по проводу в одном направлении;
Звездная (star) - имеется центральный узел, от которого расхо- дятся линии передачи данных к каждому из остальных узлов. Ника- кие конфликты в сети с топологией звезда в принципе не возможны, потому что управление полностью централизовано.
III) по способу управления. В зависимости от способа управ- ления различают сети:
"клиент/сервер" - в них выделяется один или несколько узлов
(их название - серверы, которые работают под управлением сервер- ной ОС), выполняющих в сети управляющие или специальные об-

240 служивающие функции, а остальные узлы (клиенты) являются терми- нальными, в них работают пользователи; одноранговые - в них все узлы равноправны, то есть пользова- тели самостоятельно решают, какие ресурсы своего компьютера (дис- ки, каталоги, файлы) сделать общедоступными по сети. Основным недостатком таких сетей является слабая защищенность информации от несанкционированного доступа;
Обмен информацией производится по каналам передачи инфор- мации. Компьютеры могут обмениваться информацией с использова- нием каналов связи различной физической природы: кабельных, оптоволоконных, радиоканалов, инфракрасного диапазона э/м излу- чения.
Общая схема передачи информации включает в себя отправите- ля информации, канал передачи информации и получателя информа- ции. Если производится двусторонний обмен информацией, то отпра- витель и получатель информации могут меняться ролями. Основной характеристикой каналов передачи информации является их пропуск- ная способность (скорость передачи информации). Пропускная спо- собность канала равна количеству информации, которое может пере- даваться по нему в единицу времени.
4.3. Принцип построения и работы распределенного приложения
Шаблоны проектирования распределенных приложений.
При распределении ответственности и разработке способов вза- имодействия объектов разработчику предоставляется достаточная свобода действий. Неудачный выбор метода распределения может привести к тому, что системы и их отдельные компоненты окажутся непригодными для поддержки, понимания, повторного использования и резервирования. Неудачи можно избежать, если при распределении ответственности применять принципы объектно-ориентированного проектирования. Некоторые из этих принципов систематизированы в шаблонах GRASP и применяются при разработке диаграмм взаимо-


241 действия, то есть при распределении ответственности между объек- тами и разработке способов их взаимодействия.
В объектно-ориентированном проектировании шаблоном назы- вают описание проблемы по распределению ответственности и ее ре- шения. Результат решения проблемы это операции назначенные объ- екту для выполнения успешного (а в общем случае требуемого) сце- нария взаимодействия. В идеале шаблон должен содержать советы по поводу его применения в различных ситуациях. С этой точки зрения шаблоны являются основным механизмом для накопления и повтор- ного использования полезных принципов разработки программного обеспечения.
Шаблон MVC (Model-View-Controller)
Шаблон проектирования Model-View-Controller (далее просто
MVC) использован в основе архитектурного решения первой среды программирования с графическим интерфейсом пользователя –
Smalltalk-80. Согласно шаблону при проектировании следует разде- лять данные приложения, пользовательский интерфейс и управляю- щую логику на три отдельных компонента: модель, представление и контроллер – таким образом, что модификация одного из компонен- тов оказывает минимальное воздействие на остальные. Модель
(Model) предоставляет данные предметной области представлению и реагирует на команды контроллера, изменяя свое состояние. Пред- ставление (View) отвечает за отображение данных предметной обла- сти пользователю, реагируя на изменения модели. Контроллер
(Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений.
Шаблон Expert
Шаблон Expert, как указывалось выше, может быть представлен описанием проблемы распределения ответственности и описанием ее решения.

242
Проблема: каков наиболее общий принцип распределения от- ветственности между объектами при объектно-ориентированном про- ектировании?
Решение: назначить ответственность информационному экспер- ту – классу, у которого имеется информация, требуемая для выполне- ния ответственности. При распределении ответственности шаблон
Expert используется гораздо чаще любого другого шаблона. В нем определены основные принципы, которые давно используются в объ- ектно-ориентированном проектировании. Шаблон не содержит неяс- ных или запутанных идей и отражает обычный интуитивно понятный подход. Он заключается в том, что объекты выполняют действия, свя- занные с имеющейся у них информацией.
Программирование клиентского уровня: HTML, Java, Jscript,
CSS.
Как следует из названия, клиентские языки обрабатываются на стороне клиента пользователя, а если проще - программы на клиент- ском языке обрабатывает браузер. Отсюда следует и недостаток – это то, что обработка скрипта зависит от браузера пользователя, и поль- зователь имеет полномочия настроить свой браузер так, чтобы он во- обще игнорировал написанные вами скрипты. При этом, если браузер старый, он может не поддерживать тот или иной язык или версию языка, на которую вы опираетесь. С современными браузерами таких проблем возникать не должно, к тому же языки программирования не так уж часто кардинально обновляются (раз в несколько лет) и луч- шие из них давно известны. Также код клиентского скрипта может посмотреть каждый, выбрав в меню “Вид” своего браузера вкладку
“Исходный код” (или что-то в этом роде).
Преимущество же клиентского языка заключается в том, что обработка скриптов на таком языке может выполняться без отправки документа на сервер. Это легче объяснить на примере: допустим, вам надо проверить правильно ли пользователь ввел e-mail (т.е., напри- мер, проверить в нем наличие “@”); чтобы это сделать пользователю,


243 надо было бы отправить форму с заполненными данными, потом до- ждаться, пока она обработается, и лишь после этого получить сооб- щение об ошибке (если она, разумеется, присутствует). Процесс слишком долгий. С клиентским же языком программа сразу проверит правильное заполнение формы перед отправкой, и, если необходимо, выведет ошибку. Отсюда же вытекает и то ограничение, что с помо- щью клиентского языка программирования ничто не может быть за- писано на сервер, то есть, например, с его помощью нельзя сделать гостевую книгу, потому что тогда надо записывать сообщения в ка- кой-либо файл на сервере.
Самым распространенным из клиентских языков является
JavaScript, разработчиками которого является компания Netscape
(www.netscape.com) совместно с компанией SunMicrosystems
(www.sun.com). Другой вариант клиентского языка это, например,
VisualBasicScript (VBS).
Программирование серверного уровня: C++, PHP, Python, Perl,
Ruby, JSP, ASP.Net.
Серверные языки программирования соответственно работают на стороне сервера. Во взаимодействии с базами данных они поддер- живают связь между пользователем и сервером. Получая запрос с ад- ресом веб-документа от браузера, серверные программы связываются с базой данных. БД отдаёт информацию о веб-странице скриптам сер- вера, и те обработав её, отсылают для интерпретации браузеру клиен- та, который и выводит результат совместной работы на монитор. До- стоинством серверных языков является их воистину безграничные возможности и то, что их работа не подвержена воздействию пользо- вателей и скрыта от их взоров. Недостаток — зависимость от про- граммного обеспечения хостера. Так же к недостаткам можно отнести и сложность освоения новичками серверных языков программирова- ния.
Наиболее распространённые серверные языки программирова- ния: C++, Perl, Java, Php, Python.

244
Глава 5. ТЕХНОЛОГИЯ ПОСТРОЕНИЯ РАСПРЕДЕЛЕННЫХ
ИНФОРМАЦИОННЫХ СИСТЕМ
5.1. Технология COM/DCOM
Технология COM в настоящее время широко применяется при разработке программного обеспечения, интеграции программных продуктов в единые информационные системы. Целью разработки
COM-технологии являлось стремление к интеграции программного обеспечения через стандартизацию механизмов взаимодействия про- граммных модулей между собой. На основе данной технологии, кото- рая является масштабируемой, разработано огромное число техноло- гий, которые стали стандартами в разнообразных сферах применения информационных технологий – от управления технологическими процессами в промышленности до домашних персональных компью- теров. Массовое применение COM отчасти связано с мощью ее разра- ботчика, фирмы Microsoft. С этим приходится считаться, и каждый программный продукт, выпущенный под платформу Windows, для достижения коммерческого успеха обязан соответствовать инноваци- ям Microsoft.
Технология COM (Component Object Technology) – объектно- ориентированная программная спецификация, предложенная
Microsoft. COM предназначена для повышения надежности взаимо- действия программных продуктов между собой. Данная технология не определяет структуру программного продукта, язык программиро- вания и прочие детали реализации. COM является стандартом, кото- рый регламентирует модель программного объекта, соответствующий требованиям COM-технологии. Программный объект, созданный со- гласно спецификации COM называется COM-объектом. Данная тех- нология определяет механизм взаимодействия COM-объектов между собой. COM относится к так называемым двоичным стандартам, т.к. прилагается к оттранслированному в двоичный код программному объекту. Взаимодействие COM-объектов обеспечивается набором предопределенных подпрограмм, называемыми интерфейсами, до-

Смотрите также файлы