Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Проектирование информационных систем. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
формирования пользовательского интерфейса и клиентской функцио­нальности. По этой причине в последнее время сложился стереотип о том, что серьезные приложения (например, бизнес-приложения) – это, как правило, настольные приложения. Однако развитие веб-тех­нологий доказало обратное. Существует также ряд технологий, добав­ляющих интерактивности приложению за счет внедрения в браузер специальных модулей, которые
могут отображать специальные типы
файлов [7, 9].
Несмотря на то что существуют технологии, упрощающие создание динамичных веб-приложений, их разработка по-прежнему остается довольно трудоемкой задачей. Оба этих фактора существенно влияют на процесс разработки веб-приложений, из-за этого при построении любого веб-приложения приходится решать следующие типовые зада­чи: способы хранения
информации о пользователе, организация сеан­сов работы пользователя, способы перехода от страницы к странице, механизмы оптимизации эффективности (например, кеширование). При реализации каждого веб-приложения разработчику придется столкнуться с этими проблемами и решить их. Поскольку набор по­добных задач является достаточно стандартным и одинаково решается для большинства веб-приложений, то его реализация
вынесена в от­дельные технологии, которые называются технологиями для разработ­ки веб-приложений. К таким технологиям относятся PHP, Ruby on Rails и др. В них фактически содержатся все компоненты, необходимые для реализации веб-приложений и обеспечения их всеми необходимыми ресурсами.
Основное преимущество веб-приложений заключается в процессе развертывания приложения, т. е. установке приложения конечному клиенту. Если настольное приложение необходимо установить на каждое рабочее место, где оно будет использоваться, то веб-прило­жение нужно разместить на сервере и дать ссылку на него всем поль­зователям. Особенно актуален указанный аспект там, где имеется большое количество рабочих мест. Кроме того, в случае обновления программного кода веб-приложения также
имеют преимущество – для их обновления требуется только обновить код на сервере. При этом настольное приложение потребовалось бы обновлять на каждом рабочем месте.
51
4.2. ПРИНЦИПЫ РАБОТЫ ВЕБ-СЕРВЕРА
Основу функционирования веб-приложений составляет веб-сервер, представляющий собой программу, которая принимает входящие HTTP-запросы, обрабатывает эти запросы, генерирует HTTP-ответ и отправляет его клиенту. Общий алгоритм работы веб-сервера приве­ден на рис. 4.1, где серым цветом отмечены действия, которые обраба­тываются веб-сервером.
Рис. 4.1. Схема работы веб-сервера
После того как пользователь обратился к определенному ресурсу по протоколу HTTP, клиент (обычно браузер) формирует HTTP­запрос к веб-серверу. При этом обычно указывается символическое имя сервера, а браузер предварительно преобразует это имя в IP­адрес при помощи сервисов DNS. После этого по протоколу HTTP на веб-сервер отправляется сформированное HTTP­сообщении браузер указывает, какой ресурс необходимо загрузить, а также всю дополнительную информацию. Задача веб-сервера – про­слушивать определенный TCP-порт и принимать все входящие HTTP­сообщения. Если входящие данные не соответствуют формату сооб­щения HTTP, то такой запрос игнорируется, а клиенту возвращается сообщение об ошибке.
В простейшем случае при поступлении HTTP-запроса должен считать содержимое запрашиваемого файла с жесткого диска,
сообщение. В этом
веб-сервер
52
упаковать его содержимое в HTTP-ответ и отправить клиенту. В случае если требуемый файл не найден на жестком диске, веб-сервер сгенери­рует ошибку с указанием статусного кода 404 и отправит это сообще­ние клиенту. Такой вариант работы веб-сервера принято называть ста­тическими сайтами. В этом случае на стороне сервера не запускается никакой программный код, кроме программного кода самого веб­сервера. Однако подобные сценарии работы все чаще оказываются не­пригодными, а им на смену приходят полноценные веб-приложения. Отличие таких приложений состоит в том, что HTML-документы и другие ресурсы не хранятся на сервере в виде неизменяемых данных. Вместо этого на сервере хранится рировать требуемые данные в момент обработки запроса. Разумеется, некоторые ресурсы, такие как файлы каскадных стилей, изображения и другие, могут храниться как статическое содержимое, но основные страницы HTML генерируются в процессе обработки. В таком случае веб-сервер при обработке запроса HTTP должен обращаться к про­граммному коду, который сгенерирует содержимое веб-сервера приведен на рис. 4.2.
программный код, способный сгене-
. Алгоритм работы
Рис. 4.2. Алгоритм работы веб-сервера
53
К дополнительным функциям веб-сервера относятся следующие:
1) аутентификация и авторизация пользователей;
2) ведение серверного лога (для отладки работы веб-сервера);
3) поддержка нескольких веб-сайтов на одном сервере (виртуаль-
ный хостинг);
4) поддержка безопасных подключений по протоколу HTTPS.
Нередко на одном и том же веб-сервере располагается множество независимых веб-сайтов
. Более того, все эти веб-сайты используют один и тот же IP-адрес – т. е. веб-сервер, имеющий только один IP-ад­рес, может размещать внутри себя несколько веб-сайтов, и при этом каждый такой веб-сайт будет ассоциирован с собственным адресом. Такое явление называется виртуальным хостингом. Работа веб­сервера в данном
случае осуществляется следующим образом. Брау­зер отправляет HTTP-запрос на IP-адрес веб-сервера, который ассо­циирован с доменным именем. Разрешение IP-адреса происходит с помощью служб DNS. Однако несмотря на то что запрос отправля­ется с использованием полученного IP-адреса, клиент указывает до­полнительный HTTP-заголовок «Host», в котором определяется ори­гинальное имя веб-сайта. Благодаря этой
информации веб-сервер мо­жет разграничить доступ к нескольким веб-сайтам и при этом исполь­зовать один и тот же IP-адрес. Это очень важный момент, поскольку если бы для каждого доменного имени приходилось регистрировать отдельный IP-адрес, то адресное пространство протокола IP (v.4) очень быстро бы закончилось, а стоимость размещения веб-сайта в глобальной сети Интернет была бы намного выше.
Исторически сложилось так, что существует два главных типа ин­терфейсов взаимодействия внешнего приложения и веб-сервера – CGI и ISAPI.
CGI (Common Gateway Interface) – наиболее ранний способ взаи­модействия веб-сервера и веб-приложения. Основная идея, которая лежит в основе CGI, заключается в том, что при поступлении очеред­ного HTTP-запроса веб-
сервер инициирует создание нового процесса и передает ему все необходимые данные HTTP-запроса. После того как этот процесс отработает, он завершается, передав результат об­ратно веб-серверу. Поскольку веб-сервер и приложение – разные про­цессы с точки зрения операционной системы, то для обмена инфор-
54
мацией между ними используются средства межпроцессного взаимо­действия (IPC) – зачастую это переменные окружения, именованные каналы и др. Основным преимуществом CGI является то, что процес­сы веб-сервера и приложения изолированы друг от друга, и в случае неполадок в веб-приложении завершится с ошибкой именно процесс приложения, при этом процесс самого веб-сервера будет
продолжать функционировать. С другой стороны, необходимость создания каж­дый раз нового процесса влечет за собой дополнительные накладные расходы на создание процесса и передачу данных через границы про­цессов. Это является серьезным недостатком и оказывает существен­ное влияние на масштабируемость веб-приложения и его способность обрабатывать большее количество поступающих запросов.
ISAPI (Internet Server API) – альтернативный
способ взаимодей-
ствия веб-сервера и веб-приложения. В отличие от CGI при взаимо­действии в рамках интерфейса ISAPI с поступлением очередного за­проса веб-сервер инициирует создание нового потока в рамках ос­новного процесса, в котором работает веб-сервер. Поскольку с точки зрения операционной системы создание потока – это менее дорого­стоящая
операция, чем создание процесса, то такие приложения на практике оказываются более масштабируемыми. Кроме того, упроща­ется взаимодействие веб-сервера и веб-приложения, так как в этом случае используется единое адресное пространство в рамках опера­ционной системы (поскольку весь код работает в одном и том же про­цессе). Однако в случае серьезных
неполадок в веб-приложении, которое взаимодействует с веб-сервером в рамках ISAPI, веб-сервер также потенциально подвергается риску быть завершенным. По­скольку веб-сервер и веб-приложение работают в одном и том же процессе, это действительно так. Поэтому разработчикам программ­ного кода веб-сервера, поддерживающего ISAPI, следует уделить это­му вопросу особое
внимание.
На сегодняшний день наиболее распространенным способом вза­имодействия веб-сервера и веб-приложения является интерфейс ISAPI, поскольку он обеспечивает оптимальные показатели по накладным расходам и масштабируемости. Однако при работе не­скольких веб-приложений на одном и том же веб-сервере существует потенциальная опасность влияния одного приложения на другое. Для
55
того чтобы избежать подобной ситуации, используется совмещенный подход – для каждого приложения может создаваться пул приложения (application pool), представляющий собой отдельный процесс, в кото­ром функционируют потоки для обработки входящих HTTP-запросов от пользователей. В этом случае если какое-то из приложений будет содержать код, завершающий работу процесса с ошибкой, то будет завершаться процесс
только этого приложения.
Одной из наиболее важных задач, которые решаются при постро­ении веб-сервера, является задача обеспечения масштабируемости, т. е. возможности увеличения количества обслуживаемых пользовате­лей и защищенности от внешних атак. Поскольку веб-сервер работает в открытой среде – глобальной сети Интернет, – то зачастую доступ к нему может осуществляться откуда угодно
. Это делает веб-сервер подверженным большим нагрузкам и потенциальным атакам. Наибо­лее распространенными атаками на веб-сервер являются обращения к нему с большим количеством запросов и их высокой частотой. В этом случае веб-сервер не сможет быстро обрабатывать все запро­сы, и это может сказаться на его производительности для настоящих пользователей. Особенно остро подобным атакам подвержены веб­серверы, на которых исполняется какой-то внешний программный код помимо программного кода самого веб-сервера. Обычно для борьбы с подобными атаками блокируются все запросы, приходящие с опре­деленного IP-адреса. Кроме того, в подобных случаях следует позабо­титься об оптимизации программного кода приложения – например, использовать
кеширование. В этом случае при обработке каждого за­проса нагрузка на центральный процессор будет меньше, что может существенно усложнить задачу атакующим.
На сегодняшний день существует большое количество различных реализаций веб-серверов. Одним из наиболее популярных и универ­сальных веб-серверов является веб-сервер с открытым исходным ко­дом Apache. Он был
создан для работы в среде Linux, существует также его реализация для работы в рамках Microsoft Windows. На его основе были построены другие различные вариации, например Apache Tomcat для запуска веб-приложений на основе Java. Другим наиболее серьезным продуктом в этой области является веб-сервер
Microsoft Internet Information Services (IIS), который работает в рам-
56
ках операционной системы MS Windows. Как правило, в рамках этого веб-сервера работают приложения на базе ASP.NET (и родственных технологий), а также приложения PHP и статические веб-сайты. Наконец, существуют другие, менее масштабные проекты по разра­ботке веб-серверов, например Nginx. Этот проект был создан одним из разработчиков Rambler с целью оптимизации производительности данной поисковой системы. Впоследствии
проект оказался настолько удачным, что нашел применение и для работы в других приложениях. Обычно Nginx используют, когда необходимо построить высоко­нагруженную инфраструктуру.
4.3. ПОНЯТИЕ И ХАРАКТЕРИСТИКА ФРЕЙМВОРКОВ
Фреймворк – это платформа (каркас) для разработки информаци-
онных систем, веб-приложений и др.
Фреймворк – это программное обеспечение, облегчающее разра-
ботку и объединение разных компонентов большого
программного проекта. Данная платформа подходит для создания сайтов, бизнес­приложений и веб-сервисов.
Фреймворк отличается от библиотеки тем, что библиотека может быть использована в программном продукте просто как набор подси­стем близкой функциональности, но не влияет на архитектуру основ­ного программного продукта и не накладывает на нее никаких огра­ничений.
Фреймворк диктует правила построения архитектуры при­ложения, задавая на начальном этапе разработки поведение по умол­чанию и формируя каркас, который нужно будет расширять и изме­нять согласно указанным требованиям. Фреймворк может включать в себя вспомогательные программы, библиотеки кода, язык сценариев и другое программное обеспечение, облегчающее разработку и объ­единение разных компонентов
большого программного проекта.
Одним из главных преимуществ фреймворков является то, что информационная система и веб-приложения часто используют стан­дартизированную структуру организации компонентов. Создание структуры при разработке на фреймворках очень упрощается. По су­ти, фреймворк – это множество конкретных и абстрактных классов, а также определений способов их взаимоотношения. Конкретные
57
классы обычно реализуют взаимные отношения между классами, а абстрактные классы представляют собой точки расширения, в кото­рых каркасы могут быть использованы или адаптированы. Для обес­печения расширения возможностей обычно применяются техники объектно-ориентированного программирования (например, части приложения могут наследоваться от базовых классов фреймворка).
Любая конфигурация фреймворка состоит из двух частей:
постоянная часть – каркас, не меняющийся от конфигурации
1)
к конфигурации и несущий в себе гнезда, в которых размещается вто­рая, переменная часть;
2) сменные модули или точки расширения, настраиваемые под
конкретную задачу.
Каждый фреймворк привязан к конкретной технологии и (или) языку программирования.
К основным преимуществам фреймворков относятся следующие.
1. Разработка на
фреймворке, в отличие от «самописных» реше-
ний, позволяет добиться простоты сопровождения проекта.
2. Возможна и относительно проста реализация любых бизнес- процессов, а не только тех, которые изначально заложены в систему. Благодаря этому проекты на базе фреймворков легко масштабируемы и модернизируемы.
3. Решения на фреймворках, как правило, работают значительно быстрее и выдерживают
большую нагрузку, чем CMS и «самопис­ные» системы. Именно поэтому много популярных интернет-мага­зинов работают не на коробочных CMS, а на фреймворках. По уров­ню безопасности решения на фреймворках значительно превосходят «самописные» системы и сравнимы с CMS. На практике сайты на фреймворках даже безопаснее.
К недостаткам фреймворков относятся следующие.
1. Сроки разработки
типового функционала на фреймворках
больше, чем при использовании CMS. Фреймворки содержат только базовые компоненты бизнес-логики уровня приложения, поэтому многие функции реализуются индивидуально.
2. Для разработки на фреймворке требуется понимание бизнес-
процессов, которые необходимо реализовать. Например, если в CMS
58
уже есть некий предустановленный процесс обработки заказов, то фреймворки такого не предоставляют.
При разработке информационной системы особую значимость приобретает вопрос выбора базовой архитектуры разрабатываемого программного обеспечения. При этом классической ситуацией для большинства отечественных компаний на сегодняшний день является наличие разнообразного парка компьютеров с широким набором ис­пользуемых операционных систем и прикладного
программного
обеспечения.
Оптимальным подходом в таком случае представляется разработ­ка информационной системы на основе применения современных веб-технологий и клиент-серверной архитектуры. Веб-приложение представляет собой клиент-серверное приложение, в котором клиен­том выступает браузер, а сервером – веб-сервер. Логика веб-при­ложения распределена между сервером и клиентом, хранение данных осуществляется преимущественно на сервере, обмен информацией происходит по сети. Одно из преимуществ такого подхода состоит в том, что клиенты не зависят от конкретной операционной системы пользователя, поэтому веб-приложения являются кроссплатформен­ными сервисами.
При рассмотрении архитектуры веб-приложений следует обратить внимание на то, что они состоят из клиентской и серверной частей
,
тем самым реализуя технологию «клиент-сервер». Клиентская часть отвечает за пользовательский интерфейс, формирует запросы к серве­ру и обрабатывает ответы от него. Серверная часть получает запрос от клиента, выполняет вычисления, после этого формирует веб­страницу и отправляет ее клиенту по сети с использованием протоко­ла HTTP. Таким образом, само веб-приложение
может выступать в качестве клиента других служб, например базы данных или другого веб-приложения, расположенного на другом сервере.
Для разработки полноценных веб-приложений существует боль­шое количество современных механизмов, библиотек и языков про­граммирования. Причем популярный в конце 1990-х годов и первой половине 2000-х подход к разработке веб-приложения «с нуля
» сего­дня абсолютно не эффективен, поскольку сопряжен с большой веро­ятностью возникновения критических ошибок и с необходимостью
59
наличия высокой квалификации у основных разработчиков про­граммного обеспечения. Для реализации подобного ИТ-решения це­лесообразно использовать фреймворки. В последнее время для эф­фективного решения задач, связанных с разработкой веб-приложений, широкое применение получили веб-фреймворки. Это связано с тем, что данная технология позволяет использовать готовые универсаль­ные компоненты, сокращает дублирование
кода, упрощает отладку и повышает надежность готового программного продукта. В связи с этим на практике вопрос обоснованного выбора фреймворка приоб­ретает все большую актуальность.
Веб-фреймворк по сути представляет собой платформу, предна­значенную для создания сайтов и веб-приложений. Такая программ­ная среда позволяет облегчить разработку и интеграцию разных ком­понентов большого программного проекта в одно целое. Этот эффект достигается за счет возможностей реализации бизнес-логики и высо­кой производительности, в результате чего фреймворки прекрасно подходят для разработки сложных сайтов, бизнес-приложений и веб­сервисов.
Основные преимущества использования фреймворков можно раз­делить на две группы, одна из которых связана с их
экономической эффективностью, а другая – с их техническими особенностями. С точки зрения управления компанией разработка на фреймворке по­чти всегда экономически эффективнее и качественнее по результату, чем разработка проекта на чистом языке программирования без при­менения каких-либо платформ. Кроме того, если сравнивать фрейм­ворки с другими классами платформ, такими как SaaS, CMS
или CMF, то фреймворки значительно эффективнее использовать в проектах со сложной бизнес-логикой и с высокими требованиями к скорости ра­боты, надежности и безопасности. Одним из главных технических преимуществ при использовании фреймворков является то, что дан­ная платформа определяет унифицированную структуру для постро­енных на ее базе приложений. Поэтому приложения на фреймворках значительно проще сопровождать и дорабатывать, так как стандарти­зированная структура организации компонентов понятна всем разра­ботчикам на этой платформе и не требуется долго разбираться в архи­тектуре, чтобы понять принцип работы приложения или найти место реализации того или иного функционала.
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]