Your SlideShare is downloading. ×
Развитие веб-платформы для разработчика: ASP.NET MVC 2.0 и ASP.NET Web Forms 4.0
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Развитие веб-платформы для разработчика: ASP.NET MVC 2.0 и ASP.NET Web Forms 4.0

1,936
views

Published on

Краткий обзор ASP.NET MVC 2.0 и ASP.NET Web Forms 4.0.

Краткий обзор ASP.NET MVC 2.0 и ASP.NET Web Forms 4.0.

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,936
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
17
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Развитие веб-платформы для разработчика: ASP.NET MVC 2.0 и ASP.NET Web Forms 4.0
    Гайдар Магдануров
    t: http://twtter.com/gaidar
    e: GaidarMa@microsoft.com
  • 2. Платформа ASP.NET
    Dynamic Data
    Библиотека для автоматического создания приложений работающих с данными
    Microsoft Ajax
    Набор клиентского JavaScript кода и серверных компонентов
    2.0
    WebForms
    Элементы управления, модель событий, источники данных
    MVC Framework
    Инфраструктура представлений и контроллеров, поддержка модели
    4.0
    Службы ASP.NET
    Кеширование, хранение состояния, маршрутизация, хранение данных пользователей, поддержка локализация
    Ядро ASP.NET
    Процесс обработки Http запросов, инфраструктура HttpModule иHttpHandler, интеграция с веб-серверомIIS, модель расширения
  • 3. Ядро и службы ASP.NET 4.0
  • 4. Автоматический запуск приложений
    Для приложений, требующих длительной инициализации
    Работает на IIS 7.5
    Конфигурация в applicationHost.config
    <applicationPools>
    <add name="MyApplicationPool" startMode="AlwaysRunning" /></applicationPools>
  • 5. Автоматический запуск приложений
    <sites>
    <site name="MySite" id="1">
    <application path="/"
    serviceAutoStartEnabled="true"
    serviceAutoStartProvider="PrewarmMyCache" >
    <!-- Additional content -->
    </application>
    </site>
    </sites>
    <serviceAutoStartProviders>
    <add name="PrewarmMyCache"
    type="MyNamespace.CustomInitialization, MyInitLib" />
    </serviceAutoStartProviders>
  • 6. Автоматический запуск приложений
    Управление инициализацией приложения
    До отработки метода Preload приложение не принимает запросы
    public class CustomInitialization : System.Web.Hosting.IProcessHostPreloadClient { public void Preload(string[] parameters) { }
    }
  • 7. Расширенный механизм кеширования
    Возможность добавления собственных провайдеров кеширования
    Наследование System.Web.Caching.OutputCacheProvider
    Конфигурирование в web.config
    Возможность выбора системы хранения
    Локальные или сетевые диски, база данных «в облаке», системы распределенного кеша
  • 8. Кеширование: настройка
    Конфигурирование в web.config
    <caching>
    <outputCachedefaultProvider="AspNetInternalProvider"> <providers> <add name="DiskCache" type=“ChacheProviders.DiskOutputCacheProvider,DiskCacheProvider"/> </providers> </outputCache></caching>
  • 9. Кеширование: настройка
    По умолчанию AspNetInternalProvider
    Хранение данных в памяти
    Возможность назначать провайдеры на уровне страницы и на уровне запроса
  • 10. Кеширование: уровень страницы
    <%@ OutputCache Duration="60" VaryByParam="None" providerName="DiskCache" %>
  • 11. Кеширование: уровень запроса
    В Global.asax
    public override stringGetOutputCacheProviderName(HttpContext context)
    {
    if (context.Request.Path.EndsWith("Advanced.aspx"))
    return "DiskCache";
    else
    return base.GetOutputCacheProviderName(context);
    }
  • 12. Уменьшение размера состояния сеанса
    Использование System.IO.Compression.GZipStream для сжатия состояния
    Особенно актуально для веб-ферм, при хранении состояния в SQL Server или out-of-proc сервере состояния
    <sessionState
    mode="SqlServer"
    sqlConnectionString="data source=dbserver;Initial Catalog=aspnetstate"
    allowCustomSqlDatabase="true"
    compressionEnabled="true"
    />
  • 13. Постоянные редиректы
    Метод Response.Redirectвыдает 302 Moved Temporary – соответственно лишний обмен по HTTP сообщениями
    PermanentRedirectвыдает 301 – Moved Permanently
    RedirectPermanent("/new/content.aspx");
    Поисковые системы кешируют страницы с кодом 301 и не запрашивают повторно
  • 14. Настройки разрешенных URL
    Возможность увеличения длины путей более 260 символов:
    <httpRuntimemaxRequestPathLength="260" maxQueryStringLength="2048" />
    Контроль допустимых символов в URL
    <httpRuntimerequestPathInvalidChars="<,>,*,%,&,:," />
  • 15. Валидация запросов
    Создание собственного валидатора запросоврегистрация в web.configсекцииhttpRuntime
    Наследование System.Web.Util.RequestValidator
    <httpRuntimerequestValidationType=“MyLib.MyValidator, Samples" />
    Метод IsValidRequestString
    public class CustomRequestValidation : RequestValidator {
    protected override boolIsValidRequestString( HttpContext context, string value, RequestValidationSourcerequestValidationSource, string collectionKey, out intvalidationFailureIndex) {...} }
  • 16. Кодирование URL и HTML
    Создание собственных классов для обработки вызововпри сохранении API
    Наследование System.Web.Util.HttpEncoder
    Автоматическая подмена вызовов методов кодирования классов System.Web.HttpUtilityиSystem.Web.HttpServerUtility
    Настойка в web.config
    <httpRuntimeencoderType=“MyLib.MyCustomEncoder, Samples" />
  • 17. Настройка в файле aspnet.config в директории, куда установлен .NET FW
    <?xml version="1.0" encoding="UTF-8" ?> <configuration> <runtime> <appDomainResourceMonitoring enabled="true"/> </runtime> </configuration>
    Новые счетчики в категории ASP.NET Applications - % Managed Processor Time и Managed Memory Used
    Мониторинг производительности
  • 18. <?xml version="1.0"?> <configuration> <system.web>
    <compilation targetFramework="4.0" /> </system.web>
    </configuration>
    Меньше настроек в web.config
    Основные параметры конфигурации перенесены в machine.config
    Минимальный достаточный web.config
  • 19. Web Forms 4.0
  • 20. Маршрутизация
    Cвойствадля работы с маршрутами HttpRequest.RequestContext и Page.RouteData
    Определение маршрута
    public class Global : System.Web.HttpApplication { void Application_Start(object sender, EventArgs e) { RouteTable.Routes.MapPageRoute("SearchRoute", "search/{searchterm}", "~/search.aspx"); RouteTable.Routes.MapPageRoute("UserRoute", "users/{username}", "~/users.aspx"); }}
  • 21. Маршрутизация
    Параметр checkPhysicalUrlAccess метода MapPageRoute позволяет применить правила доступа, которые определены для физической страницы в web.config
    Коллекцияпараметров маршрута
    Page.RouteData.Values["username"]
  • 22. Маршрутизация
    Декларативное связывание
    Чтение значений параметров
    <asp:Label ID="Label1" runat="server" Text="<%$RouteValue:Id%>" />
    Определение параметров
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="<%$RouteUrl:Id=search%>"> Search</asp:HyperLink>
  • 23. Маршрутизация
    Связь с DataSource
    <asp:sqldatasource ...>
    <selectparameters>
    <asp:routeparameter name="companyname" RouteKey="searchterm" />
    </selectparameters> </asp:sqldatasource>
  • 24. Настройки ViewState
    Наследование ViewStateс возможностью наследования
    Атрибут ViewStateMode
    Enabled (по умолчанию)
    Disabled
    Inherit
  • 25. Поддержка браузеров
    Класс HttpBrowserCapabilitiesдля получения информации о текущем браузере
  • Мета-теги страницы
    Свойства Keywords и Descriptions
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Keywords="These, are, my, keywords" Description="This is a description" %>
    Свойства Page.MetaKeywords и Page.MetaDescription
  • 36. Управление атрибутом id
    ClientIDMode
    AutoID – автоматическая генерация
    Static – статические ID
    Predictable – Предсказуемые (например, для Repeater, ClientIDRowSuffixбудет PrimaryKeyили Object ID)
    Inherit – наследовать от родителя
  • 37. Управление атрибутом id
    Страница
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ClientIDMode="Predictable" %>
    Web.config
    <system.web><pagesclientIDMode="Predictable"></pages></system.web>
  • 38. Управление атрибутом id
    <tc:NamingPanelrunat="server" ID="ParentPanel" ClientIDMode="Static"> <tc:NamingPanelrunat="server" ID="NamingPanel1" ClientIDMode="Predictable"> <asp:TextBox ID="TextBox1" runat="server" Text="Hello!"></asp:TextBox> </tc:NamingPanel> </tc:NamingPanel>
    <div id="ParentPanel"> <div id="ParentPanel_NamingPanel1"> <input name="ctl00$ContentPlaceHolder1$ParentPanel$NamingPanel1$TextBox1" type="text" value="Hello!" id="ParentPanel_NamingPanel1_TextBox1" /> </div>
  • 39. Атрибуты id коллекций
    <asp:ListView ID="ListView1" runat="server" ClientIDMode="Predictable" RowClientIDRowSuffix="ProductID"> </asp:ListView>
    rootPanel_ListView1_ProductNameLabel_1
    В Repeater нет RowClientIDRowSuffix, поэтому используется индекс строки
  • 40. Новое выражение <% : %>
    Автоматическое кодирование вывода на страницу
    <%: expression %>
    Равно
    <%= HttpUtility.HtmlEncode(expression) %>
    Если не нужно кодировать, то
    <%: new HtmlString("<strong>не энкодить меня!</strong>") %>
  • 41. Рендеринг
    Выбор уровня совместимости HTML
    <system.web><pages controlRenderingCompatibilityVersion="3.5|4.0"/> </system.web>
    Для «скрытых» div генерируется css class aspNetHidden
    Возможность отключить внешнюю таблицу для контроловFormView, Login, PasswordRecovery, ChangePassword, Wizard, CreateUserWizard
    <asp:FormView ID="FormView1" runat="server" RenderOuterTable="false">
  • 42. Выделение строки в ListView/GridView
    Раньше выделение было по индексу строки
    Теперь – по ключу данных
    <asp:GridView id="GridView2" runat="server" EnablePersistedSelection="true"> </asp:GridView>
  • 43. Улучшения контролов
    ListView
    Не нужен LayoutTemplate
    <asp:ListView ID="ListView1" runat="server"> <ItemTemplate> <% Eval("LastName")%> </ItemTemplate> </asp:ListView>
    CheckBoxList
    Новые типы Layout = UnorderedList, OrderedList
    Menu
    Рендеринг в виде несортированного списка
    Скрипты на стороне клиента
  • 44. MVC Framework 2.0
  • 45. Регионы / Area
    Вложенные проекты
    Site
    Blog
    Forum
    Shop
  • 46. Асинхронные контроллеры
    Возможность избежать блокировок тредов из пула тредовASP.NET
    public class MyController: AsyncController {
    public void MyActionAsync(string value) {
    AsyncManager.OutstandingOperations.Increment();
    MyServicemyService= new MyService();
    myService.GetDataCompleted+= (sender, e) =>
    { AsyncManager.Parameters[“data"] = e.Value;
    AsyncManager.OutstandingOperations.Decrement();
    };
    myService.GetDataAsync(city);
    }
    public ActionResultMyActionCompletd(string[] data) {
    return View(“MyData", new MyData { DataLines= date }); }
    }
  • 47. Валидация и аннотации данных
    public class Person {
    [Required(ErrorMessage = “*”)] [StringLength(32, ErrorMessage = “Лимит – 32 символа”)] public string LastName { get; set; }
    }
    public class PersonController {
    [HttpPost]
    public ActionResult Update(Person p){
    if(!ModelState.IsValid) ...
    }
    }
  • 48. Строгая типизация UI хэлперов
    Html.LabelFor (c => c.Name)
    Html.EditorFor (c => c.Name)
    Html.EditorFor (c => c)
  • 49. Поддержка шаблонов UI
    EditorTemplates
    Display Templates
    .ascxфайлы
    Html.EditorFor(c => c.Name, “NameEditor”)
    public class Person{
    [UIHint(“NameEditor”)]
    public string Name {get; set;}
    }
  • 50. Параметры по умолчанию
    public ActionResult ([DefaultValue(10)] int count) {}
    public ActionResult (int count = 10) {} // C# 4.0
  • 51. Основные ресурсы
    Библиотека MSDN
    http://msdn.microsoft.com/en-us/asp.net/default.aspx
    CайтASP.NET
    http://www.asp.net
    Технические видео по теме
    http://www.microsoft.com/rus/web/tech/development.aspx
  • 52. СПАСИБО ЗА ВНИМАНИЕ!
    Гайдар Магдануров
    t: http://twtter.com/gaidar
    e: GaidarMa@microsoft.com