Первые впечатления от ASP.NET MVC

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;
   return base.View(string.Format("~/Components/{0}/Views/{1}.aspx", component, view),
                       string.Format("~/Components/{0}/Masters/Site.master", component), model);
}

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

итого получилось вот таккая структура:



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

2 комментария:

  1. так может просто использовать области (Areas)? правда, они только с MVC2 появились.

    ОтветитьУдалить
  2. чтобы разбить на части - можно, я бы даже сказал - нужно, нефиг код в одной куче держать
    MVC2 не большая проблема, четверка же вышла уже

    ОтветитьУдалить

Можете оставить свой комментарий