Что нового в ASP.NET 4.0

воскресенье, 14 февраля 2010, Александр Краковецкий

Каждый желающий уже имеет возможность загрузить и ознакомится с новой версией Visual Studio 2010 RC. Интерфейс новой версии полностью переписан на WPF, добавлено большое количество новых возможностей, о которых можно почитать здесь. Ну а в этой статье рассмотрим главные нововведения и улучшения в ASP.NET 4.0.

Содержание:

  1. Шаблоны кода (сниппеты)
  2. Поддержка CSS 2.1
  3. Динамический IntelliSense для JavaScript
  4. Упаковка и развертывание (Packaging and Deployment)
  5. Улучшенная поддержка кэширования (Output Caching)
  6. Новые свойства Page.MetaKeywords and Page.MetaDescription
  7. Автостарт web-приложений
  8. Улучшенная работа с ViewState
  9. Улучшения в ListView
  10. Улучшения в FormView
  11. Улучшенная работа с ClientID
  12. Сжатие данных в сессии
  13. 301 Permanent Redirect в ASP.NET

Шаблоны кода (сниппеты)

Сниппеты - это шаблоны кода, которые можно вставлять с помощью ключевых слов. В VS2010 представлено более 200 сниппетов для ASP.NET, HTML и JavaScript.

Примеры:

table ->

       


           
               
           
       

               

a ->

        content

Очень часто вместе с элементом управления TextBox необходимо также использовать валидаторы. Использовав соответствующий сниппет (например, requirefieldvalidator), VS 2010 сгенерирует нужный код для RequiredFieldValidator и автоматически подставит id текстового элемента в значение ControlToValidate. Все, что вам остается, это ввести уникальную для данного валидатора информацию.

Дополнительная информация:

Поддержка CSS 2.1

Visual Studio 2010 поддерживает CSS 2.1:

Дополнительная информация:

Динамический IntelliSense для JavaScript

IntelliSense в Visual Studio 2010 распознает даже динамически созданные объекты:

Упаковка и развертывание (Packaging and Deployment)

Процес разветрывания web-приложения (Web Deployment) в VS 2010 можна разбить та следующие этапы:

Упаковка (Web Packaging)

VS 2010 использует MSDeploy для создания .zip файла для web-приложения (web package).

Этот архив содержит:

  • метаданные
  • информацию о всех настройках IIS (например, application pools, error pages)
  • контент вашего web-приложения (.aspx, .ascx, .js, изображения и т.д.)
  • базу SQL Server
  • другие данные (файлы) - Security Certs, GAC Components, Registryи т.д.

Этот пакет может быть проинсталирован на сервере с помощью IIS Manager UI Wizard или через командную строку или API для автоматических сценариев развертывания (automated deployment scenarios).

Изменения в web.config файле (web.config transformations)

В VS 2010 представлено XML Document Transform (XDT), который позволяет изменять web.config в процессе развертывания. Изменения контролируются файлами web.debug.config, web.release.configи т.д. Имена этих файлов соответствуют конфигурации MSBuild, который вы собираетесь развернуть.

Также можно контролировать тип изменений с помощью XDT. Например, значение connectionString в web.config будет замещено значением из web.release.config (для release конфигурации):

Развертывание базы данных

VS 2010 позволяет развертывать web-приложение вместе с связанной базой данных. Предоставив connection string для вашей базы, VS 2010 автоматически создаст данные и схему и запакует их для развертывания. Также вы можете включить свои .sql скрипты и задать порядок их выполенения на сервере. В процессе инсталяции можно задать новый connection string.

1-Click Publish

VS 2010 позволяет не только развернуть ваше web-приложение, но и использовать IIS remote management service для развертывания на удаленных серверах. Visual Studio 2010 позволит создавать publish profile для вашего хостинг аккаунта или тестовых серверов, сохранять эти данные и развертывать приложения с помощью тулбара Web One Click.

Дополнительная информация:

Улучшенная поддержка кэширования (Output Caching)

В ASP.NET 4.0 стало возможным задавать провайдер для кэширования, а также создавать свои.  Другими словами, можно задать хранилище, где будут храниться закэшированные данные.

Хранилищем может выступать:

  • память
  • локальные или удаленные диски
  • "облачные" хранилища
  • распределенные движки для кэширования (distributed cache engines)

Для создание своего провайдера необходимо унаследоваться от нового типа System.Web.Caching.OutputCacheProvider. Кроме того, можно задавать провайдера в web.config в подсекции outputCache -> providers:


 
    
                 type="Test.OutputCacheEx.DiskOutputCacheProvider,  DiskCacheProvider"/>
    

 

По умолчанию в ASP.NET 4.0 все HTTP ответы, сгенерированные страницы находятся в in-memory output cache, где AspNetInternalProvider задан в качестве defaultProvider (см. пример выше). Вы можете изменить провайдер по умолчанию.

Кроме того, вы можете выбрать разные варианты кэширования для конкретного контрола или запроса. Для первого варианта это можно сделать с помощью нового свойства providerName в OutputCache:

<%@ OutputCache Duration="60" VaryByParam="None"  providerName="DiskCache" %>

Изменение провайдера для запроса выглядит немного иначе. Необходимо переопределить новый метод GetOuputCacheProviderName в Global.asax:

