際際滷

際際滷Share a Scribd company logo
弌舒亶 仆仂于亶
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 亠亞从仂 亠亳仂于舒* (SoC)
o RAD 仂亳亠仆舒亳                   o 仂仆仂仍 舒亰仄亠从亳 (SEO)
o 仂亠 仆舒亳 .NET              o 仂亠 仆舒亳 于亠弍-
  舒亰舒弍仂亳从                       舒亰舒弍仂亳从
o 仂仍仂亠 从仂仍亳亠于仂               o 舒仍仂 仂仂仆仆亳
  仂仂仆仆亳 从仂仄仗仂仆亠仆仂于              从仂仄仗仂仆亠仆仂于 亳 亠亠仆亳亶
o ViewState 仄仂亢仆仂 弍舒           o 亳亠仆亳仂于舒仆 仆舒
  仂 舒仆亳                        仂仂亳亶 亟亳亰舒亶仆


 *SoC 仄仂亢仆仂 仗仂仍亳 亳 于 舒亰舒弍仂从亠 亟仍 WebForms
弌舒于仆亠仆亳亠 WebForms 亳 MVC

WebForms         MVC

  ASP.NET Framework

    .NET Framework
弌舒于仆亠仆亳亠 WebForms 亳 MVC
o Incoming HTTP Request
o ApplicationManager
o HttpApplication
o Global.asax
o Modules (IHttpModule)
o UrlRoutingModule
o IIS 7.0
弌舒于仆亠仆亳亠 WebForms 亳 MVC
弌舒于仆亠仆亳亠 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);
  }
弌舒于仆亠仆亳亠 WebForms 亳 MVC
o WebFormsViewEngine 舒弍仂舒亠 
  ViewPage : System.Web.UI.Page
o 弌仂舒仆亠仆 于亠 仗亳仆亳仗
o 仂亰仄仂亢仆舒 舒弍仂舒  MasterPage
o 仂亢仆仂 仗亳舒 仂弍舒弍仂从 Page LifeCycle
  于仂 ViewPage
弌舒于仆亠仆亳亠 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  ControlBuilder 仄仂亢仆仂 仆舒仍亠亟仂于舒 亳
  仗亠亠仂仗亠亟亠仍 仍仂亞亳从 仗仂仂亠仆亳
亠仗舒亳亠仄 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.dll
o Microsoft.Web.Scripting.dll
亠仗舒亳亠仄 ASP.NET : DLR
<httpModules>
       <add name="DynamicLanguageHttpModule"
type="Microsoft.Web.Scripting.DynamicLanguageHttpModule"/>
</httpModules>
亠仗舒亳亠仄 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]);

        }
    }
}
亠仗舒亳亠仄 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>
亠仗舒亳亠仄 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
亠仗舒亳亠仄 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) %>
亠仗舒亳亠仄 ASP.NET : BP
<%= Html.ActionLinkToHomeIndex("Home")%>
<%= Html.ActionLinkToHomeTest("Test Link", 17,
    "David")%>

<buildProviders>
      <add extension=".actions束
type="MvcActionLinkHelper.MvcActionLinkBuildPro
vider" />
</buildProviders>
亠仗舒亳亠仄 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
亠仗舒亳亠仄 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 targetFramework="4.0" />
 </system.web>
</configuration>
亟亠亠  ASP.NET 4.0
Extensible Output Caching
<caching>
 <outputCache defaultProvider="AspNetInternalProvider">
  <providers>
    <add name="DiskCache"
    type="Test.OutputCacheEx.DiskOutputCacheProvider,
DiskCacheProvider"/>
  </providers>
 </outputCache>
</caching>
亟亠亠  ASP.NET 4.0
Extensible Output Caching
<%@ OutputCache="" Duration="60"
    VaryByParam="None" providerName="DiskCache" %>
亟亠亠  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);
    }
}
亟亠亠  ASP.NET 4.0
Auto-Start Web Applications
IIS 7.5 applicationHost.config
<applicationPools>
  <add name="MyApplicationPool"
startMode="AlwaysRunning" />
</applicationPools>
亟亠亠  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>
亟亠亠  ASP.NET 4.0
Auto-Start Web Applications
 public class CustomInitialization :
System.Web.Hosting.IProcessHostPreloadClient
 {
   public void Preload(string[] parameters)
   {
     // Perform initialization.
   }
 }
亟亠亠  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 source=dbserver;Initial
Catalog=aspnetstate"
 allowCustomSqlDatabase="true"
 compressionEnabled="true"/>

