8. ASP.NET 5 跟 MVC 6 有什麼關係?
• ASP.NET 5 是一種開發模型的轉變
• 目前 ASP.NET 5 只提供 MVC 的框架
• 目前預覽版本裡只有 C# 框架
9. ASP.NET 的發展歷史
• 1996 – ASP
• 2002 – ASP.NET Web Form, Web Services
• 2008 – ASP.NET MVC 1
• 2010 – ASP.NET MVC 2
• 2011 – ASP.NET MVC 3, Web Pages
• 2012 – ASP.NET MVC 4, Web API
• 2013 – ASP.NET MVC 5, SignalR
• 2015 – ASP.NET 5, MVC 6
10. ASP.NET 5 三種專案介紹
• ASP.NET Web Application
建立 ASP.NET 5 網站應用程式
• ASP.NET 5 Class Library
建立與 ASP.NET 5 相容的類別庫
• ASP.NET 5 Console Application
建立使用 K 命令列工具的主控台應用程式
14. Current ASP.NET Stack
Windows Server
IIS
.NET Framework
ASP.NET Web
Forms
MVC Web API
System.Web
HTTP
Modules
HTTP
Handlers
Request
Pipeline
Caching
Session
State
15. 現有 ASP.NET (問題/限制)
• 只能 Run 在 IIS
• 與 System.Web 相依
• Web 技術發展速度比 .NET Framework 還快
• 要再優化執行環境有困難
• 無法跨多個平台 (Windows...)
• 不是雲端最佳化...
Cache & Session 不能夠平行擴充,不符合雲端 Scale out 設計理念
50. (Injecting a service into a view) 服務檢視注入
• 在 ASP.NET 5 中大量地使用到 DI (Dependency Injection) 概念
• 只需撰寫如下的程式碼,可在 View 中任意注入此服務類別:
public class StatisticsService
{
public async Task<int> GetCount()
{
return await Task.FromResult(1);
}
public async Task<int> GetCompletedCount()
{
return await Task.FromResult(2);
}
public async Task<double> GetAveragePriority()
{
return await Task.FromResult(0.0);
}
}
51. (Injecting a service into a view) 服務檢視注入
• 從 View 中載入服務類別的方式
• 使用服務類別的方式
• 並記得在 Startup.cs 中的 ConfigureService() 註冊該服務類別
• 服務類別必須是:
Public 類別
非巢狀類別
非抽象類別
52.
53. TagHelper 標籤補助方法
• 取代原本的 HtmlHelper 自定義 HTML 標籤的方式
• 定義標籤輸出
@Html.Label(“UserName”, “UserName:”, new { @class = "col-md-2 control-label" })
[HtmlElementName("myLabel")]
public class MyLabelTagHelper : TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "";
StringBuilder sb = new StringBuilder();
sb.AppendFormat("<label id={0} name={0}>{1}</label>", "myLabel", "我的
LABEL");
output.Content = sb.ToString();
}
}