Я потратил много времени на поиск лучших практик для проектирования веб-сайта ASP.NET MVC 3 с использованием EF 4.1 или другого ORM. Я нашел это tutorial on Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application. Это был хороший учебник, и я кое-что узнал. Так что это заставило меня думать и хотело узнать, что люди на стеке - это то, что вы бы использовали? если не почему и как вы создали свой веб-сайт? Я просто хочу узнать правильный способ сделать что-то и понять, почему один способ лучше, чем другой.ASP.NET MVC 3 лучшая практика/дизайн
ответ
Прежде всего сказать, что платформа Entity Framework реализует шаблон хранилища и шаблон работы единицы. Реализация Repository и блок шаблонов рабочих на вершине современного ОРМ, как основы Entity является дополнительный слой абстракции, который:
- сужает возможности базового ОРМ
- не обеспечивает дополнительную ценность для базового ОРМ
- в лучшем случае ничего не стоит, но может быть вредным
Одна из целей таких реализаций инкапсулировать логику запроса в хранилище и не один запрос, как единая ответственность принципа (SRP) хотел бы предложить , но несколько запросов и, таким образом, нарушение SRP. Что вы можете сделать, так это полагаться на ваш ORM и инкапсулировать обширную логику запросов в отдельные классы Query.
Мое предложение не должно нравиться «лучшим практикам», добавляя уровни абстракции на уровнях абстракции и т. Д., Но чтобы попытаться решить проблему, используя некоторые более общие принципы проектирования, такие как SOLID.
Ayende Rahien рассматривает заявление Kit Борей Starter в серии статей (here, here, here, here, here, here, here и here) в his blog, которые касаются так называемых лучших практик, применяемых в приложении. Это замечательно!
Спасибо, что посмотрю блог. Это действительно сводится к пониманию того, когда использовать лучшую практику/шаблон и почему. – Cam
-1 для шаблона хранилища, являющегося «бесполезным» при использовании с «современным ORM» – BZink
Заявление «в лучшем случае бесполезно, но может быть вредным», должно рассматриваться в контексте реализации шаблона репозитория и шаблона «Единица работы» поверх объекта Framework ... – saintedlama
Все эти абстракции выполняются для удовлетворения определенного набора требований. Таким образом, эти абстракции могут не подходить для ваших требований. Вопрос слишком общий. Предоставьте более подробную информацию о вашем домене, требованиях, ограничениях и т. Д. – Eranga
Это более общий вопрос. Я действительно хочу понять, когда и почему вы выбрали бы такой подход, как в учебнике, и какие другие варианты там. – Cam
Обсуждение вариантов дизайна без контекста бесполезно. – Eranga