ASP.NET MVC модели при использовании внешних веб-сервисов
-
06-07-2019 - |
Вопрос
Я начинаю новый проект MVC, в котором есть некоторые особые правила и немного странности, и это меня озадачило. В частности, у меня есть доступ к базе данных, содержащей все мои данные, но она должна обрабатываться полностью через внешний веб-сервис. Не спрашивай меня почему, я не понимаю причин. Вот только как это.
Таким образом, CRUD будет обрабатываться через этот API. Я планирую создать сервисный слой, который обернет все вызовы, но у меня возникли проблемы с нахождением головы вокруг модели ... Для создания моих доменных объектов на основе модели (клиенты, заказы и т. Д.) я должен:
<Ол>Я чувствую, что у меня есть вся информация, необходимая для этого, но я догоняю API. Любые указатели или советы будут с благодарностью.
Решение
В зависимости от масштаба того, что вы делаете, вариант 3 опасен, поскольку вы предполагаете, что модель базы данных совпадает с моделью, предоставляемой внешней службой. Варианты 1 и 2 не очень сильно отличаются друг от друга - в любом случае вам придется решить, какими будут ваши объекты, свойства и поведение - все сводится к тому, удобнее ли вам делать это в классах или таблицы базы данных.
Главное, чтобы внешние вызовы служб были скрыты за какой-то оболочкой. Лично я бы поставил поверх этого хранилище для обработки запросов к внешней оболочке службы и возврата объектов домена.
Другие советы
В целом ORM не известны своей способностью генерировать классы чистой доменной модели. ORM известны тем, что они создают слои данных, которые вам не нужны в этом случае.
Возможно, вы могли бы использовать инструмент генерации кода, такой как T4, для генерации первого прохода в классах модели вашего домена на основе веб-службы или базы данных, если это сэкономит ваше время. В противном случае вы, вероятно, просто вручную создадите доменные объекты. Даже если вы сгенерируете код первого прохода на объектах вашего домена, маловероятно, что будет чистое отображение 1-1 на объекты вашего домена из базы данных или веб-службы, поэтому вам, вероятно, придется потратить значительное время на ручное редактирование домена, сгенерированного кодом классы в любом случае.