Как вы используете ибати в сервисной архитектуре?

StackOverflow https://stackoverflow.com/questions/4102945

  •  29-09-2019
  •  | 
  •  

Вопрос

У нас есть несколько услуг, каждый из которых в идеале должен работать независимо друг от друга. Основное использование Сервисов заключается в поддержке нашего WebApp. Мы ищем лучший способ использовать ибати с этими услугами.

Наш первый подход состоял в том, чтобы иметь один проект с SQLSessionFactory, и все реализации услуг использовали этот проект для доступа к данным. Это означает, что проект зависит от всех услуг (мы должны были отделить обслуживание и IMPL, чтобы устранить зависимость круга) для объектов данных, и он содержит все карты SQL. Преимущество будет одним из экземпляров SQLSessionFactory в любое время, и одна конфигурация для управления. Хотя, если одна услуга используется как для JUNITS или какой -либо другой утилиты, все карты SQL загружаются независимо от того, и все услуги являются зависимостью.

Другим подходом было бы, чтобы каждая служба имела свою собственную конфигурацию ibatis и экземпляр SQLSessionFactory. Это позволило бы избежать необходимости в Мекке зависимости от проекта доступа к данным, но означает несколько случаев SQLFactory на веб -приложении.

Мне нравится второй подход, хотя я вижу хорошего и плохого в обоих.

Что бы ты сделал? Что вы добавляете или убираете из моего аргумента?

Пожалуйста помоги!!!

Это было полезно?

Решение

Хотя я думаю, что сила вашего первого аргумента указывает на слабость SOA в целом, я думаю, что если вы делаете SOA, он побеждает всю цель, чтобы потом сделать все услуги, взаимозависимые друг на друга.

Если вы делаете SOA, вы принимаете компромисс более неэффективного использования ресурсов ради развязки и изоляции компонентов.

Другие советы

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

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

Если оба решения могут подать заявку, у вас, вероятно, все ваши услуги работают на одном JVM. По моему мнению, вы должны подумать о том, чтобы запустить компоненты в отдельных JVM. Архитектура истинного компонента сервиса - это та, где у вас есть несколько компонентов (например, EJBS), которые работают в кластерной среде, и общаются друг с другом в слабо связанном пилотом (например, через JMS, или веб -сервисы, RMI и т. Д.). Каждый компонент независим и, возможно, работает на удаленном сервере.

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

Это в конце концов, вопрос о том, что ваша заявка действительно нужна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top