У нас есть несколько (5+) приложений, которые обращаются к одной и той же базе данных, и мы сталкиваемся с проблемами, когда все приложения берут это в свои руки для создания запросов, которые извлекают одни и те же данные.Тем не менее, поскольку разные разработчики создают эти запросы, они не идентичны должным образом, поэтому время от времени выдают разные результаты.
Насколько я вижу, есть 2 возможных решения.
- Создание библиотеки, на которую ссылается каждое приложение для получения правильного запроса
- Создание службы WCF, которая инкапсулирует общие запросы, используемые каждым приложением, и создание клиента для каждого приложения для использования
Я склоняюсь к варианту 2, поскольку это даст нам гибкость в изменении фильтров, которые мы используем в наших запросах, таким образом обновляя каждое приложение сразу.
Иерархия служб будет выглядеть примерно так
public class QueryService
{
private readonly IRepository _repository;
public QueryService(IRepository repository)
{
_repository = repository;
}
public IEnumerable<int> GetCommonOperation()
{
return _repository.GetCommonOperation();
}
public IEnumerable<AnotherDto> AnotherCommonOperation()
{
return _repository.AnotherCommonOperation();
}
}
Затем создайте клиент, который будет взаимодействовать с QueryService
.
Итак, мой вопрос, каков общий подход к созданию служб запросов с единственной целью инкапсулировать часто используемые запросы / операции длянесколько приложений?