ASP.NET MVC модели при использовании внешних веб-сервисов

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

Вопрос

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

Таким образом, CRUD будет обрабатываться через этот API. Я планирую создать сервисный слой, который обернет все вызовы, но у меня возникли проблемы с нахождением головы вокруг модели ... Для создания моих доменных объектов на основе модели (клиенты, заказы и т. Д.) я должен:

<Ол>
  • создайте их все вручную
  • Создайте фиктивную базу данных и наведите на нее ORM
  • Направьте ORM на существующую базу данных, но игнорируйте постоянство ORM вместо API.
  • Я чувствую, что у меня есть вся информация, необходимая для этого, но я догоняю API. Любые указатели или советы будут с благодарностью.

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

    Решение

    В зависимости от масштаба того, что вы делаете, вариант 3 опасен, поскольку вы предполагаете, что модель базы данных совпадает с моделью, предоставляемой внешней службой. Варианты 1 и 2 не очень сильно отличаются друг от друга - в любом случае вам придется решить, какими будут ваши объекты, свойства и поведение - все сводится к тому, удобнее ли вам делать это в классах или таблицы базы данных.

    Главное, чтобы внешние вызовы служб были скрыты за какой-то оболочкой. Лично я бы поставил поверх этого хранилище для обработки запросов к внешней оболочке службы и возврата объектов домена.

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

    В целом ORM не известны своей способностью генерировать классы чистой доменной модели. ORM известны тем, что они создают слои данных, которые вам не нужны в этом случае.

    Возможно, вы могли бы использовать инструмент генерации кода, такой как T4, для генерации первого прохода в классах модели вашего домена на основе веб-службы или базы данных, если это сэкономит ваше время. В противном случае вы, вероятно, просто вручную создадите доменные объекты. Даже если вы сгенерируете код первого прохода на объектах вашего домена, маловероятно, что будет чистое отображение 1-1 на объекты вашего домена из базы данных или веб-службы, поэтому вам, вероятно, придется потратить значительное время на ручное редактирование домена, сгенерированного кодом классы в любом случае.

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