Старый новый
Microsoft ASP.NET
<%= ASP.NET.Current.Version %>
Vitaly Baum
Senior Developer http://conteq.ru
Personal Journal http://butaji.ru
Термины
o Microsoft ASP.NET
  o MVC
  o AJAX Library
  o DynamicData
  o WebForms
Содержание доклада
o Сравнение WebForms и MVC
o Препарируем ASP.NET
o Будущее с ASP.NET 4.0
ASP.NET Framework

Сравнение WebForms и MVC
Сравнение WebForms и MVC
Сравнение WebForms и MVC




  Page LifeCycle
Page request
Start
Initialization
Load
Validation
Event handling
Rendering
Unload
Сравнение WebForms и MVC
WebForms                           MVC
o Тяжело тестировать               o Легко тестировать* (S...
Сравнение WebForms и MVC

WebForms         MVC

  ASP.NET Framework

    .NET Framework
Сравнение WebForms и MVC
o Incoming HTTP Request
o ApplicationManager
o HttpApplication
o Global.asax
o Modules (IHttpModu...
Сравнение WebForms и MVC
Сравнение WebForms и MVC
  public interface IViewEngine
  {
    // Methods
    ViewEngineResult FindPartialView(Controller...
Сравнение WebForms и MVC
o WebFormsViewEngine работает с
  ViewPage : System.Web.UI.Page
o Сохранены все принципы
o Возмож...
Сравнение WebForms и MVC




Framework   Solutions   Platform
Сравнение WebForms и MVC




Framework   Solutions   Platform
Сравнение WebForms и MVC




Framework   Solutions   Platform
Сравнение WebForms и MVC




Framework   Solutions   Platform
ASP.NET Framework

Препарируем ASP.NET
Препарируем ASP.NET
o ASP.NET Framework
  o Providers
  o Modules
  o Handlers
Препарируем ASP.NET
o MVC Framework
  o ViewEngines
  o ControllerFactories
  o Filters
  o Routing
Препарируем ASP.NET
o Dynamic Language Support
o ControlBuilder
o BuildProvider
Препарируем ASP.NET : CB
o ASP.NET Framewrok строит дерево
  System.Web.UI.ControlBuilder для
  построения страницы
o От C...
Препарируем ASP.NET : CB
o Constructor Injection в UserControl
Препарируем ASP.NET : DLR
o ASP.NET on IronPython
Препарируем ASP.NET : DLR
o IronPython.dll
o IronPython.Modules.dll
o Microsoft.Scripting.dll
o Microsoft.Scripting.Core.d...
Препарируем ASP.NET : DLR
<httpModules>
       <add name="DynamicLanguageHttpModule"
type="Microsoft.Web.Scripting.Dynamic...
Препарируем ASP.NET : DLR
Internal class DynamicLanguageHttpModule : IHttpModule,
IBuildProvider
{
   private class Global...
Препарируем ASP.NET : DLR
<microsoft.scripting debugMode="true">
        <languages>
                 <language names="Iro...
Препарируем ASP.NET : BP
o История о BuilderProvider от David Ebbo
  http://blogs.msdn.com/davidebb/archive/2
  009/06/01/...
Препарируем ASP.NET : BP
<%= Html.ActionLink("Home", "Index", "Home")%>

public ActionResult Test(int id, string name)
{
 ...
Препарируем ASP.NET : BP
<%= Html.ActionLinkToHomeIndex("Home")%>
<%= Html.ActionLinkToHomeTest("Test Link", 17,
    "Davi...
Препарируем ASP.NET : BP
<%= Html.ActionLink<HomeController>(c => c.Index(),
     "Home")%>




ASP.NET MVC 2 Beta Futures...
Препарируем ASP.NET : BP
o 200 строк кода
o Колкость работы с CodeDom
o 2 комментария HACK
o Несколько комментариев «К сож...
Препарируем ASP.NET : BP
o Переделано на T4
o Простота реализации и сопровождения
o Необходимость перекомпиляции при
  вык...
ASP.NET Framework

Будущее с ASP.NET 4.0
ASP.NET Framework

Core Services
Будущее с ASP.NET 4.0
Web.config File Minification
<?xml version="1.0"?>
<configuration>
 <system.web>
  <compilation targ...
Будущее с ASP.NET 4.0
Extensible Output Caching
<caching>
 <outputCache defaultProvider="AspNetInternalProvider">
  <provi...
Будущее с ASP.NET 4.0
Extensible Output Caching
<%@ OutputCache="" Duration="60"
    VaryByParam="None" providerName="Disk...
Будущее с ASP.NET 4.0
Extensible Output Caching
public class HttpApplication : …
{
    public override string GetOutputCac...
Будущее с ASP.NET 4.0
Auto-Start Web Applications
IIS 7.5 applicationHost.config
<applicationPools>
  <add name="MyApplica...
Будущее с ASP.NET 4.0
Auto-Start Web Applications
<sites>
 <site name="MySite" id="1">
  <application path="/"
    service...
Будущее с ASP.NET 4.0
Auto-Start Web Applications
 public class CustomInitialization :
System.Web.Hosting.IProcessHostPrel...
Будущее с ASP.NET 4.0
Permanently Redirecting a Page (301)
RedirectPermanent("/newpath/foroldcontent.aspx");
Будущее с ASP.NET 4.0
The Incredible Shrinking Session State
<sessionState
 mode="SqlServer"
 sqlConnectionString="data so...
Будущее с ASP.NET 4.0
Expanding the Range of Allowable URLs
In previous versions 260 characters (based on NTFS)

<httpRunt...
Будущее с ASP.NET 4.0
Extensible Request Validation
<httpRuntime requestValidationType="Samples.MyValidator,
Samples" />

...
Будущее с ASP.NET 4.0
Object Caching Extensibility
Большая популярность кеша из ASP.NET, его
использование в настольных и ...
Будущее с ASP.NET 4.0
Object Caching Extensibility
private void btnGet_Click(object sender, EventArgs e)
  {
    ObjectCac...
Будущее с ASP.NET 4.0
HTML, URL, and HTTP Header Encoding
System.Web.Util.HttpEncoder
System.Web.HttpUtility
System.Web.Ht...
Будущее с ASP.NET 4.0
Performance Monitoring for Individual
Applications in a Single Worker Process
<?xml version="1.0" en...
Будущее с ASP.NET 4.0
Multi-Targeting
<compilation targetFramework="4.0"/>
1. Если не указано, то в AppPool под 4.0
2. Нуж...
ASP.NET Framework

Microsoft AJAX Library
Будущее с ASP.NET 4.0
Imperative Syntax
<script type="text/javascript">
 Sys.create.watermark("#Name", { WatermarkText: "A...
Будущее с ASP.NET 4.0
Script Loader
• Автоматически подгружает ресурсы
• Проверяет, чтобы скрипт был загружен
  единожды
•...
Будущее с ASP.NET 4.0
Script Loader
<script src="../Scripts/MicrosoftAjax/start.js"
     type="text/javascript"></script>
...
Будущее с ASP.NET 4.0
Script Loader
o MicrosoftAjaxComponentModel.js
o MicrosoftAjaxCore.js
o MicrosoftAjaxGlobalization.j...
Будущее с ASP.NET 4.0
Content Delivery Network
<script src="ajax.microsoft.com/ajax/0910/start.js"></script>




http://ww...
Будущее с ASP.NET 4.0
Client Data Access
o Client data controls
o Client templates
o Client data context
Будущее с ASP.NET 4.0
Client Data Access : DataView
<script src="Scripts/MicrosoftAjax/start.js" type="text/javascript"></...
Будущее с ASP.NET 4.0
Client Data Access : DataView
<h1>Movies</h1>
<ul id="moviesView">
     <li>{{Title}} - {{Director}}...
Будущее с ASP.NET 4.0
Client Data Access : DataView
o ASP.NET (.asmx) Web services.
o WCF Web services.
o ADO.NET Data Ser...
Будущее с ASP.NET 4.0
Client DataContext, AdoNetDataContext
Похожи на:
o LINQ to SQL DataContext
o Entity Framework Object...
Будущее с ASP.NET 4.0
jQuery Integration
<script src="Scripts/MicrosoftAjax/start.js" type="text/javascript"></script>
<sc...
ASP.NET Framework

WebForms
Будущее с ASP.NET 4.0
MetaTags
<head id="Head1" runat="server">
 <title>Untitled Page</title>
 <meta name="keywords" conte...
Будущее с ASP.NET 4.0
ViewStateMode
<asp:PlaceHolder ID="PlaceHolder1" runat="server" ViewStateMode="Disabled">
  Disabled...
Будущее с ASP.NET 4.0
Browser Capabilities Providers
o Добавлены новые описания
o Переопределяемый провайдер
Будущее с ASP.NET 4.0
Routing
http://website/products.aspx?categoryid=12
http://website/products/software
o Базовый класс:...
Будущее с ASP.NET 4.0
Routing
public class Global : System.Web.HttpApplication
{
  void Application_Start(object sender, E...
Будущее с ASP.NET 4.0
Routing
protected void Page_Load(object sender,
EventArgs e)
{
  string searchterm =
Page.RouteData....
Будущее с ASP.NET 4.0
Routing
Expression Builders: RouteUrl, RouteValue

<asp:HyperLink ID="HyperLink1" runat="server"
 Na...
Будущее с ASP.NET 4.0
Routing
<asp:sqldatasource id="SqlDataSource1" runat="server"
  connectionstring="<%$ ConnectionStri...
Будущее с ASP.NET 4.0
ClientID
У всех control’ов (и у Page) свойство
ClientIDMode:
o AutoID – «старая» версия
o Static – «...
Будущее с ASP.NET 4.0
ClientID
<tc:NamingPanel runat="server" ID="ParentPanel" ClientIDMode="Static">
 <tc:NamingPanel run...
Будущее с ASP.NET 4.0
Persisting Row Selection in Data Controls

<asp:GridView id="GridView2" runat="server" EnablePersist...
Будущее с ASP.NET 4.0
ASP.NET Chart Control
Будущее с ASP.NET 4.0
QueryExtender Control : Search
<asp:LinqDataSource ID="dataSource" runat="server"> TableName="Produc...
Будущее с ASP.NET 4.0
QueryExtender Control : Range
<asp:LinqDataSource ID="dataSource" runat="server">
TableName="Product...
Будущее с ASP.NET 4.0
QueryExtender Control :
PropertyExpression
<asp:LinqDataSource ID="dataSource" runat="server"
TableN...
Будущее с ASP.NET 4.0
QueryExtender Control :
CustomExpression
<asp:LinqDataSource ID="dataSource" runat="server"
TableNam...
Будущее с ASP.NET 4.0
QueryExtender Control :
CustomExpression
protected void FilterProducts(object sender, CustomExpressi...
Будущее с ASP.NET 4.0
Html Encoded Code Expressions
<%: expression %>
<%= HttpUtility.HtmlEncode(expression) %>
<%: Reques...
Будущее с ASP.NET 4.0
VS: Project Template Changes
o Empty Web Application Template
o Web Application & Web Site Project
 ...
Ресурсы
o In depth: The ASP.NET MVC Pipeline
  http://blog.codeville.net/2007/11/20/aspn
  et-mvc-pipeline-lifecycle/
o Co...
Ресурсы
o ASP.NET on CodePlex
  http://aspnet.codeplex.com/
o ASP.NET 4 and Visual Studio 2010 Web
  Development Beta 2 Ov...
The Old New ASP.NET
Upcoming SlideShare
Loading in...5
×

The Old New ASP.NET

3,286

Published on

This slides from ALT.NET meeting about ASP.NET at Saint-Petersburg 03/12/09

Published in: Technology
2 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
3,286
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
42
Comments
2
Likes
3
Embeds 0
No embeds

No notes for slide

The Old New ASP.NET

  1. 1. Старый новый Microsoft ASP.NET <%= ASP.NET.Current.Version %>
  2. 2. Vitaly Baum Senior Developer http://conteq.ru Personal Journal http://butaji.ru
  3. 3. Термины o Microsoft ASP.NET o MVC o AJAX Library o DynamicData o WebForms
  4. 4. Содержание доклада o Сравнение WebForms и MVC o Препарируем ASP.NET o Будущее с ASP.NET 4.0
  5. 5. ASP.NET Framework Сравнение WebForms и MVC
  6. 6. Сравнение WebForms и MVC
  7. 7. Сравнение WebForms и MVC Page LifeCycle
  8. 8. Page request Start Initialization Load Validation Event handling Rendering Unload
  9. 9. Сравнение WebForms и MVC WebForms MVC o Тяжело тестировать o Легко тестировать* (SoC) o RAD ориентация o Контроль разметки (SEO) o Проще научится .NET o Проще научится веб- разработчику разработчику o Большое количество o Мало сторонних сторонних компонентов компонентов и решений o ViewState можно убрать o Ориентирован на со страницы хороший дизайн *SoC можно получить и в разработке для WebForms
  10. 10. Сравнение WebForms и MVC WebForms MVC ASP.NET Framework .NET Framework
  11. 11. Сравнение WebForms и MVC o Incoming HTTP Request o ApplicationManager o HttpApplication o Global.asax o Modules (IHttpModule) o UrlRoutingModule o IIS 7.0
  12. 12. Сравнение WebForms и MVC
  13. 13. Сравнение WebForms и MVC public interface IViewEngine { // Methods ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache); ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache); void ReleaseView(ControllerContext controllerContext, IView view); }
  14. 14. Сравнение WebForms и MVC o WebFormsViewEngine работает с ViewPage : System.Web.UI.Page o Сохранены все принципы o Возможна работа с MasterPage o Можно писать обработку Page LifeCycle во ViewPage 
  15. 15. Сравнение WebForms и MVC Framework Solutions Platform
  16. 16. Сравнение WebForms и MVC Framework Solutions Platform
  17. 17. Сравнение WebForms и MVC Framework Solutions Platform
  18. 18. Сравнение WebForms и MVC Framework Solutions Platform
  19. 19. ASP.NET Framework Препарируем ASP.NET
  20. 20. Препарируем ASP.NET o ASP.NET Framework o Providers o Modules o Handlers
  21. 21. Препарируем ASP.NET o MVC Framework o ViewEngines o ControllerFactories o Filters o Routing
  22. 22. Препарируем ASP.NET o Dynamic Language Support o ControlBuilder o BuildProvider
  23. 23. Препарируем ASP.NET : CB o ASP.NET Framewrok строит дерево System.Web.UI.ControlBuilder для построения страницы o От ControlBuilder можно наследоваться и переопределять логику построения
  24. 24. Препарируем ASP.NET : CB o Constructor Injection в UserControl
  25. 25. Препарируем ASP.NET : DLR o ASP.NET on IronPython
  26. 26. Препарируем ASP.NET : DLR o IronPython.dll o IronPython.Modules.dll o Microsoft.Scripting.dll o Microsoft.Scripting.Core.dll o Microsoft.Web.Scripting.dll
  27. 27. Препарируем ASP.NET : DLR <httpModules> <add name="DynamicLanguageHttpModule" type="Microsoft.Web.Scripting.DynamicLanguageHttpModule"/> </httpModules>
  28. 28. Препарируем ASP.NET : DLR Internal class DynamicLanguageHttpModule : IHttpModule, IBuildProvider { private class GlobalAsaxBuildResult : TypeWithEventsBuildResult { private void CallFunction(ScriptEngine engine, DynamicFunction f) { f.Invoke(engine, new object[0]); } } }
  29. 29. Препарируем ASP.NET : DLR <microsoft.scripting debugMode="true"> <languages> <language names="IronPython;Python;py" extensions=".py" displayName="IronPython 2.0 Beta" type="IronPython.Runtime.PythonContext, IronPython, Version=2.0.0.5000, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </languages> </microsoft.scripting>
  30. 30. Препарируем ASP.NET : BP o История о BuilderProvider от David Ebbo http://blogs.msdn.com/davidebb/archive/2 009/06/01/a-buildprovider-to-simplify- your-asp-net-mvc-action-links.aspx
  31. 31. Препарируем ASP.NET : BP <%= Html.ActionLink("Home", "Index", "Home")%> public ActionResult Test(int id, string name) { return View(); } <%= Html.ActionLink("Test Link", "Test", "Home", new { id = 17, name = "David" }, null) %>
  32. 32. Препарируем ASP.NET : BP <%= Html.ActionLinkToHomeIndex("Home")%> <%= Html.ActionLinkToHomeTest("Test Link", 17, "David")%> <buildProviders> <add extension=".actions« type="MvcActionLinkHelper.MvcActionLinkBuildPro vider" /> </buildProviders>
  33. 33. Препарируем ASP.NET : BP <%= Html.ActionLink<HomeController>(c => c.Index(), "Home")%> ASP.NET MVC 2 Beta Futures http://aspnet.codeplex.com/Release/ProjectReleases.aspx?R eleaseId=36054
  34. 34. Препарируем ASP.NET : BP o 200 строк кода o Колкость работы с CodeDom o 2 комментария HACK o Несколько комментариев «К сожалению нельзя…»
  35. 35. Препарируем ASP.NET : BP o Переделано на T4 o Простота реализации и сопровождения o Необходимость перекомпиляции при выкладывании на сервер
  36. 36. ASP.NET Framework Будущее с ASP.NET 4.0
  37. 37. ASP.NET Framework Core Services
  38. 38. Будущее с ASP.NET 4.0 Web.config File Minification <?xml version="1.0"?> <configuration> <system.web> <compilation targetFramework="4.0" /> </system.web> </configuration>
  39. 39. Будущее с ASP.NET 4.0 Extensible Output Caching <caching> <outputCache defaultProvider="AspNetInternalProvider"> <providers> <add name="DiskCache" type="Test.OutputCacheEx.DiskOutputCacheProvider, DiskCacheProvider"/> </providers> </outputCache> </caching>
  40. 40. Будущее с ASP.NET 4.0 Extensible Output Caching <%@ OutputCache="" Duration="60" VaryByParam="None" providerName="DiskCache" %>
  41. 41. Будущее с ASP.NET 4.0 Extensible Output Caching public class HttpApplication : … { public override string GetOutputCacheProviderName(HttpContext context) { if (context.Request.Path.EndsWith("Advanced.aspx")) return "DiskCache"; else return base.GetOutputCacheProviderName(context); } }
  42. 42. Будущее с ASP.NET 4.0 Auto-Start Web Applications IIS 7.5 applicationHost.config <applicationPools> <add name="MyApplicationPool" startMode="AlwaysRunning" /> </applicationPools>
  43. 43. Будущее с ASP.NET 4.0 Auto-Start Web Applications <sites> <site name="MySite" id="1"> <application path="/" serviceAutoStartEnabled="true" serviceAutoStartProvider="PrewarmMyCache" > <!-- Additional content --> </application> </site> </sites> <serviceAutoStartProviders> <add name="PrewarmMyCache" type="MyNamespace.CustomInitialization, MyLibrary" /> </serviceAutoStartProviders>
  44. 44. Будущее с ASP.NET 4.0 Auto-Start Web Applications public class CustomInitialization : System.Web.Hosting.IProcessHostPreloadClient { public void Preload(string[] parameters) { // Perform initialization. } }
  45. 45. Будущее с ASP.NET 4.0 Permanently Redirecting a Page (301) RedirectPermanent("/newpath/foroldcontent.aspx");
  46. 46. Будущее с ASP.NET 4.0 The Incredible Shrinking Session State <sessionState mode="SqlServer" sqlConnectionString="data source=dbserver;Initial Catalog=aspnetstate" allowCustomSqlDatabase="true" compressionEnabled="true"/> Compression with System.IO.Compression.GZipStream
  47. 47. Будущее с ASP.NET 4.0 Expanding the Range of Allowable URLs In previous versions 260 characters (based on NTFS) <httpRuntime maxRequestPathLength="260" maxQueryStringLength="2048" /> <httpRuntime requestPathInvalidChars=""<,>,*,%,&,:," />
  48. 48. Будущее с ASP.NET 4.0 Extensible Request Validation <httpRuntime requestValidationType="Samples.MyValidator, Samples" /> public class CustomRequestValidation : RequestValidator { protected override bool IsValidRequestString( HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex) {...} }
  49. 49. Будущее с ASP.NET 4.0 Object Caching Extensibility Большая популярность кеша из ASP.NET, его использование в настольных и др. приложениях. Появится новая сборка System.Runtime.Caching.dll с абстрактными классами для реализации собственных кешей, а так же реализация кеша в памяти System.Runtime.Caching.MemoryCache
  50. 50. Будущее с ASP.NET 4.0 Object Caching Extensibility private void btnGet_Click(object sender, EventArgs e) { ObjectCache cache = MemoryCache.Default; fileContents = cache["filecontents"] as string; if (fileContents == null) { CacheItemPolicy policy = new CacheItemPolicy(); List<string> filePaths = new List<string>(); filePaths.Add("c:data.txt"); policy.ChangeMonitors.Add(new HostFileChangeMonitor(filePaths)); fileContents = File.ReadAllText("c:data.txt"); cache.Set("filecontents", fileContents, policy); } MessageBox.Show(fileContents); }
  51. 51. Будущее с ASP.NET 4.0 HTML, URL, and HTTP Header Encoding System.Web.Util.HttpEncoder System.Web.HttpUtility System.Web.HttpServerUtility <httpRuntime encoderType="Samples.MyCustomEnco der, Samples" />
  52. 52. Будущее с ASP.NET 4.0 Performance Monitoring for Individual Applications in a Single Worker Process <?xml version="1.0" encoding="UTF-8" ?> <configuration> <runtime> <appDomainResourceMonitoring enabled="true"/> </runtime> </configuration>
  53. 53. Будущее с ASP.NET 4.0 Multi-Targeting <compilation targetFramework="4.0"/> 1. Если не указано, то в AppPool под 4.0 2. Нужно обязательно указывать версию при объявлении типов в web.config 3. Разные варианты скрипты предкомпиляции 4. Будут исползоваться новые версии
  54. 54. ASP.NET Framework Microsoft AJAX Library
  55. 55. Будущее с ASP.NET 4.0 Imperative Syntax <script type="text/javascript"> Sys.create.watermark("#Name", { WatermarkText: "Add name here..." }); </script> Работает IntelliSense
  56. 56. Будущее с ASP.NET 4.0 Script Loader • Автоматически подгружает ресурсы • Проверяет, чтобы скрипт был загружен единожды • Параллельная загрузка скриптов • Ленивая загрузка скриптов • Работает так же со сторонними библиотеками
  57. 57. Будущее с ASP.NET 4.0 Script Loader <script src="../Scripts/MicrosoftAjax/start.js" type="text/javascript"></script> <script src="../Scripts/ACT/ACTRegisterExtended.js" type="text/javascript"></script> <script type="text/javascript"> Sys.require(Sys.components.watermark, function() { Sys.create.watermark("#Name", { WatermarkText: "Add name here..." }); }); </script>
  58. 58. Будущее с ASP.NET 4.0 Script Loader o MicrosoftAjaxComponentModel.js o MicrosoftAjaxCore.js o MicrosoftAjaxGlobalization.js o ACTCommon.js o ACTExtenderBase.js o ACTWatermark.js
  59. 59. Будущее с ASP.NET 4.0 Content Delivery Network <script src="ajax.microsoft.com/ajax/0910/start.js"></script> http://www.asp.net/ajaxlibrary/cdn
  60. 60. Будущее с ASP.NET 4.0 Client Data Access o Client data controls o Client templates o Client data context
  61. 61. Будущее с ASP.NET 4.0 Client Data Access : DataView <script src="Scripts/MicrosoftAjax/start.js" type="text/javascript"></script> <script type="text/javascript"> Sys.require([Sys.components.dataView, Sys.components.dataContext], function() { Sys.create.dataView("#moviesView", { dataProvider: "Services/MovieService.svc", fetchOperation: "GetMovies", autoFetch: true } ); }); </script>
  62. 62. Будущее с ASP.NET 4.0 Client Data Access : DataView <h1>Movies</h1> <ul id="moviesView"> <li>{{Title}} - {{Director}}</li> </ul>
  63. 63. Будущее с ASP.NET 4.0 Client Data Access : DataView o ASP.NET (.asmx) Web services. o WCF Web services. o ADO.NET Data Services. o Anything that returns JSON-formatted data.
  64. 64. Будущее с ASP.NET 4.0 Client DataContext, AdoNetDataContext Похожи на: o LINQ to SQL DataContext o Entity Framework ObjectContext Поддерживают: o Чтение и запись o Поддерживает сложные связи и ассоциации
  65. 65. Будущее с ASP.NET 4.0 jQuery Integration <script src="Scripts/MicrosoftAjax/start.js" type="text/javascript"></script> <script src="Scripts/ACT/ACTRegisterExtended.js" type="text/javascript"></script> <script type="text/javascript"> Sys.require([Sys.components.watermark, Sys.scripts.jQuery], function() { $(".required") .watermark({ WatermarkText: "Add something here..." }) .css({ backgroundColor: "red", color: "white" }); }); </script>
  66. 66. ASP.NET Framework WebForms
  67. 67. Будущее с ASP.NET 4.0 MetaTags <head id="Head1" runat="server"> <title>Untitled Page</title> <meta name="keywords" content="These, are, my, keywords" /> <meta name="description" content="This is the description of my page" /> </head> Page.MetaKeywords, Page.MetaDescription <%@ Page Language="C#" Keywords="These, are, my, keywords" Description="This is a description" %>
  68. 68. Будущее с ASP.NET 4.0 ViewStateMode <asp:PlaceHolder ID="PlaceHolder1" runat="server" ViewStateMode="Disabled"> Disabled: <asp:Label ID="label1" runat="server" Text="[DeclaredValue]" /><br /> <asp:PlaceHolder ID="PlaceHolder2" runat="server" ViewStateMode="Enabled"> Enabled: <asp:Label ID="label2" runat="server" Text="[DeclaredValue]" /> </asp:PlaceHolder> </asp:PlaceHolder> Разница с EnableViewState
  69. 69. Будущее с ASP.NET 4.0 Browser Capabilities Providers o Добавлены новые описания o Переопределяемый провайдер
  70. 70. Будущее с ASP.NET 4.0 Routing http://website/products.aspx?categoryid=12 http://website/products/software o Базовый класс: PageRouteHandler o Свойства: Page.RouteData
  71. 71. Будущее с ASP.NET 4.0 Routing 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"); }
  72. 72. Будущее с ASP.NET 4.0 Routing protected void Page_Load(object sender, EventArgs e) { string searchterm = Page.RouteData.Values["searchterm"] as string; label1.Text = searchterm; }
  73. 73. Будущее с ASP.NET 4.0 Routing Expression Builders: RouteUrl, RouteValue <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="<%$RouteUrl:SearchTerm=scott%>">Search for Scott</asp:HyperLink> <asp:Label ID="Label1" runat="server" Text="<%$RouteValue:SearchTerm%>" />
  74. 74. Будущее с ASP.NET 4.0 Routing <asp:sqldatasource id="SqlDataSource1" runat="server" connectionstring="<%$ ConnectionStrings:MyNorthwind %>" selectcommand="SELECT CompanyName,ShipperID FROM Shippers where CompanyName=@companyname" <selectparameters> <asp:routeparameter name="companyname" RouteKey="searchterm" /> </selectparameters> </asp:sqldatasource>
  75. 75. Будущее с ASP.NET 4.0 ClientID У всех control’ов (и у Page) свойство ClientIDMode: o AutoID – «старая» версия o Static – «неизменяемый» ID o Predictable – работает в паре с ClientIDRowSuffix o Inherit – наследуется от родителя
  76. 76. Будущее с ASP.NET 4.0 ClientID <tc:NamingPanel runat="server" ID="ParentPanel" ClientIDMode="Static"> <tc:NamingPanel runat="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> * Вопрос: для чего используется id, а для чего name?
  77. 77. Будущее с ASP.NET 4.0 Persisting Row Selection in Data Controls <asp:GridView id="GridView2" runat="server" EnablePersistedSelection="true"> </asp:GridView> Сохраняет выделение при пейджинге
  78. 78. Будущее с ASP.NET 4.0 ASP.NET Chart Control
  79. 79. Будущее с ASP.NET 4.0 QueryExtender Control : Search <asp:LinqDataSource ID="dataSource" runat="server"> TableName="Products"> </asp:LinqDataSource> <asp:QueryExtender TargetControlID="dataSource" runat="server"> <asp:SearchExpression DataFields="ProductName, Supplier.CompanyName" SearchType="StartsWith"> <asp:ControlParameter ControlID="TextBoxSearch" /> </asp:SearchExpression> </asp:QueryExtender> LinqDataSource EntityDataSource
  80. 80. Будущее с ASP.NET 4.0 QueryExtender Control : Range <asp:LinqDataSource ID="dataSource" runat="server"> TableName="Products"> </asp:LinqDataSource> <asp:QueryExtender TargetControlID="dataSource" runat="server"> <asp:RangeExpression DataField="UnitPrice" MinType="Inclusive" MaxType="Inclusive"> <asp:ControlParameter ControlID="TextBoxFrom" /> <asp:ControlParameter ControlID="TexBoxTo" /> </asp:RangeExpression> </asp:QueryExtender>
  81. 81. Будущее с ASP.NET 4.0 QueryExtender Control : PropertyExpression <asp:LinqDataSource ID="dataSource" runat="server" TableName="Products"> </asp:LinqDataSource> <asp:QueryExtender TargetControlID="dataSource" runat="server"> <asp:PropertyExpression> <asp:ControlParameter ControlID="CheckBoxDiscontinued" Name="Discontinued" /> </asp:PropertyExpression> </asp:QueryExtender>
  82. 82. Будущее с ASP.NET 4.0 QueryExtender Control : CustomExpression <asp:LinqDataSource ID="dataSource" runat="server" TableName="Products"> </asp:LinqDataSource> <asp:QueryExtender TargetControlID="dataSource" runat="server"> <asp:CustomExpression OnQuerying="FilterProducts" /> </asp:QueryExtender>
  83. 83. Будущее с ASP.NET 4.0 QueryExtender Control : CustomExpression protected void FilterProducts(object sender, CustomExpressionEventArgs e) { e.Query = from p in e.Query.Cast<Product>() where p.UnitPrice >= 10 select p; }
  84. 84. Будущее с ASP.NET 4.0 Html Encoded Code Expressions <%: expression %> <%= HttpUtility.HtmlEncode(expression) %> <%: Request["UserInput"] %> IHtmlString <%: new HtmlString("<strong>HTML that is not encoded</strong>") %>
  85. 85. Будущее с ASP.NET 4.0 VS: Project Template Changes o Empty Web Application Template o Web Application & Web Site Project Templates
  86. 86. Ресурсы o In depth: The ASP.NET MVC Pipeline http://blog.codeville.net/2007/11/20/aspn et-mvc-pipeline-lifecycle/ o Comparing Web Forms And ASP.NET MVC http://msdn.microsoft.com/en- us/magazine/dd942833.aspx o ASP.NET Application Life Cycle Overview for IIS 7.0 http://msdn.microsoft.com/en- us/library/bb470252(VS.100).aspx
  87. 87. Ресурсы o ASP.NET on CodePlex http://aspnet.codeplex.com/ o ASP.NET 4 and Visual Studio 2010 Web Development Beta 2 Overview http://www.asp.net/LEARN/whitepapers/as pnet4/default.aspx
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×