[ECampus-devel] System architecture
Status: Planning
Brought to you by:
tau-rus
|
From: Eugene S. <Eug...@ma...> - 2005-02-25 18:14:25
|
Так, давайте пообсуждаем вопрос архитектуры, чтобы не мыкались как
слепые кутята и имели представление по поводу того, что у нас творится
в стране ;)
Немного урывками, если надо, то посмотрите код, почитаете книги и все
будет ОК.
1.
В самом низу находятся Entity EJB. Каждый из бинов представляет собой
какой-то объект и является "проекцией" строчки БД из своей таблицы.
2.
Над Entity бинами стоит Session бин. Он не представляет из себя
сущность, которая "перерождается" в строчку БД. Session бин несет в
себе простую бизнес - логику. По сути дела он просто управляет Entity
бинами.
Session beans имеют Remote (удаленные) интерфейсы (вызовы происходят
прозрачно через сеть). Entity имеют локальные интерфейсы, поэтому мы
работаем с Entity через посредника Session бина. В итоге, получаем
сокращение "удаленных" вызовов и снижение сетевого траффика.
У нас пока 1 сешн бин HRManager (human resources manager).
3.
Над HRManager стоит HRManagerDelegate.
Этот делегат является посредником между слоем представления и бизнес
слоем проекта.
Зачем этот посредник?... а он делает архитектуру более гибкой...
уже не нужно заботиться о специфичных для EJB Exception-ах... и другие
плюсы есть в этом.
4.
Есть набор Transfer Objects... объекты, которые содержат в себе только
данные + набор set|get методов для доступа к данным.
Это текущее состояние бизнес и "около бизнес" слоя.
Вам туда пока лазить не стоит, вы занимаетесь вебом.
***
Теперь рассмотрим вариант создания записи в БД о городе
(справочник городов... id + наименование города).
"Пациент" заполнил веб форму, вы проверили данные, потом в сервлете
происходит нечно вроде этого:
try {
CityTO cityInfo = new CityTO(id, cityName);
HRManagerDelegate manager = new HRManagerDelegate();
manager.addCity(cityInfo);
} catch (HRManagerDelegateException e) {
// proceed exception
}
CityTO - transfer object
HRManagerDelegate - наш делегат
если произошел exception - значит не сумели запихать данные в БД
***
Что от вас будет требоваться в большинстве заданий?
писать сервлеты и JSP, получать даннуе от пользователя и оперируя
данными через делегата совершать бизнес-операции (собственно то, для
чего и создавался бы проект, будь он реальным).
Кто-то хочет получше разобраться со всем этим?
Тогда читаем про паттерны:
Business Object
Composite Entity
Transfer Object (Value Object)
Session Facade
Business Delegate
Service Locator
это всего лишь около сотни страниц английского текста...;)
Есть вопросы?... задавайте!
--
Best regards,
Eugene mailto:Eug...@ma...
|