Проектирование корпоративного веб приложения, как и любого другого приложения, стоит начать с определения первоначальный целей и области решаемых задач. Создать реестр заинтересованных лиц.
На следующем этапе необходимо собрать требования к приложению, которое необходимо разработать. Уточнить цели и область решаемых задач и построить иерархическую структуру работ.
Рассмотрим отдельно задачу построения иерархической структуры работ. Каждое web-приложение можно представить в следующем виде:
Другими словами, каждое web-приложение отправляет http запросы на web-сервер для получения полезных данных. Программа под управлением web-сервера использует ту или иную модель для хранения данных. В современном мире чаще всего используются базы данных, SQL или NoSQL.
Формально каждое web-приложение можно разбить на 3 взаимно независимые части.
- Модуль, который исполняется WEB-браузером. Это приложение может быть написано на любом языке, который поддерживает браузер. Чаще всего используется язык JavaScript, как наиболее поддерживаемый и имеющий большую библиотечную поддержку. Это очень важно, так как позволяет существенно экономить бюджеты проектов.
- Модуль, исполняемый на серверной стороне под управлением web-сервера. Это приложение может быть написано на любом языке, интерпретацию которого поддерживает выбранный Вами web-сервер. Последнее время, часто, в качестве языка программирования выбирается язык Java. Этот язык также имеет серьезную библиотечную поддержку.
- База данных. В этой области так же существует достаточно широкий выбор. Есть промышленные базы данных, такие как Oracle, DB2, PostgreSQL. Есть легкие базы данных, такие как MySQL. База данных выбирается основываясь на целях и области решаемых задач.
Возможные эталонные модели проектирования web-приложений.
При построении архитектуры web — приложения необходимо максимально уменьшить зависимость между структурными единицами. В общем случае приложение состоит из трех структурных единиц.
- Модуль, который работает под управлением браузера.
- Модуль, который работает под управлением web-сервера.
- База данных.
Эти структурные единицы порождают два вида связей.
- Связь между браузером и серверной частью.
- Связь между серверной частью и базой данных.
Для достижения цели максимальной независимости между структурными единицами, необходимо чтобы каждая структурная единица оперировала только необходимым ей набором данных. Рассмотрим более подробно.
Браузер — это прикладное программное обеспечение для просмотра web страниц.
HTML – это стандартный язык разметки документов. Большинство современных web-браузеров способны интерпретировать язык HTML.
Web сервер — это программное обеспечение, которое способно принимать HTTP запросы от клиентов, обрабатывать их и отправлять ответ в соответствии со стандартом протокола.
База данных — это представленная в объективной форме совокупность самостоятельных материалов, систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью ЭВМ.(Wiki)
Минимизация зависимостей
Для минимизации зависимостей между «Браузером» и Web-сервером необходимо, чтобы язык разметки HTML был задействован только в браузере, а Web-сервер предоставлял интерфейс для получения необходимых данных для страницы.
Для решения этой задачи необходимо:
- Определить цели и область решаемых задач, которые будут решаться в рамках создаваемого интерфейса.
- Определить API серверной части.
- Выбрать протокол взаимодействия между серверной и клиентской частью. Создание протокола удобнее всего выбрать на базе XML, так как большинство современных браузеров имеют встроенную поддержку этого языка.
- Написать документ, в котором будет изложен протокол.
Наша диаграмма может быть преобразована в следующий вид:
Далее «Браузер» преобразуется в UML диаграммы состояний. На этих диаграммах будет отражено, в каком случае вызывается тот или иной метод.
Данная модель достижима двумя путями
- Программа выполняемая «Браузером» написана на JavaScript и общается с Web-Сервером через AJAX, получая ответы в соответствие с определенным протоколом.
- «Браузер» интерпретирует только HTML код, а преобразования происходят посредством XSLT преобразований на стороне Web-Сервера.
В каждом из этих случаев достигается разделение программной части Web-Сервера и «Браузера». Т.е используя данную модель возможно вносить изменения в структурную единицу для «Браузера» и не вызывать косвенных изменений в серверной части. Это очень важно, так как ведет к уменьшению затрат на обработку запросов на изменения. Это происходит в силу того, что изменения в одной структурной единицы не выходят за ее рамки.
Взаимодействие Web-Сервера и Базы данных
Взаимодействие базы данных и web-сервера возможно организовать на основании двух принципиально разных сценариях:
- Бизнес логика находится в базе данных.
- Бизнес логика находится в коде web-сервера.
В первом случае база данных хранит данные и предоставляет интерфейс доступа к данным:
- Выборка данных — решается через представления.
- Модификация данных — решается через хранимые процедуры.
Программа для web-сервера является драйвером для доступа к бизнес-логике. Т.е она просто связывает Браузер с бизнес логикой, которая реализована в базе данных.
Во втором случае база данных хранит данные, и предоставляет прямой доступ к данным. Бизнес-логика реализована в коде web-сервера. В этом случае база данных предоставляет транзакции для проведения атомарных операций.
Для минимизации зависимостей между Web-Сервером и Базой данных, необходимо, чтобы бизнес-логика была определена только в одном месте. Т.е либо в коде Web-Сервера, либо в Базе данных. Это очень важно, так как ведет к уменьшению затрат на обработку запросов на изменения. Это происходит в силу того, что изменения в одной структурной единицы не выходят за ее рамки.
Иерархическая структура работ
На основании изложенного выше материала иерархическая структура работ примет следующий вид:
- Модуль для «Браузера».
- Модуль для Web-Сервера.
- Модуль для Базы данных.
- Протокол обмена между модулем «Браузера» и Web-Сервером.
- Интерфейс взаимодействия между модулем «Браузера» и Web-Сервером.
- Интерфейс взаимодействия между Web-Сервером и Базой данных.
Автор: VLegostaev