1. работает быстро
2. разрабатывать дольше, чем просто на asp.net (прям закон сохранения энергии)
Собственно - разбирался в нем я не более часа, с утра, с просони :), получилось так уж
Базовых знаний C#, MVC как архитектуры и небольшого опыта разработки приложений на ASP.NET вполне хватает чтобы разобрать что к чему, тем более Visual Studio 2010 готова предоставить нам тестовое приложение, для разбора
Решил посмотреть какой тестовый проект нам предоставляет студия, для разбора MVC, посмотрел и немного огорчился, т.к. студия все вьюшки, контроллеры и модели раскидывает лишь в 3 папки в корне проекта, а хочется мне разрабатывать отдельную компоненту (модуль), который легко портировался бы между проектами, или который легко можно было бы отдать на тестирование другому разработчику, как например в joomla - скопировал папку с компонентой, а в ней и модели с вьюшками, и контроллер, а также правила роутинга (ну не понравилась мне классическая {controller}/{action}/{id}), потому я и вынес в отдельную папку все добро от одной компоненты, а для обработки определения текущей вьющки - создал базовый класс для контроллеров, и там пишем что-то вроде этого:
protected override ViewResult View(string viewName, string masterName, object model)
{
string component = ControllerContext.RouteData.Values["controller"].ToString();
string view = viewName == "" ? ControllerContext.RouteData.Values["action"].ToString() : viewName;
итого получилось вот таккая структура:
2. разрабатывать дольше, чем просто на asp.net (прям закон сохранения энергии)
Собственно - разбирался в нем я не более часа, с утра, с просони :), получилось так уж
Базовых знаний C#, MVC как архитектуры и небольшого опыта разработки приложений на ASP.NET вполне хватает чтобы разобрать что к чему, тем более Visual Studio 2010 готова предоставить нам тестовое приложение, для разбора
Решил посмотреть какой тестовый проект нам предоставляет студия, для разбора MVC, посмотрел и немного огорчился, т.к. студия все вьюшки, контроллеры и модели раскидывает лишь в 3 папки в корне проекта, а хочется мне разрабатывать отдельную компоненту (модуль), который легко портировался бы между проектами, или который легко можно было бы отдать на тестирование другому разработчику, как например в joomla - скопировал папку с компонентой, а в ней и модели с вьюшками, и контроллер, а также правила роутинга (ну не понравилась мне классическая {controller}/{action}/{id}), потому я и вынес в отдельную папку все добро от одной компоненты, а для обработки определения текущей вьющки - создал базовый класс для контроллеров, и там пишем что-то вроде этого:
protected override ViewResult View(string viewName, string masterName, object model)
{
string component = ControllerContext.RouteData.Values["controller"].ToString();
string view = viewName == "" ? ControllerContext.RouteData.Values["action"].ToString() : viewName;
return base.View(string.Format("~/Components/{0}/Views/{1}.aspx", component, view),
string.Format("~/Components/{0}/Masters/Site.master", component), model);
}
мастерпейдж тоже идет с контроллером, по дефолту - у него указывается мастерпейдж сайта, но мне хотелось чтобы у каждой компоненты можно было его менять :)
итого получилось вот таккая структура:
Спрашивается - зачем избавляться от стандартной структуры, отвечаем - да многие наверное в папку моделс накидают кучу моделей, да и вьюшки в кучу тоже, а это не хорошо, а если все связанное с одной компонентой собрать в одном месте - то все будет правильно, делайте так :)
так может просто использовать области (Areas)? правда, они только с MVC2 появились.
ОтветитьУдалитьчтобы разбить на части - можно, я бы даже сказал - нужно, нефиг код в одной куче держать
ОтветитьУдалитьMVC2 не большая проблема, четверка же вышла уже