public override string GetOutputCacheProviderName(HttpContext context)
{
    if  (context.Request.Path.EndsWith("Advanced.aspx"))
       return "DiskCache";
    else
    return base.GetOutputCacheProviderName(context);
}

Рассмотренные возможности дают большую гибкость при управлении кэширования сайта и теперь полностью зависят от фантазии нужд разработчиков.

Новые свойства Page.MetaKeywords and Page.MetaDescription

Два новых свойства Page.MetaKeywords и Page.MetaDescription предназначены для управления метаинформаций.

Значения можно задать в директиве Page:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" Keywords="Meta Keywords" Description="Meta Description" %>

и программно:

if (!IsPostBack)
{
    Page.MetaDescription = "Meta Description";  
    Page.MetaKeywords = "Meta Keywords";  
}

что сгенерирует следующий HTML код:

В данный момент свойство Description доступно в директиве Page, свойство Keywords отсутствует.

Автостарт web-приложений

Ряд web-приложений требуют загрузки больших массивов данных или инициализируют большое количество объектов перед первым запросом. Раньше необходимо было заботится об этом самостоятельно (в методе Application_Load в Global.asax).

Новая возможность под названием "автостарт" (auto-start, доступно в ASP.NET 4.0 на IIS 7.5 и Windows Server 2008 R2) позволяет управлять запуском пула приложения, инициализацией ASP.NET приложений и работой с HTTP запросами.

Для того, чтобы использовать автостарт, необходимо прописать в applicationHost.config:


   

Так как один пул приложения может содержать несколько web-приложений, можно их сконфигурировать:


 
             preloadEnabled="true"
         preloadProvider="PrewarmMyCache" >
       
   

 



 


              type="MyNamespace.CustomInitialization, MyLibrary" />

IIS 7.5 использует информацию с applicationHost.config и определяет какое web-приложение нуждается в автоматическом старте. Для каждого приложения помеченного как auto-start, IIS7.5 посылает запрос к ASP.NET 4.0 чтобы стартовать приложение в состояние, на протяжении которого приложение временно не принимает HTTP запросы. Когда приложение находится в этом состоянии, ASP.NET инициализирует тип заданный в атрибуте preloadProvider (см. пример выше) и затем заходит в доступную точку входа (public entry point).

Для создания управляемого auto-start типа с обязательной точкой входа необходимо реализовать интерфейс IProcessHostPreloadClient так, как это показано в примере:

public class CustomInitialization :  System.Web.Hosting.IProcessHostPreloadClient
{
    public void Preload(string[]  parameters)
    {
        // Perform initialization.
    }
}

После того, как код инициализации выполнен в Preload методе, ваше ASP.NET приложение готово к получению и обработке запросов.

Улучшенная работа с ViewState

В ASP.NET 4.0 реализовано поддержку свойства ViewStateMode (на уровне элемента управления или страницы), который может принимать значения:

  • Enabled - поддержка ViewState включена (даже если родительский элемент управления имеет ViewStateMode = Disabled)
  • Disabled - поддержка ViewState выключена
  • Inherit - наследует значение родительского элемента управления (по умолчанию)

Работает только если EnableViewState установлено в true.

Дополнительная информация:

Улучшения в ListView

В ASP.NET 4.0 появилась возможность использования ListView без LayoutTemplate:


   
        <%# Eval("LastName")%>
   

Улучшения в FormView

В FormView добавлено свойство RenderTable для управления выводом (table или div):


   
       

<%# Eval("LastName")%>


   

выдаст такой HTML:






test




При установке свойства RenderTable ="false" получим:

test

Улучшенная работа с ClientID

Добавлен ClientIDMode:

  • Legacy – по умолчанию, соответсвует старой логике;
  • Static – использовать ID вне зависимости от контейнера;
  • Predictable – добавляет к ID только RowClientIdSuffix;
  • Inherit – выбирает установки родительского элемента управления.

Сжатие данных в сессии

Для этого необходимо выставить значение compressionEnabled в true:

    sqlConnectionString=". . ."
    allowCustomSqlDatabase="true"
    compressionEnabled="true"
/>

Для сжатия используется System.IO.Compression.GZipStream.

301 Permanent Redirect в ASP.NET

301 Permanent Redirect означает, что ресурс навсегда перемещен на новый URI.

В ранних версиях необходимо было использовать такой код [2]:

protected void Application_BeginRequest(object sender, EventArgs e) { 
     var host = Request.Url.Host; 
     if (host.Equals("progblog.ru", StringComparison.OrdinalIgnoreCase)) { 
         var newUrl = new UriBuilder(Request.Url); 
         newUrl.Host = "www." + host; 
         Response.StatusCode = 301; 
         Response.Status = "301 Moved Permanently"; 
         Response.AddHeader("Location", newUrl.Uri.AbsoluteUri); 
         Response.End(); 
         return; 
     } 

}

В ASP.NET 4.0это можно сделать с помощью RedirectPermanent:

RedirectPermanent("~/path.aspx"); 

Дополнительная информация:

Ссылки:

  1. Stephen Walther - New Features of ASP.NET 4.0
  2. ASP.NET 4.0 Roadmap
  3. Visual Studio 2010 and ASP.Net 4.0 (Beta1)
  4. ASP.NET 4.0 and Visual Studio 2010 Web Development Beta 1 Overview

Скачать презентацию.

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии