1. Слой MVC. Веб-приложение. Контроллеры/модели. Этот слой написан на C#.
Слой MVC имеет одно главное представление Home/Index (index.cshtml) и несколько вспомогательных, в основном служащих для администрирования. "Модели" данного слоя - это просто функциональные расширения контроллеров,
для максимального освобождения контроллеров от всех функций кроме приема-передачи запросов.
Представление Home/Index формирует страницу, на которой разворачивается действие слоя CJS (Core Java Script). Слой MVC принимает запросы из слоя CJS и транслирует их в слой DCL (DERSA common library).
2. Слой CJS(Core Java Script). Неизменяемая пользователем логика пользовательского интерфейса. JavaScript файлы, хранимые на сервере.
За основу взяты компоненты, распространяемые по лицензии MIT (jstree) и Apache 2.0 (mxForm, mxWindow, mxDiagram). Этот слой написан на JavaScript. Управляет поведением объектов пользовательского интерфейса,
в основном: созданием, удалением, редактированием узлов дерева.
Формирует запросы для слоев DCL и SBA, отправляет их в слой MVC, получает ответ и выполняет команды,
пришедшие с сервера в виде скрипта JS, с помощью функции eval. Типовая логика взаимодействия:
Пользователь нажимает кнопку на странице.
(CJS): - Эй, MVC, тут пользователь посылает пакет на твой контроллер. Лови. И скажи потом, что мне делать дальше.
(MVC): - DCL, ау! CJS заказал вызов метода X объекта Y с аргументом Z, что ему передать в ответ?
(DCL): - Так, дай-ка я вызову этот метод и подумаю... (ненадолго отвлекается на разговор с DBL и SBA) Вернулся какой-то текст. Отдай ему, пусть сам решает, что делать.
(MVC) (отдает текст в CJS)
(CJS): - О, да тут скрипт пришел! (выполняет скрипт)
Пользователь радуется результату нажатия кнопки.
3. Слой DCL (DERSA common library). Здесь описан механизм превращения объектов БД в объекты сервера приложений E, R, S и A , формирующие основу системы DERSA, определяющие ее индивидуальность среди множества клиент-серверных систем.
можно сказать, что объекты E.R.S.A. "живут" в слое DCL. Объект "D-Diagram" занимает особое положение, он в имеющихся версиях ощутимо "размазан" по слоям DBL, DCL и CJS.
Этот слой использует в работе слой DBL (Data Base Layer) и сам, в свою очередь, предоставляет API для слоев MVC и SBA. Также передает запросы из слоя MVC в слой SBA и возвращает ответ. Этот слой написан на C#.
4. Слой DBL (Data Base Layer) Здесь сохраняются объекты D, E, R, S и A , когда они не загружены в слой DCL и не работают как приложение. Взаимодействие с этим слоем осуществляется через хранимые процедуры, что позоволяет,
написав соответсвтующие адаптеры, заменять этот слой (например MSSQLServer заменить на ORACLE), не затрагивая логику остальных слоев. Этот слой пишется на языке SQL, поддерживающем процедуры
(которые в свою очередь должны уметь возвращать наборы данных, "курсоры"). В настоящее время разработаны две полностью рабочие версии слоя DBL, на TransactSQL (MSSQLServer) и PL/SQL (ORACLE)
В этом слое можно также создавать хранимые процедуры-отчеты, выдающие информацию об объектах БД, в которой "живет" данный экземпляр системы DERSA.
5. Слой SBA(stereotype based application). Этот слой написан на C#. В этом слое "живут и работают" объекты, которые придумывает пользователь для своих целей.
Эти объекты могут быть любыми, какие позволяет написать язык C# с использованием сборок .NET, доступных на данном сервере, где установлена DERSA.
Свойства объектов сохраняются в слое DBL в виде A - Attribute, сами объекты сохраняются в виде E - Entity. Описания свойств и описания методов (классы) объектов сохраняются в виде S - Stereotype.
Для того чтобы начать создавать любые объекты, нужен некоторый минимальный первоначальный набор объектов, из которого можно создать все остальные как из конструктора.
В минимальный набор входят Система (экземпляр стереотипа SystemBase), стереотип StereotypeBaseE (из него получаются другие стереотипы, также он умеет создавать сам себя), стереотип Attribute, с помощью которого проектируются свойства классов,
стереотип Method, с помощью которого проектируются методы классов. Из трех элементов (StereotypeBaseE, Attribute, Method) создаются любые другие стереотипы, какие придут пользователю в голову.
Библиотека стереотипов копмилируется "четвертым элементом", SystemBase.
Основной цикл "жизнедеятельности" и взаимодействия слоев DERSA:
- общая часть: слои CJS, MVC работают в каждом из описанных сценариев, передавая запросы пользователя в другие слои;
- создать экземпляр класса (инстанцировать стереотип), работают DCL, DBL;
- придать этому экземпляру уникальность, заполнив его свойства (Attributes) и создав для него окружение: связи, Relations и дочерние объекты, Children, работают слои DCL, DBL;
- передать экземпляр в слой DCL, где он "оживает", приобретает свойство исполнять свои методы, описанные в его стереотипе (на сцену выходит слой SBA: слой DCL вытаскивает описания из DBL и соединяет их с описаниями SBA);
- вызвать какой-либо из методов экземпляра и в зависимости от содержания и результата этого метода как-то интерпретировать ответ (т.е. объекты DERSA работают не только с back-end, но и формируют взаимодействия на front-end);
- в формировании взаимодействия слоя SBA и front-end принимает участие слой CJS, но минимально: вызывает единственную функцию eval для присланного в ответ на вызов метода скрипта.
Примеры заданий, выполняемых объектами DERSA в слое SBA:
- генерация скриптов и документов по шаблонам (scaffolding). Это весьма обширное поле деятельности, куда включаются: генерация скриптов SQL, генерация классов C# (и любого другого языка), генерация документов HTML, генерация документов Word etc.
- отправка запросов на сервер SQL, доступный с вебсервера DERSA
- отправка запросов на любой другой сервер, доступный с вебсервера DERSA
- сохранение полученной информации в файл, который затем скачивается с вебсервера DERSA
- вывод полученной информации в формате html на "консоль" (новое окно, открываемое браузером)
- предыдущий пункт плюс Java Script: в открываемое браузером окно можно "подселить" программу на jscript, которая превратит консоль в полноценный графический интерфейс с анимацией и мультимедиа.
Назад