Литмир - Электронная Библиотека

□ асинхронные контроллеры, представленные в библиотеке MVC Futures, будут включены в финальный вариант ASP.NET MVC 2;

□ появится возможность создавать и использовать несколько провайдеров валидации, серверной и клиентской;

□ появится возможность перегружать создание TempDataProvider с помощью нового метода CreateTempDataProvider в классе Controller.

Заключение

ASP.NET MVC развивается значительными темпами, что показал период времени, за который была написана эта книга. За это время вышло несколько версий ASP.NET MVC 2, каждая из которых привнесла новый богатый функционал и изменила к лучшему старый.

ASP.NET MVC— это молодой, но мощный Framework, и если его развитие продолжится теми же темпами, которыми он развивается сейчас, то вскоре ASP.NET MVC станет мощнейшим инструментом разработки веб-сайтов, включающим в себя как средства для создания чистого быстрого кода для небольших проектов, так и средства, востребованные в корпоративной среде. Кроме того, поддержка Ajax, асинхронного выполнения, областей и улучшенная безопасность — это то, чего стоит ждать в финальной версии MVC 2 — следующей версии Framework.

Остается только пожелать инструменту ASP.NET MVC и дальше получать новые средства, новые инструменты и функционал, который будет востребован специалистами веб-разработки самого широкого профиля. Пусть ASP.NET MVC обретает все большую заслуженную популярность.

ПРИЛОЖЕНИЯ

ПРИЛОЖЕНИЕ 1

Настройка среды для хостинга решений на MVC Framework

Задача хостинга приложений, написанных с помощью ASP.NET MVC, решается так же просто, как и задача хостинга обычных ASP.NET-приложений. На сегодняшний момент все компании, предоставляющие услуги хостинга, заявляют о поддержке ASP.NET MVC. На практике же поддержка ASP.NET MVC — это всего лишь маркетинговый ход, который позволяет добавить еще одну строчку в рекламный проспект. Так как сайты ASP.NET MVC могут работать везде, где работают обычные ASP.NET-сайты, никакой особой поддержки для ASP.NET MVC не требуется.

Однако, несмотря на потенциальную возможность запуска проектов ASP.NET MVC на любом ASP.NET-хостинге, вы можете столкнуться с рядом различных вариантов окружения и версий серверов IIS, которые потребуют разных решений и некоторых дополнительных действий. Рассмотрим самые важные из них.

Настройка маршрутизации

Для правильного функционирования механизма маршрутизации в ASP.NET MVC необходима корректная обработка сервером IIS расширений mvc, пути с которыми используются внутри MVC Framework. Эта проблема, если она возникла, довольно просто решается в случаях, когда вы имеете дело с хостингом на базе IIS7 (сегодня это наиболее распространенный вариант). Для решения проблемы вам необходимо с помощью административной панели инструментов, которую предлагает ваша хостинговая компания, установить режим работы приложения в IIS7 Integrated Mode вместо установленного по умолчанию режима IIS7 Classic Mode. Варианты доступа к этой опции могут отличаться в зависимости от хостера.

Если же вы имеете доступ к серверу IIS, то изменение режима работы IIS7 для вашего приложения выполняется через инструмент Internet Information Services Manager. В IIS Manager вам достаточно задать верный пул приложений для своего приложения, который бы работал в режиме IIS7 Integrated Mode, по умолчанию это Default Application Pool или DefaultAppPool (рис. П1.1).

Asp.net mvc framework - img_84

Проблема маршрутизации особенно актуальна для хостинга ASP.NET MVC-приложений на IIS6, в котором необходимо проделать дополнительные действия.

Если вы имеете доступ к IIS-серверу и можете его конфигурировать (в случаях, когда вы производите самостоятельный хостинг или хостинг на виртуальных серверах), вам необходимо самостоятельно зарегистрировать для IIS6 обработку расширения mvc. Это можно проделать двумя способами.

□ Вы можете использовать скрипт register.wsf, который поставляется с ASP.NET MVC и расположен по адресу C:\Program Files\Microsoft ASP.NET\ASP.NET MVC\Scripts или C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC\Scripts для 64-битных операционных систем. Скрипт register.wsf автоматически зарегистрирует обработку расширения mvc для IIS6.

□ Вместо использования скрипта вы можете проделать необходимые для регистрации действия собственноручно. Для этого необходимо пройти в свойства проекта, выбрать вкладку Virtual Directory и в ней нажать кнопку Configuration. В окне конфигурации приложения будет показан список привязок расширений к ISAPI-обработчикам. Добавьте новое расширение mvc и привяжите его к обработчику c:\WINDOWS\Microsoft.NET \Framework\v2.0.50727\aspnet_isapi.dll. Путь к обработчику ISAPI может отличаться, но вы можете определить верный, найдя сопоставленный путь для расширения aspx. После добавления обработчика вы увидите его в списке сопоставлений (рис. П1.2).

Asp.net mvc framework - img_85

Рис. П1.2. Список сопоставлений расширений и ISAPI-обработчиков

□ После сопоставления расширения mvc для вашего приложения необходимо видоизменить создание маршрутов в Global.asax так, как показано в листинге П1.1.

Листинг П1.1. Модифицированный код Global.asax

using System;

using System.Collections.Generic;

using System.Linq; using System.Web;

using System.Web.Mvc;

 using System.Web.Routing;

namespace MvcApplicationl {

  public class MvcApplication : System.Web.HttpApplication

  {

    public static void RegisterRoutes(RouteCollection routes)

    {

      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

      routes.MapRoute(

        "Default",

        "{controller}.mvc/{action}/{id}",

        new { action = "Index", id = "" }

      );

      routes.MapRoute(

        "Root",

        "",

        new { controller = "Home", action = "Index", id = "" }

      );

    }

    protected void Application_Start()

    {

      RegisterRoutes(RouteTable.Routes);

    }

  }

}

Обратите внимание на выделенные участки кода листинга П1.1. Вместо создаваемого по умолчанию маршрута с шаблоном {controller}/{action}/{id}, для IIS6 необходимо создать маршрут с шаблоном {controller}.mvc/{action}/{id}. Плюс, для обработки запросов к корню приложения необходимо создать еще один маршрут с именем Root и пустым шаблоном маршрута.

После таких изменений каждый запрос к вашему приложению должен иметь вид {controller}.mvc/{action}/{id}, т. е. каждая строка имени контроллера должна заканчиваться с расширением mvc. Например: запрос /product.mvc/details/1 вызовет контроллер-действие Details в контроллере Product и передаст в параметр id значение 1.

В случае, когда вы не имеете доступа к конфигурированию сервера IIS и не можете задать сопоставление расширения и ISAPI-обработчика, то решением может стать использование вместо расширения mvc другого расширения, зарегистрированного в системе: axd, aspx, ashx. В таком случае описанный в листинге код должен быть модифицирован следующим образом:

routes.MapRoute(

  "Default",

  "{controller}.aspx/{action}/{id}",

72
{"b":"971383","o":1}