2.3. Выбор архитектуры
Для выбора архитектуры системы был сделан сравнительный анализ трех вариантов построения архитектур:
-
сервер приложения, клиент – пользовательское приложение (desktop application);
-
сервер приложения, клиент – интернет-браузер;
-
сервер приложения, rich-клиент, обменивающиеся данными по бинарному протоколу.
Сервер приложения, клиент – пользовательское приложение. На рис. 1 представлена схема обмена данными между таким клиентом и сервером:
Рис. 1. Архитектура сервер приложений – пользовательское приложение
Рассмотрим основные достоинства и недостатки данной архитектуры.
Достоинства:
-
большое дисковое пространство для хранения данных;
-
интеграция с другими программами ПК;
-
высокая скорость обработки данных.[13]
Недостатки:
-
хранение данных на локальной машине, что затрудняет получения данных с другого компьютера;
-
необходимость инсталляции специального ПО.
Сервер приложения, клиент – браузер. На рис. 2 представлена схема обмена данными между таким клиентом и сервером:
Рис. 2. Архитектура сервер приложения – браузер
Рассмотрим основные достоинства и недостатки данной архитектуры.
Достоинства:
-
предоставление дополнительной функциональности;
-
не требуют инсталляции;
-
независимость от платформы;
-
автоматическое обновление версий;
-
наличие интерфейса для мобильных телефонов.
Недостатком данных систем является сложность в обеспечении безопасности. [12]
Сервер приложений, rich-клиент. На рис. 3 представлена схема обмена данными между таким клиентом и сервером:
Рис. 3. Архитектура приложение на сервере – rich-клиент
Рассмотрим основные достоинства и недостатки данной архитектуры.
Достоинства:
-
сочетание достоинств предыдущих описанных архитектур;
-
упрощение отладки и развертывания конкретного приложения;
-
обеспечения безопасности;
-
передача данных для мультимедийных приложений.
Основным недостатком данного способа является большой объем данных при кодировании с помощью шестибитного кода (Base-64).[14]
На основе анализа архитектур построения системы была выбрана архитектура сервер приложений – браузер, обладающая наибольшим числом достоинств.
2.4. Выбор технологии разработки
Для решения поставленной задачи рассмотрим сравнительный анализ следующих платформ: Java EE, C# .NET, PHP, QT. Данные платформы и языки были рассмотрены с нескольких точек зрения: наличия документации, удобство работы с почтой и СУБД, кросс-платформенность и др. Результаты сравнительного анализа представлены в табл. 2:
Табл.2. Сравнительный анализ технологий
для выбора решения поставленной задачи
Платформы
|
Наличие подробной документации
|
Удобство работы с СУБД
|
Кросс-платформенность
|
Масштабируемость
|
PHP
|
+
|
+
|
+
|
-
|
C# .NET
|
+
|
+
|
-
|
+
|
Java EE
|
+
|
+
|
+
|
+
|
QT
|
+/-
|
+
|
+
|
+
|
Из таблицы видно, что для решения поставленной задачи лучше всего подходит Java EE, так как данная технология обладает наибольшим количеством достоинств для решения поставленной задачи. Немало важную роль в выборе технологии сыграл предыдущий опыт разработки на Java EE, что позволило сократить общее время разработки дипломного проекта, так как не потребовало дополнительного времени для освоения ряда используемых в дипломном проекте технологий.
Рассмотрим описание Java EE более подробно.
Java Platform, Enterprise Edition, сокращенно Java EE (до версии 5.0 — Java 2 Enterprise Edition или J2EE) — набор спецификаций и соответствующей документации для языка Java, описывающей архитектуру серверной платформы для задач средних и крупных предприятий.
Спецификации детализированы настолько, чтобы обеспечить переносимость программ c одной реализации платформы на другую. Основная цель спецификаций — обеспечить масштабируемость приложений и целостность данных во время работы системы. J2EE во многом ориентирована на использование её как в интернете, так и в локальных сетях. Вся спецификация создаётся и утверждается через JCP (Java Community Process) в рамках инициативы Sun Microsystems Inc.
J2EE является промышленной технологией и в основном используется в высокопроизводительных проектах, в которых необходима надежность, масштабируемость, гибкость.
Популярности J2EE также способствует то, что Sun предлагает бесплатный комплект разработки, SDK, позволяющий предприятиям разрабатывать свои системы, не тратя больших средств. В этот комплект входит сервер приложений с лицензией для разработки.[6]
При использовании данной технологии стоит особо отметить спецификацию Enterprise JavaBeans (EJB), а также фреймворк JSF. Рассмотрим их более подробно:
Enterprise JavaBeans — спецификация технологии написания и поддержки серверных компонент, содержащих бизнес-логику. Эта технология обычно применяется, когда бизнес-логика требует как минимум один из следующих сервисов, а чаcто все из них:
-
поддержка сохранности данных (persistence); данные должны быть в сохранности даже после остановки программы, чаще всего достигается с помощью использования базы данных
-
поддержка распределённых транзакций
-
поддержка конкурентного изменения данных и многопоточность
-
поддержка событий
-
поддержка именования и каталогов (JNDI)
-
безопасность и ограничение доступа к данным
-
поддержка автоматизированной установки на сервер приложений
-
удалённый доступ
Каждая EJB компонента является набором Java классов со строго регламентированными правилами именования методов. Бывают трех основных типов:
-
объектные (Entity Bean)
-
сессионные (Session Beans), которые бывают без состояния (stateless), и с поддержкой текущего состояния сессии (stateful)
-
управляемые сообщениями (Message Driven Beans) — их логика является реакцией на события в системе.[7]
Также при разработке диплома использовались технологии JSF и JBoss Seam.
JavaServer Faces (JSF) — это библиотека для веб-приложений, написанная на Java. Она служит для того, чтобы облегчать разработку пользовательских интерфейсов для Java EE приложений. В отличие от прочих MVC фреймворков, которые управляются запросами, подход JSF основывается на использовании компонентов. Состояние компонентов пользовательского интерфейса сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется. Для отображения данных обычно используется JSP.
Технология JavaServer Faces включает:
-
Набор API для представления компонент пользовательского интерфейса (UI) и управления их состоянием, обработкой событий и валидацией вводимой информации, определения навигации, а также поддержку интернационализации (i18n) и доступности (accessibility).
-
Специальная библиотека JSP тегов для выражения интерфейса JSF на JSP странице.
Технология JavaServer Faces улучшает существующие, стандартные концепции пользовательского интерфейса (UI) и концепции Web-уровня без привязки разработчика к конкретному языку разметки, протоколу или клиентскому устройству. Классы компонент пользовательского интерфейса, поставляемые вместе с технологией JavaServer Faces, содержат функциональность компонент, а не специфичное для клиента отображение, открывая тем самым возможность отобажение JSF-компонент на различных клиентских устройствах. Совмещая функциональность компонент интерфейса пользователя со специальными рендерерами, разработчики могут конструировать специальные теги для заданного клиентского устройства. В качестве удобства технология JSF предоставляет специфичный рендерер и специальную библиотеку JSP-тегов для рендеринга на HTML-клиенте, позволяя разработчикам приложений на J2EE платформе использовать технологию JSF в своих приложениях.[10]
JBoss Seam — основанный на JavaServer Faces (JSF) библиотека для разработки web приложений. Разрабатывается в JBoss Labs и распространяется под лицензией LGPL (GNU Lesser General Public License). Призван упростить программирование бизнес приложений на JSF путем реализации следующих возможностей:
-
Устранение промежуточного слоя транспортных объектов (т. н. Value Objects) за счет использования EJB Entity Bean’ов в качестве Value Objects.
-
Интенсивное использование аннотаций Java 5 для конфигурирования компонентов и декларирования примитивов.
-
Тесная интеграция с EJB 3-й версии и jBPM.
-
Поддержка AJAX на стороне сервера.
-
Использование Conversation-взаимодействий.
-
Юнит-тестирование компонентов используя Embeddable JBoss контейнер. Embeddable JBoss некорректно работает под JDK 1.6 (необходимы дополнительные настройки).
-
Встроенная поддержка технологии URL rewriting.[11]
|