Создать сервис для инкапсуляции бизнес-запросов - PullRequest
1 голос
/ 30 июня 2011

У нас есть несколько (5+) приложений, которые обращаются к одной и той же базе данных, и мы сталкиваемся с проблемами, когда все приложения берут это в свои руки для создания запросов, которые извлекают одни и те же данные.Тем не менее, поскольку разные разработчики создают эти запросы, они не идентичны должным образом, поэтому время от времени выдают разные результаты.

Насколько я вижу, есть 2 возможных решения.

  1. Создание библиотеки, на которую ссылается каждое приложение для получения правильного запроса
  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.

Итак, мой вопрос, каков общий подход к созданию служб запросов с единственной целью инкапсулировать часто используемые запросы / операции длянесколько приложений?

1 Ответ

1 голос
/ 30 июня 2011

Вы уже ответили на свой вопрос. По сути, вы хотите отделить интерфейс от реализации так же, как это сделает веб-служба (или WCF). Если вы создаете сборку, вам все равно необходимо убедиться, что сборка развернута с вашими отдельными клиентами или, по крайней мере, в месте, доступном для любого приложения, использующего ее. Похоже, намного больше работы. Однако имейте в виду, что если вы вносите изменения в подписи службы, любой клиент, использующий эту службу, также должен будет обновить ее, чтобы отразить новые определения.

Самое замечательное в веб-сервисе (WSDL) - его универсальность. Вы можете написать клиент на любом языке, который может использовать и анализировать WSDL - в отличие от сборки, где вы будете ориентироваться на конкретную сборку или ОС. Так что если у вас есть клиенты на C #, Java, iOS, Android и т. Д., Они все могут использовать ваши сервисы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...