РЕАЛИЗАЦИЯ КЛАССИФИКАТОРОВ НА СЕРВЕРЕ ПРИЛОЖЕНИЙ В ТРЕХЗВЕННОЙ АРХИТЕКТУРЕ «КЛИЕНТ/СЕРВЕР» К.Ю. Войтиков, О.А. Змеев, А.Н. Моисеев Филиал Кемеровского государственного университета в г. Анжеро-Судженске E-mail: [email protected] При создании объектной модели корпоративных информационных систем объекты приложения (приложений) распределяются по соответствующим пакетам. Пакеты – это основные семантически связанные группы объектов, разделение на которые может быть использовано, например, при реализации системы в архитектуре «клиент/сервер» [1] Один из классиков объектно–ориентированного моделирования П. Коуд в своей работе [2] предлагает распределение объектов в модели по пяти пакетам, из которых нас будут интересовать следующие три: HI (Human Interface, интерфейс пользователя) – объекты, предназначенные для отображения, ввода и вывода информации на печать (окна, отчеты и объекты, связанные с ними), PD (Problem Domain, предметная область) – объекты, отражающие в программе объекты реального мира, DM (Data Management, управление данными) – объекты, отвечающие за доступ к хранимым данным и выполняющие все необходимые операции над ними. Автор этого подхода говорит о том, что разделение объектов на пакеты не означает обязательного физического разделения. Он не отрицает возможности специализированных реализаций одного объекта в нескольких пакетах. Однако в работе [1] при проектировании приложений в архитектуре «клиент/сервер» предлагается разделить эти пакеты физически таким образом, что объекты, реализующие представление данных (интерфейс пользователя) выносятся в отдельный программный модуль – «Клиент». Объекты оставшихся пакетов помещаются в программный модуль «Сервер», через который клиенты и получают доступ к информации. Причем реализация «Сервера» как правило, предполагает многоуровневую архитектуру (сервер базы данных, сервера приложений). При разработке любой корпоративной системы не обойтись без реализации такого объекта как классификатор (справочник). Этот объект имеет свою реализацию и в интерфейсе пользователя, и в сервере приложений, и в сервере базы данных. Что же будем понимать под словом классификатор? Классификатор (справочник) – является списком возможных значений того или иного реквизита некоторого объекта приложения. Он используется в тех случаях, когда необходимо исключить неоднозначный ввод информации. Например, для того чтобы продавец, покупатель, директор понимали, о каком товаре идет речь, каждый должен называть его одинаково. Как раз для таких случаев и нужен справочник, т.е. классификатор. Рассмотрим, что представляет этот объект на всех трех уровнях. Уровень интерфейса отвечает за визуальное представление содержимого объекта классификатор. На этом уровне он представлен в виде объекта-таблицы, в котором содержатся все элементы классификатора. Сервер базы данных отвечает за хранение содержимого справочника в объектной или реляционной базе данных, а также добавление, изменение, удаление элементов классификатора. На этом уровне это может быть не одна, а несколько реляционных таблиц. Рассмотрим подробно сервер приложений. Сервер приложений – является своеобразным буфером между клиентом и сервером базы данных. На этом уровне классификатор реализован в виде объекта, который находится в оперативной памяти сервера. В нем реализованы такие поля как: номер классификатора, содержимое справочника, список подключившихся к нему пользователей, а так же режим использования (просмотр/удаление). Классификатор на уровне сервера приложений предназначен для того, чтобы снизить трафик сети, снизить обращение к базе данных, а также на этом уровне проверяются права доступа клиента к элементам справочника. Общение клиента с серверами сводится к общению с сервером приложений, а тот в свою очередь обращается к серверу базы данных, если это нужно. Связь осуществляется через объект контроллер (controller), отвечающего требованиям шаблона «Сontroller» [3]. Контроллер (controller) – это объект, не относящийся к интерфейсу пользователя и отвечающий за обработку системных событий. Контроллер определяет методы для выполнения системных операций. Диаграмма деятельности для объекта классификатор представлена на рисунке 1. Стоит отметить, что для каждого объекта классификатора используется унифицированная идентификация типов объектов классификатора. Вызов классификатора осуществляется следующим образом. Клиент вызывает функцию контроллера уровня интерфейса, где передает номер открываемого классификатора. Полученная информация обрабатывается контроллером сервера приложений. После расшифровки информации контроллер ищет указанный классификатор в своем списке открытых классификаторов, с помощью соответствующего метода, реализованного в объекте контроллер. Поиск осуществляется по уникальному номеру типа соответствующего классификатора, т.е. поиска номера в соответствующем списке контроллера сервера приложений. Результатом этого поиска возможны две ситуации, либо контроллер находит его в своем списке уже инициализированных классификаторов, либо не находит. Рассмотрим первую ситуацию, указанный номер найден в списке. Тогда в список подключившихся пользователей найденного объекта классификатора добавляется номер пользователя подключившегося к данному классификатору, после чего контроллер сервера приложений отправляет клиенту в качестве ответа содержимое найденного объекта классификатора. Данный поиск был осуществлен без обращения к базе данных, вся обработка велась в оперативной памяти сервера, что ускорило работу. Теперь рассмотрим ситуацию, когда поиск завершился неудачей, т.е. указанный классификатор не найден в списке классификаторов контроллера. Это говорит о том, что данный классификатор открывается впервые. Тогда контроллер сервера приложений переадресует команду контроллеру серверу базы данных, где осуществляется обращение к базе данных. В ответ он может получить либо код ошибки, если такой объект классификатора не найден и тогда он передаст код ошибки клиенту, либо получить содержимое объекта. После получения содержимого объекта справочника в предметной области происходит создание экземпляра найденного объекта классификатор. Затем происходит заполнение полей этого объекта, проставляется номер и содержимое вызванного объекта классификатора и добавления в список подключившихся пользователей номера пользователя открывшего данный классификатор. После этого этот объект заносится в список открытых классификатора контроллера сервера приложений. Только после этого содержимое вызываемого классификатора передается на сторону клиента. Высвобождение объекта классификатор из оперативной памяти сервера происходит после, как его закрыли все пользователи в своих приложениях. рисунок 1 Таким образом, при открытии одного и того же классификатора несколькими клиентами обращение к самой базе данных минимально. Т.е. обращение к ней осуществляется только один раз, когда его открывает первый клиент системы, после этого справочник хранится в оперативной памяти сервера приложений и последующее обращение к нему осуществляется по сути дела обращением к оперативной памяти сервера и считывание данных по соответствующим указателям. Таким образом, работа с данными ведется быстрее, нежели при непосредственном обращении к базе данных. Данная технология применена в ИС «Факультет» [4]. Литература. 1. Змеев О.А. Моисеев А.Н. «Шаблон диаграммы компонентов информационной системы корпоративного уровня» «Вестник ТГУ», Томск, 2002. 2. Коуд П. «Объектные модели. Стратегии, шаблоны и приложения» М. «Лори» 1999 – 432с 3. Войтиков К.Ю. Змеев О.А., Моисеев А.Н. Некоторые практически моменты разработки CASE средства, автоматизации процесса проектирования информационных систем. // Всероссийская научно-практическая конференция «Новые технологии и комплексные решения: наука, образование, производство»: Тезисы докладов. – Анжеро-Судженск: Изд-во филиала КемГУ в г. Анжеро-Судженске, 2001, Часть VI, с. 10-12. 4. Ларман К. «Применение UML и шаблонов проектирования» М. 2001. – 496с.