Compression with System.IO.Compression.GZipStream
亟亠亠  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=""<,>,*,%,&,:," />
亟亠亠  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) {...}
}
亟亠亠  ASP.NET 4.0
Object Caching Extensibility
仂仍舒 仗仂仗仍仆仂 从亠舒 亳亰 ASP.NET, 亠亞仂
亳仗仂仍亰仂于舒仆亳亠 于 仆舒仂仍仆 亳 亟. 仗亳仍仂亢亠仆亳.

仂磦亳 仆仂于舒 弍仂从舒 System.Runtime.Caching.dll 
舒弍舒从仆仄亳 从仍舒舒仄亳 亟仍 亠舒仍亳亰舒亳亳
仂弍于亠仆仆 从亠亠亶, 舒 舒从 亢亠 亠舒仍亳亰舒亳 从亠舒 于
仗舒仄亳 System.Runtime.Caching.MemoryCache
亟亠亠  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);
  }
亟亠亠  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" />
亟亠亠  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>
亟亠亠  ASP.NET 4.0
Multi-Targeting
<compilation targetFramework="4.0"/>
1. 仍亳 仆亠 从舒亰舒仆仂, 仂 于 AppPool 仗仂亟 4.0
2. 亢仆仂 仂弍磶舒亠仍仆仂 从舒亰于舒 于亠亳
   仗亳 仂弍磦仍亠仆亳亳 亳仗仂于 于 web.config
3. 舒亰仆亠 于舒亳舒仆 从亳仗
   仗亠亟从仂仄仗亳仍亳亳
4. 亟 亳仗仂仍亰仂于舒 仆仂于亠 于亠亳亳
ASP.NET Framework

Microsoft AJAX Library
亟亠亠  ASP.NET 4.0
Imperative Syntax
<script type="text/javascript">
 Sys.create.watermark("#Name", { WatermarkText: "Add
name here..." });
</script>


舒弍仂舒亠 IntelliSense
亟亠亠  ASP.NET 4.0
Script Loader
 于仂仄舒亳亠从亳 仗仂亟亞亢舒亠 亠
 仂于亠磳, 仂弍 从亳仗 弍仍 亰舒亞亢亠仆
  亠亟亳仆仂亢亟
 舒舒仍仍亠仍仆舒 亰舒亞亰从舒 从亳仗仂于
 亠仆亳于舒 亰舒亞亰从舒 从亳仗仂于
 舒弍仂舒亠 舒从 亢亠 仂 仂仂仆仆亳仄亳
  弍亳弍仍亳仂亠从舒仄亳
亟亠亠  ASP.NET 4.0
Script Loader
<script src=/slideshow/the-old-new-aspnet/2653966/"../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>
亟亠亠  ASP.NET 4.0
Script Loader
o MicrosoftAjaxComponentModel.js
o MicrosoftAjaxCore.js
o MicrosoftAjaxGlobalization.js
o ACTCommon.js
o ACTExtenderBase.js
o ACTWatermark.js
亟亠亠  ASP.NET 4.0
Content Delivery Network
<script src=/slideshow/the-old-new-aspnet/2653966/"ajax.microsoft.com/ajax/0910/start.js"></script>




http://www.asp.net/ajaxlibrary/cdn
亟亠亠  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=/slideshow/the-old-new-aspnet/2653966/"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>
亟亠亠  ASP.NET 4.0
Client Data Access : DataView
<h1>Movies</h1>
<ul id="moviesView">
     <li>{{Title}} - {{Director}}</li>
</ul>
亟亠亠  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.
亟亠亠  ASP.NET 4.0
Client DataContext, AdoNetDataContext
仂仂亢亳 仆舒:
o LINQ to SQL DataContext
o Entity Framework ObjectContext
仂亟亟亠亢亳于舒ム:
o 丼亠仆亳亠 亳 亰舒仗亳
o 仂亟亟亠亢亳于舒亠 仍仂亢仆亠 于磶亳 亳
  舒仂亳舒亳亳
亟亠亠  ASP.NET 4.0
jQuery Integration
<script src=/slideshow/the-old-new-aspnet/2653966/"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>
ASP.NET Framework

WebForms
亟亠亠  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" %>
亟亠亠  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
亟亠亠  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 舒亰仂于亶 从仍舒: PageRouteHandler
o 弌于仂亶于舒: Page.RouteData
亟亠亠  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");
  }
亟亠亠  ASP.NET 4.0
Routing
protected void Page_Load(object sender,
EventArgs e)
{
  string searchterm =
Page.RouteData.Values["searchterm"] as string;
  label1.Text = searchterm;
}
亟亠亠  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%>" />
亟亠亠  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>
亟亠亠  ASP.NET 4.0
ClientID
丕 于亠 control仂于 (亳  Page) 于仂亶于仂
ClientIDMode:
o AutoID  束舒舒晛 于亠亳
o Static  束仆亠亳亰仄亠仆磳仄亶損 ID
o Predictable  舒弍仂舒亠 于 仗舒亠 
  ClientIDRowSuffix
o Inherit  仆舒仍亠亟亠 仂 仂亟亳亠仍
亟亠亠  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?
亟亠亠  ASP.NET 4.0
Persisting Row Selection in Data Controls

<asp:GridView id="GridView2" runat="server" EnablePersistedSelection="true">
</asp:GridView>



弌仂舒仆磳 于亟亠仍亠仆亳亠 仗亳 仗亠亶亟亢亳仆亞亠
亟亠亠  ASP.NET 4.0
ASP.NET Chart Control
亟亠亠  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
亟亠亠  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>
亟亠亠  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>
亟亠亠  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>
亟亠亠  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;
}
亟亠亠  ASP.NET 4.0
Html Encoded Code Expressions
<%: expression %>
<%= HttpUtility.HtmlEncode(expression) %>
<%: Request["UserInput"] %>


