Е. Н. Якунина Томский государственный университет

Вид материалаДокументы
Подобный материал:

МЕХАНИЗМЫ ПОДДЕРЖКИ ТИПОВОГО РЕШЕНИЯ MVC В СРЕДЕ LOTUS/DOMINO

Е.Н.Якунина

Томский государственный университет

Тел.: (3832) 52-94-96, e-mail: yakunina@inf.tsu.ru


Основной задачей, которую приходится решать при разработке любой информационной системы, это проблема организации взаимодействия между логическим уровнем приложения, уровнем интерфейсов, уровнем бизнес-логики и уровнем хранения данных.

Классическое решение было предложено в виде паттерна проектирования Model-View-Controller. Для настольных приложений шаблон проектирования MVC стал стандартом, но для очень многих Web-разработчиков это понятие может оказаться новым. Однако объектно-ориентированные методы приобретают все большее значение и в разработке под Web по мере того, как Web-приложения становятся сложнее и интегрируются с традиционными серверными приложениями. Применение многоуровневой архитектуры на основе шаблона MVC несколько усложняет Web-приложение, при этом давая ему такие качества, как удобство разработки, тестирования, легкость последующей модификации, структурированность кода.

Назначение большинства информационных систем – получение данных из некоторого хранилища и отображение их пользователю. Затем пользователь выполняет какие-либо действия и система сохраняет данные либо модифицирует их. Так как основной обмен данными происходит между хранилищем данных и пользовательским интерфейсом, очень часто эту функциональность объединяют, при этом, как правило, повышается общая производительность системы и уменьшается объема кода. Однако нередко возникает необходимость независимой модификации пользовательского интерфейса или бизнес-логики. Дальнейшее усложнение приложения требует создания сложной объектной модели и постоянного ее изменения. Шаблон MVC позволяет разделить бизнес-логику, представление и обработку действий пользователя на три части:
  • Контроллер (Controller). Принимает и интерпретирует входные данные, а затем информирует модель и представление о необходимости соответствующей реакции.
  • Модель (Model). Обрабатывает полученные данные в соответствии с задачами, которые должно выполнить приложение, предоставляет данные (для View), а также реагирует на запросы изменить свое состояние (от контроллера). Здесь реализуются все основные алгоритмы программы.

Важно отметить, что как представление, так и контроллер зависят от модели. Однако модель не зависит ни от представления, ни от контроллера. Это одно из ключевых достоинств подобного разделения. Оно позволяет строить модель независимо от визуального представления. Таким образом, в типовом решении модель – представление – контроллер существует два принципиальных типа разделения: отделение представления от модели и отделение контроллера от представления.

Рассмотрим механизмы, реализующие этот подход в среде Lotus Domino/Notes.

Концепция модели реализуется посредством документоориентированной БД. Классам, определяющим контекст предметной области, ставится в соответствие один или несколько взаимно связанных документов, причем в зависимости от наполнения контента документы могут иметь достаточно сложную структуру. Несмотря на то, что и виды, и документы фактически хранятся в рамках единой БД Lotus/Domino, логически эти понятия разделены, так как база данных Notes является контейнером для большого числа различных классов – документов, описаний форм, видов и макропрограмм-агентов. Note – это общая структура определенного формата, используемая Notes для хранения разнородной информации, в некотором смысле это документоориентированный аналог записи в реляционной БД. Таким образом, запись (Note) может быть следующих логических типов: документ (Data Note), вид (View Note), форма (Form Note), агент (Filter Note), документ “About Database” (Policy Note), документ списка управления доступом (Access Control List) и т.д.

Структура документа определяется в основном формой, с помощью которой он конструируется на этапе разработки. Форма представляет собой шаблон для ввода, чтения, редактирования и печати атрибутов документов определенного типа. Форма предоставляет механизмы для реализации самых разнообразных типов данных реальных атрибутов, например, она может содержать ссылки на другие классы, поля, статический текст, графику, OLE-объекты и т.д.

Представление содержимого БД документов в Lotus Domino/Notes осуществляется с помощью видов. Вид позволяет организовать отбор документов по установленному критерию отбора, их представление в колонках вида, способ сортировки, указатель на объект в этом же файле, содержащий индекс по всем документам, представленным в виде.

Реализация концепции контроллера выполнена в Lotus Domino/Notes при помощи механизма агентов.

Агенты – это макропрограммы, которые создаются для автоматизации различных действий: модификации полей документов, отправки почтовых сообщений, поиска информации, архивирования и пересылки документов из одной БД в другую и т.д. Агенты могут запускаться из меню, из других агентов, кнопок, акций и т.п., по расписанию или условию, заданному разработчиком, либо инициализации непосредственно пользователем. Отбор обрабатываемых агентом документов может производиться на основе критерия, заданного формулой либо в результате выполнения запроса полнотекстового поиска. Возможность создания агентов определяется уровнем доступа пользователя, установленным в ACL базы.

Таким образом, в рамках среды Lotus Domino/Notes архитектура Model-View-Controller реализуется посредством логического разделения соответствующих механизмов на уровне логической организации документоориентированной БД. За счет этого достигается независимость внесения изменений в любом из компонентов шаблона. Изменения в структуре ИС, информации, которая в ней содержится, изменения в графическом оформлении сайта осуществляются без изменения дизайна БД.
Литература

1. Wilf R., LaLonde J., Pugh R. Inside Smalltalk. – Prentice Hall, 1991. – Vol. 2.