На протяжении многолетней работы в области разработки программного обеспечения в компании ИНСОФТ опробовано множество технологических цепочек и фреймворков с применением различных языков программирования. Каждый вариант имеет свои преимущества и может быть выбран в зависимости от приоритетов, заданных Заказчиком в техническом задании, например: высокое быстродействие, масштабируемость, распределённость системы, работа с большими объёмами данных, скорость разработки, особые требования к интерфейсу. Основные технологические платформы, используемые в нашей компании, подробно описаны ниже.
1. Классическая трёхзвенная цепочка для построения Web-приложений с применением языков SQL, Java, JavaScript, html/css.
Каждое Web-приложение строится по трёхзвенной архитектуре, однако не всегда имеется чёткое разделение на уровни клиента, сервера приложений и сервера базы данных со стороны исходного кода. Тем не менее классический подход заключается в том, что программа состоит из трёх частей, каждая из которых пишется на своём языке программирования и с использованием своих библиотек. Главные преимущества такого подхода - высокое быстродействие системы и возможность расширения допустимой функциональности за счёт применения особых приёмов и утилит из используемых фреймворков, например, возможностей СУБД по оптимизации запросов и способам хранения данных или каких-либо нестандартных элементов управления на стороне клиента. Кроме того, такая архитектура позволяет осуществлять распараллеливание работ по уровням приложения на этапе программирования, что позволяет более гибко распределять ресурсы и уменьшает общее время разработки.
На уровне клиента Web-приложение представляет собой совокупность Web-страниц на языке html с применением стилей css, функциональная оболочка клиентской части - JavaScript код. Используемые JavaScript-фреймворки: Sencha ExtJS, jQuery, mootools, twitter bootstrap. Некоторые из них могут генерировать html-код непосредственно из JavaScript и таким образом избавляют программиста от необходимости вручную создавать html-страницы.
Взаимодействие с сервером приложений
осуществляется посредством технологии AJAX. Сервер приложений реализует
стандарт Java Enterprise Edition и принимает AJAX-запросы с клиента через REST-сервисы
(JAX-RS), которые впоследствии обращаются к Enterprise Java Beans (EJB), где и
реализована основная серверная логика. Взаимодействие сервера приложений с
базой данных осуществляется через Java Persistence API (JPA, Hibernate). В
качестве сервера приложений используется ПО семейства JBoss/WildFly. Средство
сборки программы из исходных кодов - Maven.
На уровне базы данных используется реляционная
СУБД PostgreSQL или Oracle в зависимости от объёмов и требуемых условий
обработки данных. Код, связанный с обработкой большого количества данных или с
получением статистики, выносится в хранимые процедуры СУБД.
Для получения отчётных форм в приложении используется программный компонент BIRT Viewer Runtime, который может быть встроен в Java-приложение или располагаться на сервере приложений отдельно. Данное средство позволяет генерировать отчёты в привычных для пользователей форматах, таких как PDF, HTML, DOC, XLS, по единому шаблону.
Примеры проектов:
- Портал "Документы советской эпохи"
- АИС Справочно-информационного центра
- Система управления документами для Администрации Раменского муниципального района
- Система персонального учёта населения Нижегородской области
- Электронный архив ВККС
2. Технология построения Web-приложений Java Server Faces (JSF). Основные языки - Java, xhtml/css.
JSF-приложение не имеет чёткого разграничения
между серверной и клиентской частью. Код сервера и клиента пишется неразделимо
и зачастую в одном и том же исходном файле. Вместо html-страниц в JSF используются
xhtml-страницы, которые содержат в себе элементы html, JavaScript и AJAX. Эти
страницы при выполнении программы компилируются в стандартные Web-страницы
браузера, при этом изменяется и код, выполняемый на уровне клиента. Главное
преимущество - минимальное количество различных языков программирования,
используемых при написании программы. Это позволяет достаточно быстро писать
небольшие приложения с привлечением малого количества ресурсов. Ещё один плюс -
снижение зависимости от типов и версий браузеров на уровне клиента и СУБД на
уровне базы данных, так как основная логика выполняется сервером приложений.
Сама по себе спецификация JSF предоставляет
довольно ограниченную функциональность с точки зрения доступных элементов
интерфейса, поэтому для расширения возможностей приложения обычно применяются
дополнительные JSF-библиотеки, такие как Richfaces, Primefaces, Icefaces. При
необходимости в исходные xhtml-файлы можно вставлять фрагменты классического
html и/или JavaScript.
Взаимодействие с сервером приложений
осуществляется через JSF Beans различных уровней видимости. В дальнейшем логика
может быть переадресована EJB. Обращение к БД осуществляется через спецификацию
JPA, причём максимум кода работы с базой данных находится на сервере
приложений, чтобы уменьшить зависимость от конкретной СУБД. Сервера приложений
- ПО семейства JBoss/WildFly. Средство сборки программы из исходных кодов -
Maven.
На уровне базы данных используется реляционная
СУБД PostgreSQL или Oracle в зависимости от объёмов и требуемых условий
обработки данных. Код на сервере базы данных сведён к минимуму - хранимые
процедуры и триггеры практически отсутствуют.
Для получения отчётных форм в приложении также
может использоваться BIRT Viewer Runtime.
Примеры проектов:
- Комплекс программ "Судебное делопроизводство"
- АИС Архивного фонда Курской области
- АИС "Документы советской эпохи"
- Модуль "Электронные справочники по фондам ЦИАМ" ИАИС Главархива Москвы
3. Использование средств разработки компании Microsoft.
В компании ИНСОФТ разрабатываются клиент-серверные приложения на основе .NET Framework с использованием языка высокого уровня C#. Это позволяет вести достаточно быструю разработку клиентской части приложений. Для проектирования интерфейса пользователя используется технология WinForms, которая имеет в своем составе большое количество заготовленных элементов управления. Для взаимодействия клиентской части с базой данных применяются каркасы ADO.NET и LINQtoSQL. C помощью этих технологий можно генерировать код манипуляции данными на основе уже созданных таблиц в БД.
LINQtoSQL позволяет взаимодействовать со строками таблиц базы данных как с полноценными объектами в понимании объектно-ориентированного программирования (ООП). Что ведет к минимизации количества громоздкого серверного кода.
В качестве системы управления базами данных применяется MS SQL Server. Это эффективная, надежная и производительная СУБД, основанная на расширенном диалекте языка SQL – Transact-SQL.
Примеры проектов:
«Муниципальный регистр населения»
АИС «Учет и распределение жилья»