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

Прочие улучшения в API

Кроме перечисленных ранее значительных нововведений, ASP.NET MVC 2 предложит еще ряд менее значительных изменений в API:

□ новый защищенный виртуальный метод createActioninvoker в классе controller, который вызывается свойством Actioninvoker и позволяет создавать отложенное создание экземпляра (instantiation) инициатора, если он не установлен;

□ новый защищенный виртуальный метод OnAuthorizationFailed в классе AuthorizationFilter, который позволяет фильтрам авторизации отрабатывать ситуации, когда авторизация была провалена;

□ новый метод Add(stringkey, object value) у класса ValueProviderDictionary, который позволяет проще задавать значения для экземпляров класса;

□ новое свойство ActionDescriptor в классе AuthorizationContext;

□ метод Controller.Execute теперь вызовет исключение в ситуации, когда он вызван более одного раза в одном экземпляре. Это означает явное ограничение на вызов единственного экземпляра контроллера на каждый запрос;

□ класс Controller более не наследуется от MarshalByRefObject;

□ конструктор AuthorizationContext(ControllerContext context) объявлен устаревшим, вместо него предлагается использовать вариант с двумя параметрами;

□ внесены изменения в типы моделей так, что они теперь могут быть не только ссылочными типами, но и значениями. Например, в MVC 2 можно будет использовать System.Int32 как тип модели;

□ поиск контроллеров в пространстве имен, указанном при регистрации маршрутов, теперь будет выполняться и в подпространствах имен.

Кроме нововведений, MVC 2 содержит изменения, которые "ломают" совместимость с существующим кодом:

□ из класса DefaultControllerFactory исключено свойство RequestContext, вместо этого значение RequestContext передается в методы GetControllerinstance и GetControllerType. Это изменение нарушает работу пользовательских вариантов фабрики контроллеров, которые наследовались от класса DefaultControllerFactory;

□ строковое значение area в MVC 2 стало зарезервированным значением, которое нельзя использовать в качестве параметров маршрута при создании маршрутизации. В этом area стало похоже на бывшие ранее зарегистрированными строки controller и action;

□ методы расширения хелпер-классов (вспомогательных классов) отныне возвращают MvcHtmlString, вместо строки. Это нововведение рассчитано на использование в окружении ASP.NET 4.0 для получения преимуществ от нового синтаксиса элементов HTML-кодирования;

□ действия, которые возвращают JsonResult, в MVC 2 обязаны вызываться только в ответ на POST-запросы, это ограничение введено в целях повышения безопасности, поскольку обнаружены новые типы атак JSON Hijacking, осуществляемые при GET-запросах JSON-данных. Однако MVC 2 будет поддерживать способ обойти это ограничение через использование свойства JsonRequestBehavior у класса JsonResult;

□ свойства Model и ModelType объявлены устаревшими, вместо них предлагается использовать новое свойство ModelMetadata, которое содержит в себе данные Model и ModelType.

Нововведения Visual Studio 2010

Релиз Visual Studio 2010 будет содержать финальную версию ASP.NET MVC 2. Для более полной поддержки работы с MVC в Visual Studio 2008 и 2010 будут внесены некоторые изменения: введена поддержка создания областей с помощью элементов интерфейса и помощников, добавлены сниппеты (snippet — фрагмент) для быстрого создания кусочков кода.

Кроме того, MVC 2 будет содержать новый тип проекта, который будет представлять собой облегченный, "пустой" вариант текущего проекта MVC. В нем будут отсутствовать готовые контроллеры AccountController, HomeController и не будет готовых представлений или элементов страниц MasterPage.

Visual Studio 2010 получит новый профиль среды разработки под названием Web Development (Code Optimized). Профиль среды разработки определяет набор инструментов и внешний вид Visual Studio. Профиль Code Optimized оптимизирован для более удобного набора кода и увеличения рабочего пространства за счет сокрытия панелей с кнопками и элементами управления.

Далее приведены еще некоторые полезные нововведения в Visual Studio 2010, которые могут быть полезны при разработке проектов на ASP.NET MVC.

Мультитаргетинг в Visual Studio 2010

В Visual Studio 2010 понятие мультитаргетинга, т. е. поддержка сразу нескольких версий платформы .NET, приобретает новые возможности. Так как .NET 4.0 Framework содержит новую версию исполняемой среды CLR 4.0, то при установке Framework не заменит собой .NET 3.5, но предложит двум версиям существовать одновременно. Теперь, в зависимости от выбранной версии Framework (рис. 9.10), IntelliSense в Visual Studio будет отображать именно характерные для номера Framework имена методов, свойств, полей и т. д.

Asp.net mvc framework - img_81

Поддержка нескольких мониторов

Для удобства разработчиков, которые используют в своей работе несколько мониторов (от двух и более), Visual Studio 2010 содержит ряд нововведений, которые помогут в полной мере задействовать мониторы в работе.

В связи с тем, что все окна в Visual Studio 2008 были частью одного главного окна, пользователи не имели возможности вынести часть окон на другие мониторы. В Visual Studio 2010 это проблема решена, теперь разработчик может расположить любые панели инструментов, информационные окна, окна редакторов кода и другие на разных мониторах (рис. 9.11).

Asp.net mvc framework - img_82

Сниппеты JavaScript, Html, ASP.NET в Visual Studio 2010

Сниппет — это полезный инструмент, который позволяет сократить время, затрачиваемое разработчиком на набор кода. Сниппет представляет собой короткую команду, которая разворачивается в некий шаблон кода. Например, сниппет foreach для C# разворачивается в одноименный шаблон создания цикла foreach. Для того чтобы использовать сниппет, необходимо набрать его и нажать клавишу <Tab>. Есть и другой способ: можно вызвать список сниппетов с помощью комбинации клавиш <Ctrl>+<K>, <Ctrl>+<X> и выбрать необходимый сниппет из списка.

Visual Studio 2010 вводит поддержку сниппетов для быстрого набора HTML-, ASP.NET- и JavaScript-кода (рис. 9.12). Использование сниппетов позволит значительно ускорить рутинный набор кода для ASP.NET-страниц и элементов управления или скриптов JavaScript.

Asp.net mvc framework - img_83

Что дальше?

Кроме перечисленных ранее функций, которые появились в MV C 2 Preview 2, планируется, что финальный вариант ASP.NET MVC 2 будет содержать еще ряд нововведений:

□ методы расширения Html.RenderAction и Html.Action, которые ранее являлись частью библиотеки MVC Futures, станут частью MVC 2. Эти методы предназначены для формирования разметки на основе результата действия и внедрении ее в определенное представление. Таким образом, в представлении можно будет выводить результат действий из других контроллеров;

□ будет расширен набор строготипизированных вспомогательных методов расширения для работы с шаблонами, добавятся методы: ValidationMessageFor, TextAreaFor, TextBoxFor, HiddenFor, DropDownListFor;

□ изменится поведение TempDataDictionary. Ее значения будут удаляться не после второго запроса, а сразу после чтения, что означает, что если данные TempData были прочтены в контексте этого же запроса, то они не будут доступны в следующем, как это могло бы быть в первой версии MVC. Данные в TempData будут сохранены даже после второго запроса, если их не прочитали. Для сохранения данных и после чтения будет предоставлен метод Keep, который позволит продлить жизнь данных в TempData;

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