#asp.net-mvc-3 #c#-4.0 #domain-driven-design
#asp.net-mvc-3 #c #-4.0 #дизайн, управляемый доменом
Вопрос:
Теперь я приступаю к самой интересной части моего пути по созданию MVC-приложения. Я провел последние 3 недели, исследуя архитектуру, в частности ONION, и изучая IOC / DI и тому подобное.
Итак, мой вопрос заключается в следующем: каков наилучший способ реализации ViewModels? До сих пор я видел несколько ужасных примеров.
Комментарии:
1. Ужасные примеры? Например? Можете ли вы опубликовать их? Ссылки на них?
2. Хахха. Нет! Я уверен, что 5 минут в Google сделают это за вас. Меня беспокоило то, что кто-то, с кем я столкнулся, отправлял ViewModel на уровень обслуживания, извлекал данные из ViewModel и затем обновлял базу данных. Итак, теперь ServiceLayer зависит от этой конкретной ViewModel… Мне это не понравилось.
3. Что касается уровня сервиса, который может использоваться в случаях, когда они специально кэшируют модели представлений для повышения производительности, смотрите CQRS (остерегайтесь, что ваша голова может расколоться)
4. Круто, но, по крайней мере, внедрите интерфейс, если вы собираетесь идти этим путем.
Ответ №1:
Я рекомендую просмотреть эту статью, в которой описываются различные «тактики» для обработки моделей представлений.
http://blogs.msdn.com/b/simonince/archive/2010/01/26/view-models-in-asp-net-mvc.aspx
Некоторые рекомендации, которые я могу дать вам для моделей просмотра, это:
- Основывайте их непосредственно на своем представлении и на том, что нужно пользовательскому интерфейсу,
- Предпочитаю создавать пользовательские модели просмотра для отдельных страниц, а не обобщать их для повторного использования в разных представлениях.
- Держите их простыми и плоскими, не переусердствуйте с наследованием и т.д.
- Если вы выполняете сопоставление из моделей базы данных, примите существующий метод сопоставления между вашими моделями и моделями представления, такой как AutoMapper
- Рассмотрите возможность использования dynamic в некоторых случаях, он более гибкий и может иметь меньше проблем.
Комментарии:
1. Потрясающе и спасибо вам. Я добавлю ваш ответ в свой список того, что «ViewModel» что делать и чего не делать для моего блога.
2. @Code О, милый, прокомментируй ссылку, если ты не возражаешь, когда она появится. Как бы я ни был польщен тем, что вы приняли ответ, я бы немного подождал, вероятно, есть много других отзывов ; )