У меня есть API, который возвращает элементы, так нужен ли мне Сервис / репозиторий, еще один уровень извлечения

#c# #.net #wcf #repository-pattern #service-layer

#c# #.net #wcf #репозиторий-шаблон #service-layer

Вопрос:

У меня есть API (DLL), который имеет различные методы, которые возвращают объекты / коллекции элементов.

Я хотел бы создать веб-сервис, который возвращал бы элементы вызывающему клиенту.

Итак, каков наилучший подход, вызвать каталог моих методов в моем API и преобразовать их в DTO с помощью automapper и вернуть их веб-службе?

Внутренне мой API использует уровень сервиса / репозитория.

Информация, которая возвращается из моего API, не всегда в правильном формате. Поэтому мне пришлось бы внести некоторые коррективы или написать новые методы.

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

Или использовать API для большинства элементов, которые я могу, и реализовать собственный Сервис / репозиторий для элементов, которые недоступны из API.

Я не хочу дублировать свою работу, но я действительно не вижу вариантов.

Может быть, сервис / репозиторий должен быть общим для моего WCF и моего API?

Ответ №1:

Кажется, что самый быстрый способ реализовать это, сохраняя при этом удобство обслуживания (скажем, так быстро 3 раза), — это использовать ваш API из вашего сервиса. Итак, методы вашего веб-сервиса будут вызывать ваш API.

Если то, что вы возвращаете вызывающему, является сериализуемыми объектами, а не EntityObjects (предполагая Entity Framework), вам не нужно сопоставлять с DTO. Просто верните объекты, и WCF автоматически вернет DTO.