ASP.NET MVC модели при использовании внешних веб-сервисов - PullRequest
0 голосов
/ 25 октября 2009

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

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

  1. Создать их все вручную
  2. Создать фиктивную базу данных и указать на нее ORM
  3. Направьте ORM на существующую базу данных, но игнорируйте постоянство ORM вместо API.

Я чувствую, что у меня есть вся информация, необходимая для этого, но я догоняю API. Любые указатели или советы будут с благодарностью.

Ответы [ 2 ]

3 голосов
/ 25 октября 2009

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

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

1 голос
/ 26 октября 2009

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

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

...