1.5 Системные требования, требования к входным и выходным данным
Для обеспечения информационной безопасности документов реестров, при сохранении аутентификации по логину и паролю, необходимо ограничить подключения к разрабатываемому веб-серверу и серверу IBM Domino из публичных сетей.
При необходимости соединения различных географически удаленных сетей (или отдельных пользователей) по общедоступным каналам связи необходимо настроить логическое соединение между этими точками с шифрованием всех передаваемых данных [19].
Пример возможной организации сети организации представлен на рисунке 1.8. Компьютеры в сети соединены при помощи коммутатора. Доменный сервер, сервер баз данных IBM Domino и веб-сервер (реализуемый в рамках данной работы) расположены на одном физическом сервере.
Рисунок 1.8 – Обобщенная сетевая конфигурация
На сервере баз данных должен быть настроен сервер IBM Domino версии 9.0 или более современный.
Входными данными являются файлы баз данных IBM Notes (*.nsf) и шаблоны данных IBM Notes (*.nst). Работа с базами данных осуществляется при помощи прикладных интерфейсов сервера IBM Domino.
Структура баз данных заранее не определена, и может изменятся с течением времени. Подмножество поддерживаемых возможностей платформы ограничено. Для корректной работы разработанного ПО, неподдерживаемые возможности должны быть исключены из представлений, к которым включен доступ через Domino Data Services [11].
Веб-сервер поддерживает 32 и 64-разрядные операционные системы семейства Windows. Поддержка Linux и MacOS X требует незначительных доработок и тестирования (исполняемые файлы для данных платформ в рамках ВКР не предоставляются).
Для работы с веб-приложением рекомендуется использование одного из основных (Internet Explorer начиная с версии 10, Google Chrome и Mozilla Firefox) веб-браузеров последней или предпоследней версии. Работа в устаревших браузерах не гарантируется.
Предполагается полноценная работа веб-приложения на следующих операционных системах: Windows (начиная с версии 7), Linux, Android (начиная с версии 4.1), iOS (начиная с версии 6) при наличии установленного веб-браузера.
Работа в операционных системах отличных от настольной Windows подлежит тестированию в отдельном порядке для каждого устройства в связи с отсутствием технической возможности гарантировать качественную работу на всевозможных моделях устройств.
Выходными данными является отображение документов в браузере пользователя. Необходимо реализовать отображение списка документов в табличном виде с возможностью сортировки и фильтра по значению столбца. Необходимо реализовать просмотр полей документа.
2 ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ПРОДУКТА
2.1 Выбор методов и средств для реализации, его обоснование
В ходе проектирования была выбрана трехзвенная модель (рисунок 2.1), с использованием промежуточного веб-сервера.
Рисунок 2.1 – Трехзвенная архитектура предлагаемого программного продукта
Модель была выбрана исходя из следующих факторов: отсутствие необходимости использовать что-либо кроме самих документов (текущие формы или слишком сложны, или непригодны для отображения в веб-браузерах), необходимости обезопасить сервер IBM Domino от прямых атак, наличия перспектив дальнейшего развития и оптимизации выбранной трехзвенной архитектуры (расширенное промежуточное кэширование и автоматическая балансировка между репликами).
В качестве альтернативы трехзвенной архитектуры рассматривалась технология XPages, но были выделены следующие недостатки: необходимость доработки под каждую из баз данных, проблемы с интегрированной средой разработки и системами контроля версий, работа в контексте одной базы данных (что противоречило техническому заданию на единую точку доступа).
Для реализации веб-сервера был выбран компилируемый статически типизированный язык программирования высокого уровня Go [1,9]. Этот язык выделяется среди остальных своей планарной объектно-ориентированной моделью, скоростью компиляции, и количеством пакетов, включенных в стандартную библиотеку языка.
Кроме классического компилятора есть компилятор на базе пакета GCC (англ GNU Compiler Collection – набор компиляторов GNU). Поддерживается взаимодействие с кодом на C (используется встроенная подпрограмма cgo) и C++ (при помощи программного пакета SWAG).
В языке Go отсутствует иерархия типов. Пользовательские типы данных представляют собой один из базовых типов, для которого можно описать набор методов. Отсутствует, привычная для программистов С-подобных языков, перегрузка методов (каждый метод должен иметь уникальное имя).
Кроме привычных строк, чисел (целых и вещественных), структур и интерфейсов, базовые типы включают такие типы как Слайс (англ. slice) и Канал (англ. channel). Слайсы являются высокоуровневой абстракцией над массивами. А каналы используются (рисунок 2.2) для передачи данных между различными горутинами, и являются абстракцией низкоуровневых способов синхронизации.
Рисунок 2.2 – Использование канала для синхронизации
Горутина (англ. goroutine) является легковесным аналогом потоков. Такой подход позволяет выполнять одновременно тысячи горутин, используя небольшое число системных потоков (англ. threads).
Конкурентная модель программирования является частью языка, а не стандартной библиотеки. Так как в разрабатываемом ПО необходимо обеспечить конкурентный доступ пользователей к ресурсам различных серверов IBM Domino, поддержка этой модели явилась решающим фактором в выборе языка.
Веб-сервер является связующим звеном между различными серверами IBM Domino и веб-приложением в браузере пользователя. Для эффективной работы был реализован асинхронный конкурентный доступ к ресурсам баз данных работающий с прикладным интерфейсом Domino Data Services [11].
Перед компиляцией исходного кода веб-сервера выполняется сборка всех ресурсов веб-приложения и их внедрение в результирующий файл. Это позволяет, в результате компиляции, получить самодостаточный исполнимый файл небольшого размера. Таким образом сильно упрощается развертывание и обновление программного обеспечения. Конфигурация веб-сервера и пользовательские данные хранятся в отдельных файлах.
Сборка ресурсов автоматизирована при помощи программного пакета Gulp. Выбор обусловлен скоростью его работы и простотой написания необходимых скриптов для сборки.
Интерфейс веб-приложения строится из отдельных компонентов. При проектировании, для реализации данного механизма была выбрана библиотека ReactJS [4]. Данная библиотека использует образ виртуальной объектной модели документа, чтобы найти минимальное количество шагов для перехода от текущего к актуальному состоянию. Количество операций с настоящей объектной моделью (что является сравнительно медленной процедурой) значительно уменьшается, что положительно влияет на производительность.
Особенности обновления информации в веб-приложениях позволили в данной библиотеке реализовать следующую оптимизацию: при изменении состояния компонента, кроме его непосредственной перерисовки, выполняется перерисовка всех дочерних компонентов (рисунок 2.3).
Эта оптимизация возможна благодаря тому, что перемещение компонента между уровнями в веб-интерфейсах очень редкая операция. А изменение данных внутри компонентов, наоборот, наиболее частая операция.
Рисунок 2.3 – Пример изменения дерева компонентов [3]
На рисунке два раза отображено одно и то же дерево компонентов. На левом дереве выделены компоненты с измененным состоянием, а на правом – компоненты которые были перерисованы.
С целью унификации внешнего вида и ускорения разработки, в качестве спецификации внешнего вида была выбрана спецификация материального дизайна (англ. Material Design) представленная компанией Google [8].
Материальный дизайн представляет собой нечто среднее между плоским и объемным дизайном. Все элементы (листы бумаги, от англ. Paper) располагаются в двумерной проекции трехмерной плоскости. Причем оси X, Y находятся в плоскости проекции, а ось Z – перпендикулярно, и служит для создания ощущения перспективы. В отличие от классических трехмерных интерфейсов, толщина листов всегда равна единице (рисунок 2.4).
Рисунок 2.4 – Проекция координат в материальном дизайне [8]
В зависимости от положения в пространстве, одни листы могут отбрасывать тень на другие. Важной особенностью материального дизайна является то, что листы не могут проходить сквозь друг друга по оси Z, и не могут подвергаться деформациям. В спецификации материального дизайна определены параметры базовых элементов интерфейса и правила их комбинирования.
Веб-приложения обновляет данные без перезагрузки страницы посредством асинхронных запросов к серверу. Такой подход улучшает обратную связь с пользователем, и позволяет улучшить восприятие интерфейса.
|