IHtmlString
<%: new HtmlString("<strong>HTML that is not encoded</strong>") %>
亟亠亠  ASP.NET 4.0
VS: Project Template Changes
o Empty Web Application Template
o Web Application & Web Site Project
  Templates
The Old New ASP.NET
亠
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
亠
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

More Related Content

The Old New ASP.NET

  • 1. 弌舒亶 仆仂于亶 Microsoft ASP.NET <%= ASP.NET.Current.Version %>
  • 2. Vitaly Baum Senior Developer http://conteq.ru Personal Journal http://butaji.ru
  • 3. 丐亠仄亳仆 o Microsoft ASP.NET o MVC o AJAX Library o DynamicData o WebForms
  • 4. 弌仂亟亠亢舒仆亳亠 亟仂从仍舒亟舒 o 弌舒于仆亠仆亳亠 WebForms 亳 MVC o 亠仗舒亳亠仄 ASP.NET o 亟亠亠 ASP.NET 4.0
  • 9. 弌舒于仆亠仆亳亠 WebForms 亳 MVC WebForms MVC o 丐礀亠仍仂 亠亳仂于舒 o 亠亞从仂 亠亳仂于舒* (SoC) o RAD 仂亳亠仆舒亳 o 仂仆仂仍 舒亰仄亠从亳 (SEO) o 仂亠 仆舒亳 .NET o 仂亠 仆舒亳 于亠弍- 舒亰舒弍仂亳从 舒亰舒弍仂亳从 o 仂仍仂亠 从仂仍亳亠于仂 o 舒仍仂 仂仂仆仆亳 仂仂仆仆亳 从仂仄仗仂仆亠仆仂于 从仂仄仗仂仆亠仆仂于 亳 亠亠仆亳亶 o ViewState 仄仂亢仆仂 弍舒 o 亳亠仆亳仂于舒仆 仆舒 仂 舒仆亳 仂仂亳亶 亟亳亰舒亶仆 *SoC 仄仂亢仆仂 仗仂仍亳 亳 于 舒亰舒弍仂从亠 亟仍 WebForms
  • 10. 弌舒于仆亠仆亳亠 WebForms 亳 MVC WebForms MVC ASP.NET Framework .NET Framework
  • 11. 弌舒于仆亠仆亳亠 WebForms 亳 MVC o Incoming HTTP Request o ApplicationManager o HttpApplication o Global.asax o Modules (IHttpModule) o UrlRoutingModule o IIS 7.0
  • 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. 弌舒于仆亠仆亳亠 WebForms 亳 MVC o WebFormsViewEngine 舒弍仂舒亠 ViewPage : System.Web.UI.Page o 弌仂舒仆亠仆 于亠 仗亳仆亳仗 o 仂亰仄仂亢仆舒 舒弍仂舒 MasterPage o 仂亢仆仂 仗亳舒 仂弍舒弍仂从 Page LifeCycle 于仂 ViewPage
  • 15. 弌舒于仆亠仆亳亠 WebForms 亳 MVC Framework Solutions Platform
  • 16. 弌舒于仆亠仆亳亠 WebForms 亳 MVC Framework Solutions Platform
  • 17. 弌舒于仆亠仆亳亠 WebForms 亳 MVC Framework Solutions Platform
  • 18. 弌舒于仆亠仆亳亠 WebForms 亳 MVC Framework Solutions Platform
  • 20. 亠仗舒亳亠仄 ASP.NET o ASP.NET Framework o Providers o Modules o Handlers
  • 21. 亠仗舒亳亠仄 ASP.NET o MVC Framework o ViewEngines o ControllerFactories o Filters o Routing
  • 22. 亠仗舒亳亠仄 ASP.NET o Dynamic Language Support o ControlBuilder o BuildProvider
  • 23. 亠仗舒亳亠仄 ASP.NET : CB o ASP.NET Framewrok 仂亳 亟亠亠于仂 System.Web.UI.ControlBuilder 亟仍 仗仂仂亠仆亳 舒仆亳 o ControlBuilder 仄仂亢仆仂 仆舒仍亠亟仂于舒 亳 仗亠亠仂仗亠亟亠仍 仍仂亞亳从 仗仂仂亠仆亳
  • 24. 亠仗舒亳亠仄 ASP.NET : CB o Constructor Injection 于 UserControl
  • 25. 亠仗舒亳亠仄 ASP.NET : DLR o ASP.NET on IronPython
  • 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. 亠仗舒亳亠仄 ASP.NET : DLR <httpModules> <add name="DynamicLanguageHttpModule" type="Microsoft.Web.Scripting.DynamicLanguageHttpModule"/> </httpModules>
  • 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. 亠仗舒亳亠仄 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. 亠仗舒亳亠仄 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. 亠仗舒亳亠仄 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. 亠仗舒亳亠仄 ASP.NET : BP <%= Html.ActionLinkToHomeIndex("Home")%> <%= Html.ActionLinkToHomeTest("Test Link", 17, "David")%> <buildProviders> <add extension=".actions束 type="MvcActionLinkHelper.MvcActionLinkBuildPro vider" /> </buildProviders>
  • 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. 亠仗舒亳亠仄 ASP.NET : BP o 200 仂从 从仂亟舒 o 仂仍从仂 舒弍仂 CodeDom o 2 从仂仄仄亠仆舒亳 HACK o 亠从仂仍从仂 从仂仄仄亠仆舒亳亠于 束 仂亢舒仍亠仆亳 仆亠仍亰β
  • 35. 亠仗舒亳亠仄 ASP.NET : BP o 亠亠亟亠仍舒仆仂 仆舒 T4 o 仂仂舒 亠舒仍亳亰舒亳亳 亳 仂仗仂于仂亢亟亠仆亳 o 亠仂弍仂亟亳仄仂 仗亠亠从仂仄仗亳仍亳亳 仗亳 于从仍舒亟于舒仆亳亳 仆舒 亠于亠
  • 38. 亟亠亠 ASP.NET 4.0 Web.config File Minification <?xml version="1.0"?> <configuration> <system.web> <compilation targetFramework="4.0" /> </system.web> </configuration>
  • 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. 亟亠亠 ASP.NET 4.0 Extensible Output Caching <%@ OutputCache="" Duration="60" VaryByParam="None" providerName="DiskCache" %>
  • 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. 亟亠亠 ASP.NET 4.0 Auto-Start Web Applications IIS 7.5 applicationHost.config <applicationPools> <add name="MyApplicationPool" startMode="AlwaysRunning" /> </applicationPools>
  • 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. 亟亠亠 ASP.NET 4.0 Auto-Start Web Applications public class CustomInitialization : System.Web.Hosting.IProcessHostPreloadClient { public void Preload(string[] parameters) { // Perform initialization. } }
  • 45. 亟亠亠 ASP.NET 4.0 Permanently Redirecting a Page (301) RedirectPermanent("/newpath/foroldcontent.aspx");
  • 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. 亟亠亠 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. 亟亠亠 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. 亟亠亠 ASP.NET 4.0 Object Caching Extensibility 仂仍舒 仗仂仗仍仆仂 从亠舒 亳亰 ASP.NET, 亠亞仂 亳仗仂仍亰仂于舒仆亳亠 于 仆舒仂仍仆 亳 亟. 仗亳仍仂亢亠仆亳. 仂磦亳 仆仂于舒 弍仂从舒 System.Runtime.Caching.dll 舒弍舒从仆仄亳 从仍舒舒仄亳 亟仍 亠舒仍亳亰舒亳亳 仂弍于亠仆仆 从亠亠亶, 舒 舒从 亢亠 亠舒仍亳亰舒亳 从亠舒 于 仗舒仄亳 System.Runtime.Caching.MemoryCache
  • 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. 亟亠亠 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. 亟亠亠 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. 亟亠亠 ASP.NET 4.0 Multi-Targeting <compilation targetFramework="4.0"/> 1. 仍亳 仆亠 从舒亰舒仆仂, 仂 于 AppPool 仗仂亟 4.0 2. 亢仆仂 仂弍磶舒亠仍仆仂 从舒亰于舒 于亠亳 仗亳 仂弍磦仍亠仆亳亳 亳仗仂于 于 web.config 3. 舒亰仆亠 于舒亳舒仆 从亳仗 仗亠亟从仂仄仗亳仍亳亳 4. 亟 亳仗仂仍亰仂于舒 仆仂于亠 于亠亳亳
  • 55. 亟亠亠 ASP.NET 4.0 Imperative Syntax <script type="text/javascript"> Sys.create.watermark("#Name", { WatermarkText: "Add name here..." }); </script> 舒弍仂舒亠 IntelliSense
  • 56. 亟亠亠 ASP.NET 4.0 Script Loader 于仂仄舒亳亠从亳 仗仂亟亞亢舒亠 亠 仂于亠磳, 仂弍 从亳仗 弍仍 亰舒亞亢亠仆 亠亟亳仆仂亢亟 舒舒仍仍亠仍仆舒 亰舒亞亰从舒 从亳仗仂于 亠仆亳于舒 亰舒亞亰从舒 从亳仗仂于 舒弍仂舒亠 舒从 亢亠 仂 仂仂仆仆亳仄亳 弍亳弍仍亳仂亠从舒仄亳
  • 57. 亟亠亠 ASP.NET 4.0 Script Loader <script src=/slideshow/the-old-new-aspnet/2653966/"../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. 亟亠亠 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. 亟亠亠 ASP.NET 4.0 Content Delivery Network <script src=/slideshow/the-old-new-aspnet/2653966/"ajax.microsoft.com/ajax/0910/start.js"></script> http://www.asp.net/ajaxlibrary/cdn
  • 60. 亟亠亠 ASP.NET 4.0 Client Data Access o Client data controls o Client templates o Client data context
  • 61. 亟亠亠 ASP.NET 4.0 Client Data Access : DataView <script src=/slideshow/the-old-new-aspnet/2653966/"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. 亟亠亠 ASP.NET 4.0 Client Data Access : DataView <h1>Movies</h1> <ul id="moviesView"> <li>{{Title}} - {{Director}}</li> </ul>
  • 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. 亟亠亠 ASP.NET 4.0 Client DataContext, AdoNetDataContext 仂仂亢亳 仆舒: o LINQ to SQL DataContext o Entity Framework ObjectContext 仂亟亟亠亢亳于舒ム: o 丼亠仆亳亠 亳 亰舒仗亳 o 仂亟亟亠亢亳于舒亠 仍仂亢仆亠 于磶亳 亳 舒仂亳舒亳亳
  • 65. 亟亠亠 ASP.NET 4.0 jQuery Integration <script src=/slideshow/the-old-new-aspnet/2653966/"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>
  • 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. 亟亠亠 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. 亟亠亠 ASP.NET 4.0 Browser Capabilities Providers o 仂弍舒于仍亠仆 仆仂于亠 仂仗亳舒仆亳 o 亠亠仂仗亠亟亠仍磳仄亶 仗仂于舒亶亟亠
  • 70. 亟亠亠 ASP.NET 4.0 Routing http://website/products.aspx?categoryid=12 http://website/products/software o 舒亰仂于亶 从仍舒: PageRouteHandler o 弌于仂亶于舒: Page.RouteData
  • 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. 亟亠亠 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. 亟亠亠 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. 亟亠亠 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. 亟亠亠 ASP.NET 4.0 ClientID 丕 于亠 control仂于 (亳 Page) 于仂亶于仂 ClientIDMode: o AutoID 束舒舒晛 于亠亳 o Static 束仆亠亳亰仄亠仆磳仄亶損 ID o Predictable 舒弍仂舒亠 于 仗舒亠 ClientIDRowSuffix o Inherit 仆舒仍亠亟亠 仂 仂亟亳亠仍
  • 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. 亟亠亠 ASP.NET 4.0 Persisting Row Selection in Data Controls <asp:GridView id="GridView2" runat="server" EnablePersistedSelection="true"> </asp:GridView> 弌仂舒仆磳 于亟亠仍亠仆亳亠 仗亳 仗亠亶亟亢亳仆亞亠
  • 78. 亟亠亠 ASP.NET 4.0 ASP.NET Chart Control
  • 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. 亟亠亠 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. 亟亠亠 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. 亟亠亠 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. 亟亠亠 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. 亟亠亠 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. 亟亠亠 ASP.NET 4.0 VS: Project Template Changes o Empty Web Application Template o Web Application & Web Site Project Templates
  • 87. 亠 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
  • 88. 亠 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