Использование существующего веб-сервиса в MVC 3 - PullRequest
2 голосов
/ 11 марта 2012

Между прочим, я работаю над своим первым веб-приложением MVC, использующим MVC 3 и Razor с C # и .NET3.5 / 4.0, и я ищу подход " best pratice " для использование существующих веб-сервисов в приложении MVC 3. Из того, что я понял, похоже, все, что мне нужно сделать, это следующее. Включите ссылку на существующий веб-сервис в проекте MVC, создайте модель для данных, которые я хочу использовать в приложении, создайте контроллер, который выполняет вызов веб-сервиса, который затем заполняет объект, созданный из модели (чтение о AutoMapper , чтобы увидеть, как это помогает в этом процессе), а затем создайте представление для отображения данных, которые были преобразованы в модель представления MVC.

Часть, по которой у меня возникают вопросы, - это лучший способ извлечения и создания / обновления данных из веб-службы. Может быть, я слишком усложняю это, но мне кажется, что я что-то упустил.

Нужно ли создавать «модель домена», которая сопоставляется с данными, полученными из веб-службы, а затем создавать «модели просмотра», которые сопоставляются с моделью домена, а затем использовать модели просмотра в приложении MVC 3?

В основном я ищу информацию о том, как наилучшим образом использовать существующие веб-службы в качестве слоя доступа к данным.

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

На вашем уровне доступа к данным вы бы открыли соединение, получили необработанные данные и затем закрыли его.Аналогично тому, как вы получите данные из вашей базы данных.Затем вы должны преобразовать эти необработанные данные в свой бизнес-уровень (модель домена) с помощью адаптера данных.Затем любые приложения верхнего уровня, такие как ваш веб-сайт MVC3, преобразуют эту модель предметной области в модель оценочного представления вместе с любыми другими данными для рендеринга снова через адаптер данных.

Основным аргументом для этого являетсяТаким образом, сервис теперь доступен любому приложению верхнего уровня, которому это необходимо.Также логично иметь смысл использовать любые методы извлечения данных на уровне доступа к данным, поскольку логически это то, для чего предназначен уровень доступа к данным.

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

Короче говоря, вам это не нужно, но лучшая практика предлагает это сделать.Иногда бывает скучно, когда между слоями мало конверсии или нет, но часто помогает оставаться последовательным.

0 голосов
/ 02 августа 2012

Чтобы подчиняться шаблону MVC и разделению интересов, вызов базы данных должен быть в модели.И если этот веб-сервис вызывает базу данных каким-либо образом, он должен быть на уровне модели.

пусть пользовательский интерфейс напрямую взаимодействует с моделью, на случай, если позже вам понадобится веб-сервис для интеграции с другой системой, вы можете создать сервискоторый вызывает эту модель

И вы можете кэшировать ее, если она доступна только для чтения

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