Най-добри практики за Spring Enterprise Application

След като прочетох статията на Гордън за най-добрите практики за изграждане на корпоративно приложение с помощта на Spring Framework, бих искал да споделя някои идеи относно слоя услуга.

Моята архитектура представлява точно това, което Гордън описа в това изображение http://gordondickens.com/wordpress/wp-content/uploads/2012/07/Spring-App-Layers.png

Приложението е сложно, има тежко бизнес правило и изисква използването на различни ресурси като база данни, SOAP, REST и файлов манипулатор понякога в един и същ случай на употреба.

За тази сцена, която описах по-горе, имам сервизен клас, който трябва да изпълнява SOAP и REST заявки и да обработва някои данни от базата данни. И така, автоматично съм свързал в моя сервизен клас SOAP и REST компонент и хранилището за обработка на нещата от базата данни.

Загрижен съм дали това е най-добрият подход за справяне с интеграцията между моите услуги и ресурси като SOAP, REST, база данни и т.н.

Благодаря


person Luiz Henrique    schedule 07.06.2014    source източник


Отговори (2)


И така, автоматично съм свързал в моя сервизен клас SOAP и REST компонент и хранилището за обработка на нещата от базата данни.

Звучи проблематично, въпреки че ще работи.

Помислете за зависимостта между слоевете. Слоят на услугата ще зависи от слоя на хранилището (слоят на бизнес логиката ще зависи от слоя с данни). Слоят за интегриране на услугата (или комуникационният слой на услугата) за входящи заявки ще зависи от слоя услуга. Но слоят данни не зависи от слоя на услугата. Нито нивото на услугата зависи от слоя за извикване на входяща услуга.

И така, премахнете компонентите SOAP и REST от класа Service. Към SOAP и REST компонентите, свържете екземпляра на услугата (т.е. избягвайте SOAP и REST компоненти, свързани към услугата, направете го в обратна посока).

По този начин, когато искате да поддържате друг интеграционен протокол (да речем JMS), вие извършвате цялата такава работа, а не чрез модифициране на вашата услуга.

Достъпът ви до данни изглежда е наред. Надявам се, че вашата услуга има достъп до хранилището чрез DAO.

person Community    schedule 08.06.2014
comment
Благодаря @kamal-wickamanayake, твоята концепция ми изглежда добре. Бихте ли ми показали примерен код, който илюстрира вашата идея? - person Luiz Henrique; 08.06.2014
comment
Това се нарича архитектурен модел на слоевете. Би трябвало да става ясно от самото описание. В случай, че не сте запознати с свързването на Spring beans по начина, по който предпочитате, и по-специално, като го правите с технологии за отдалечено управление, погледнете раздела за отдалечено управление и уеб уеб услуги с помощта на Spring на референтната документация на Spring Framework. Описва как го правите при различни условия. - person ; 09.06.2014
comment
Мисля да реализирам тази интеграция с помощта на Spring Integration. Смятате ли, че това е добър подход? Благодаря - person Luiz Henrique; 10.06.2014
comment
Хммм... Не съм използвал Spring Integration. Така че не мога да коментирам. Проверих го и изглежда има някои плюсове. Все още бих внедрил интеграция с Apache Camel. Може да стартирам Camel напълно отделно от конкретни приложения. Научаването на Camel беше проблем в началото. Но скоро това се превърна в доста добра и солидна интеграционна инфраструктура за мен. Но както казах, не знам какво има ясно в Spring Integration. Така че не мога да правя прибързани заключения. - person ; 10.06.2014
comment
Разглеждам и двете технологии Camel и Spring, за да определя най-добрия подход към мен. Благодаря, приятелю, оценявам вниманието ти - person Luiz Henrique; 10.06.2014

И така, автоматично съм свързал в моя сервизен клас SOAP и REST компонент и хранилището за обработка на нещата от базата данни.

Звучи добре. Използвате инжектиране на зависимости, това означава, че те могат лесно да бъдат тествани или променени.

person NimChimpsky    schedule 07.06.2014