Я занимаюсь разработкой большого приложения ASP.NET MVC. В настоящее время я работаю над механизмами, которые я буду использовать для структурирования своих контроллеров/представлений. Я вижу некоторые упоминания о монорельсе, и он использует "районы". Я рассмотрел статью Haacked и выглядит как интересный вариант. Я хотел бы знать, действительно ли кто-либо реализовал области в приложении ASP.NET MVC, и если у них есть какие-либо онлайн-ресурсы, которые могли бы помочь реализовать области и оправдать их существование.
Области ASP.NET MVC: важны ли они для большого приложения?
Ответ 1
Я и моя команда в настоящее время разрабатывают очень большое приложение, используя структуру ASP.NET MVC в качестве базовой технологии. Мы используем Areas, Сильно напечатанные имена имен и наша собственная версия Локализация. Пока он работает очень хорошо.
Прерыватель транзакций с ASP.NET MVC для меня будет состоять в том, что имена контроллеров должны были быть уникальными. Было совершенно очевидно, что требуется контроллер для управления запасами в инвентаре и диспетчерских областях моего приложения, и сортировка их будет слишком сложной. С областями это уже не проблема. Я настоятельно рекомендую использовать их, как обрисовал Фил Хаак.
В качестве альтернативы вы можете посмотреть реализацию Стивена Сандерсона, где он сделал это немного дальше, хотя для нас это было не то, что нам нужно.
Я бы не удивился, увидев, что Areas реализован в ASP.NET MVC очень скоро.
Удачи вам в вашем приложении, я не думаю, что вы пожалеете о выборе ASP.NET MVC.
Ответ 2
Поддержка областей в большом приложении абсолютно необходима, на мой взгляд. Мне кажется довольно странным, что Microsoft намеревается освободить ASP.NET MVC 1.0 без встроенной поддержки областей.
К счастью, у MVC нет возможностей, которые он может использовать в расширяемости. Например, в архитектуре S # arp, как кратко сказал Асаф, я взял руководство от Фила Хаака (http://haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx) и Стив Сандерсон (http://blog.codeville.net/2008/11/05/app-areas-in-aspnet-mvc-take-2/), но изменил объединенный результат для поддержки областей непосредственно под папкой представления. (Мне не понравилось, что для хранения областей просмотра была отдельная папка "Области".) Другими словами, если вы создаете область "Животные" с соответствующим контроллером Animals.AardvarksController, ваша папка "Представления" будет отображать "Виды/Животные" /трубкозубов.
Если вы не заинтересованы в использовании всей архитектуры S # arp, я бы посоветовал вам хотя бы проверить, как области были реализованы в этой структуре для использования в вашем собственном приложении. Соответствующий код включает в себя:
- Классы поддержки многоразового использования: http://sharp-architecture.googlecode.com/svn/trunk/src/SharpArch/SharpArch.Web/Areas/
- Замена механизма просмотра: http://sharp-architecture.googlecode.com/svn/trunk/src/NorthwindSample/app/Northwind.Web/Global.asax.cs
- Объявление "area" (этот пример имеет пространство имен/область под названием "Организация" ): http://sharp-architecture.googlecode.com/svn/trunk/src/NorthwindSample/app/Northwind.Web.Controllers/RouteRegistrar.cs
- Представления в области: http://sharp-architecture.googlecode.com/svn/trunk/src/NorthwindSample/app/Northwind.Web/Views/Organization/Employees/
Кстати, архитектура S # arp включает в себя генератор CRUD-лесов, который автоматически учитывает вложенные пространства имен. Как упоминал Асаф, вы можете узнать больше об этом на http://code.google.com/p/sharp-architecture/
Билли МакКафферти
Ответ 3
Взято из S # arp apchitecture 1.0 Beta примечания к выпуску:
Включение "областей" зрения, которые плавно поддерживается как подпапки в папке "Представления"