SlideShare a Scribd company logo
ASP.NET 5 快速入門
(2015.12)
小朱
歡迎大家進入真正的 Web 程式設計世界
何謂真正的 Web 程式設計世界?
• 一切功能都能用程式碼決定,不需要再接觸 UI。
• 例如…那個有點討人厭的 IIS Manager…
• 套件的相依性 (Dependency) 能用程式碼決定,也不需要再接觸
UI。
• 例如…加入參考和管理 NuGet 套件這件事。
• 連前端應用程式框架也可以用程式碼或指令來處理。
• Web 應用程式不再相依於特定環境。
• 這表示,不只 Windows,連 Linux, Mac 也能夠跑才算。
ASP.NET 5 是 Microsoft 技術中
第一個符合這些條件的平台。
ASP.NET 5
• 第一個使用程式碼決定功能的 Web 開發平台。
• 第一個不再相依於 IIS 的 Web 開發平台。
• 第一個不再受限於 Windows 的 Web 開發平台。
• 第一個將前端程式納入指令管理的 Web 開發平台。
ASP.NET 5 vs. Pre-ASP.NET 5
ASP.NET 5 vs. ASP.NET 4-
了解其中的差異,以消除莫名的恐懼。
程式設計模型
架構
工具
部署
由程式碼決定應用程式應有的功能。
ASP.NET 5 ASP.NET 4-
由安裝 IIS 所設定的模組功能決定。
具有強大彈性的 Package-based 相
依,且只有超輕量的 Runtime。
相依於大包的 .NET Framework 裡面
的 System.Web.dll。
Visual Studio, Visual Studio Code,
Sublime 或其他 Open Source 工具。
Visual Studio (Web Form)
Visual Studio, VS Code (MVC)
IIS 只是附加,ASP.NET 5 預設使用
Kestrel Server。
原則上只能掛在 IIS 上,目前只有
Web API 具有 Self-hosting 的能力。
ASP.NET 5 vs. ASP.NET 4- Web Form
了解其中的差異,以消除莫名的恐懼。
程式設計模型
架構
前端介面
MVC-based, 沒有 Web Form
ASP.NET 5
ASP.NET 4-
Web Form
Web Form 程式設計模型
Controller, Model,
View: View Component, Tag Helpers
Page, Master Page
User Control, Custom Control
VC, Tag Helpers: C#
View: Razor
Control-based
HTML/CSS/JavaScript Render
ASP.NET 5 版本系統
• 目前的版本:v1.0.0-rc1-final
• Microsoft.AspNet.* : v1.0.0-rc1-final (非 MVC 的 ASP.NET 套件)
• Microsoft.AspNet.Mvc.*: v6.0.0-rc1-final (ASP.NET MVC 6 套件)
• EntityFramework.*: v7.0.0-rc1-final (Entity Framework 7 套件)
• Microsoft.Extensions.*: v1.0.0-rc1-final (ASP.NET 組態與記錄等擴充功
能的套件)
• Microsoft.Dnx.*: v1.0.0-rc1-final (.NET Execution Environment 的相關
套件)
• 未來其他的套件 (例如 .NET Core 的功能套件) 也將使用相似的命
名規則。
選擇正確的版本
開發中版本
http://github.com/aspnet
官方版本
http://asp.net/vnext (入口)
http://get.asp.net (取得工具)
http://docs.asp.net (文件)
ASP.NET 的基石:.NET Execution Environment
• 最早的命名是 Project K。
• 負責管理 .NET 5 以上版本的執行時期環境。
• 幾個重要的指令:
• dnx: 執行 .NET 的程式。
• dnu: DNX 工具,用來還原專案使用的 NuGet 套件。
• dnvm: DNX 版本管理工具,可安裝指定或最新版的 DNX Runtime。
DNX 4.5.1 vs. DNX Core 5.0
ASP.NET 5 專案系統
DNX 4.5.1
• 以 .NET Framework 為基礎
• 可使用目前以 .NET 為主的元
件與 DLLs
• 無法跨平台 
DNX Core 5.0
• 以 .NET Core 5 為基礎
• 無法使用非以 .NET Core 開發
的元件與 DLLs
• 可以跨平台 
• 目前 .NET Framework 內的核
心組件已有超過 90% 移轉
到 .NET Core,預計在 1.0
release 前全部完成。
ASP.NET 5 相依管理 (Dependency)
• ASP.NET 5 使用 NuGet 套件化管理,
原則上不再有『加入參考』這件事。
• 加入參考,由 GUI 轉換成編輯
project.json 內的 dependencies 設
定。
• 不再只鎖定固定版本,可依需求選擇
特定版本的版本。
• 每次修改 dependencies 儲存後都會
自動同步套件,部署時亦然。
ASP.NET 5 相依管理 (Dependency)
• 針對特定平台的相依性,project.json 提供了 frameworks 處
理這個問題。
• dnx451  .NET Framework 4.5.1
• dnxcore50  .NET Core 5.0
如何取得 ASP.NET 5 的開發工具?
• 微軟幫你準備好了 Microsoft ASP.NET
and Web Tools for ASP.NET 5 (RC) 
• 安裝 Visual Studio 2015 Update 1 後,自
動就有這工具了。
其他的平台,可到 https://get.asp.net/
取得必要的工具
專案範本產生器 (Visual Studio)
Web 專案範本 Class Library, Console 專案
專案範本產生器 (for Windows, Linux, Mac)
• 以 node.js 開發
• 跨平台的 Generator
• 不需要 GUI 就能產生
以資料夾為主的專案
範本
• Windows 10 作業系
統暫時無法使用它,
因為它使用的引擎在
Windows 10 上有問
題… 
專案結構
• 參考: Platform-Specific 組件參考
• wwwroot: 網站根目錄
• 相依性: 前端套件相依性
• Startup.cs
• project.json
• appsettings.json
• global.json
Startup.cs
• 一切都由此開始。
• 由程式碼定義功能。
• app.UseStaticFiles(); (Microsoft.AspNet.StaticFiles 套件)
• app.UseDeveloperExceptionPage(); (Microsoft.AspNet.Builder套件)
• app.UseDirectoryBrowser(); (Microsoft.AspNet.Builder套件)
• app.UseDatabaseErrorPage(); (Microsoft.AspNet.Builder套件)
• app.UseIISPlatformHandler(); (Microsoft.AspNet.IISPlatformHandler 套件)
• app.UseMvc(); (Microsoft.AspNet.Mvc 套件)
• 服務相依性 (Service Dependency)
• services.AddMvc();
• services.AddTransient<ISmsSender, AuthMessageSender>();
project.json
• 取代了 Web.config
• 應用程式的定義在此設定。
• 套件相依性 (dependencies)
• 平台相依性 (frameworks)
• 環境參數 (commands)
• 建置時排除資源 (exclude)
• 發行時排除資源
(publishExclude)
• 觸發使用 dnu 執行指令的
事件 (scripts)
appsettings.json
• 取代了 Web.config 內的
設定相關功能。
• ConnectionStrings
• AppSettings
• 其他設定值
• 必須在 Startup.cs 中導入
ConfigurationBuilder 的
設定,才會生效。
global.json
• 用以鎖定方案層級的 DNX 版本與相關設定。
• 需要加在方案層級內。
整合前端框架
gulp.js: JavaScript-based Task
Management
bower.js: Package Management
for Web
整合前端框架
ASP.NET MVC 6
• 其實沒有什麼太大變化,但不是沒有變化 。
• ActionResult 類別改成 IActionResult 介面。
• 加入新的 View Component 能力,比 Partial View 更強的
Programmable View。
• Visual Studio 2015 一樣支援 Scaffold 功能。
• Web API 與 MVC 核心完全整合。
• MVC 6 需要的功能一樣要用程式碼定義 (例如 ASP.NET
Identity, CORS 等)
• 支援除錯時期的 Edit-and-Continue
View Component (VC)
• View Component 是進階版本的 Partial View。
• 你也可以將它視為極簡的 Controller + View。
• Partial View 要以 Razor 來寫,而 View Component 可由 C# + Razor
來開發,將資料處理和實際顯示的程式碼進一步切開。
• View Component 的 View 檔案放在標準的 View 路徑下的
Components/[VC]/[Viewname].cshtml,預設的名稱是
default.cshtml,不過也可以自己決定命名。
• 引用端使用 @Component.Invoke() 呼叫 VC。
Tag Helper
• 標籤自造者 (Tag Maker)
• 自造標籤,或是在現有標籤內加入自己需要的特徵。
• 加入 Microsoft.AspNet.Mvc.TagHelper 的套件。
• 繼承自 TagHelper 類別。
• 覆寫 ProcessAsync() 方法。
• 使用 GetChildContentAsync() 取得標籤內的內容。
• 產生輸出的 HTML 內容。
<tagMaker>Data Content</tagMaker>
<div attrMaker=“data”>Data Content</div>
Hosting 的改變
• ASP.NET 5 除非使用 IIS Platform Handler,否則預設使用
Kestrel Server 作為 Hosting 的基底。
• Kestrel Server (Microsoft.AspNet.Server.Kestrel) 支援跨平台的
Hosting。
• Kestrel Server 直接支援 IIS-based hosting 以及 Self-hosting 兩
種方式。
IIS Platform Handler
IIS Platform HandlerHTTP.SYS
Web AppWeb App
aspnet_wp aspnet_wp
Web App
Kestrel
Server
Web App
Kestrel
Server
IIS Hosting Mode (ASP.NET 4-) IIS Platform Handler (ASP.NET 5)
結語
• ASP.NET 5 是 Microsoft 第一個真正的 Web 應用開發的平台。
• 豐富的套件支援 (前端+後端),Visual Studio 便利的專案管理方
式,使生產力大增。
• ASP.NET 5 跨平台的願望正式實現。
• 不過…要先習慣沒有 Web.config 的世界 
References
• ASP.NET Official: http://asp.net/vnext
• Documentation: http://docs.asp.net
• Web Team Blog: http://blogs.msdn.com/webdev
• ASP.NET GitHub: http://github.com/aspnet

More Related Content

What's hot (20)

PPTX
Asp.net core v1.0
chang kuo-chao
 
PPTX
Nuget介紹- 如何使用和建立自己的package
Alan Tsai
 
PPTX
ASP.NET MVC 6 新功能探索
Will Huang
 
PPTX
Windows Container 101: dotNET, Container, Kubernetes
Will Huang
 
PPTX
宅學習 Firebase
Wei chung chai
 
PDF
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
 
PPTX
Visual Studio 2017 新功能探索 (Study4.TW)
Will Huang
 
PPTX
React js
國昭 張
 
PPTX
Vue
國昭 張
 
PPTX
ASP.NET Core 6.0 全新功能探索
Will Huang
 
PPTX
Frontend Devops at Cloudinsight
Yan Wang
 
PPTX
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Will Huang
 
PPTX
Redux+react js
國昭 張
 
PPTX
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Will Huang
 
PPTX
快快樂樂學 Angular 2 開發框架
Will Huang
 
PPTX
Micro-frontends with Angular 10 (Modern Web 2020)
Will Huang
 
PPTX
SQL Server 資料庫版本控管
Will Huang
 
PPTX
Entity framework + Linq 介紹
Alan Tsai
 
PPTX
AKS 與開發人員體驗 (Kubernetes 大講堂)
Will Huang
 
PPTX
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
 
Asp.net core v1.0
chang kuo-chao
 
Nuget介紹- 如何使用和建立自己的package
Alan Tsai
 
ASP.NET MVC 6 新功能探索
Will Huang
 
Windows Container 101: dotNET, Container, Kubernetes
Will Huang
 
宅學習 Firebase
Wei chung chai
 
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
 
Visual Studio 2017 新功能探索 (Study4.TW)
Will Huang
 
React js
國昭 張
 
ASP.NET Core 6.0 全新功能探索
Will Huang
 
Frontend Devops at Cloudinsight
Yan Wang
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Will Huang
 
Redux+react js
國昭 張
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Will Huang
 
快快樂樂學 Angular 2 開發框架
Will Huang
 
Micro-frontends with Angular 10 (Modern Web 2020)
Will Huang
 
SQL Server 資料庫版本控管
Will Huang
 
Entity framework + Linq 介紹
Alan Tsai
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
Will Huang
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
 

Similar to ASP.NET 5 快速入門 (Getting Started ASP.NET 5) (20)

PPTX
使用 ASP.NET 5 實戰開發雲端應用程式
Will Huang
 
PPTX
@Connect(); microsoft visual studio vnext & azure
Bruce Chen
 
PPTX
Asp.net core v1.0
國昭 張
 
PDF
該準備從 .NET Framework 4.x 遷移至 .NET Core 3.0 了嗎?
Gelis Wu
 
PPTX
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
Edward Kuo
 
PPTX
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
Will Huang
 
PPTX
開放源碼的ASP.NET Core & ADO.NET (for VS2015)
MIS2000 Lab.
 
PPTX
Introduction to ASP.NET MVC and MVC 5 Features
Jeff Chu
 
PPT
教學投影片01_Vb2005
洋夫 葉
 
PDF
20130823微軟雲端平台開發者日
twMVC
 
PPTX
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Gelis Wu
 
PDF
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
江華 奚
 
PPTX
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
 
PPTX
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC
 
PPTX
Net 6 的 blazor 開發新視界
Gelis Wu
 
PDF
Asp.net mvc網站的從無到有
Wade Huang
 
PDF
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
twMVC
 
PDF
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC
 
PDF
ASP.NET Core 2.1設計新思維與新發展
江華 奚
 
PDF
Asp.net mvc 從無到有 -twMVC#2
twMVC
 
使用 ASP.NET 5 實戰開發雲端應用程式
Will Huang
 
@Connect(); microsoft visual studio vnext & azure
Bruce Chen
 
Asp.net core v1.0
國昭 張
 
該準備從 .NET Framework 4.x 遷移至 .NET Core 3.0 了嗎?
Gelis Wu
 
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
Edward Kuo
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
Will Huang
 
開放源碼的ASP.NET Core & ADO.NET (for VS2015)
MIS2000 Lab.
 
Introduction to ASP.NET MVC and MVC 5 Features
Jeff Chu
 
教學投影片01_Vb2005
洋夫 葉
 
20130823微軟雲端平台開發者日
twMVC
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Gelis Wu
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
江華 奚
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
 
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC
 
Net 6 的 blazor 開發新視界
Gelis Wu
 
Asp.net mvc網站的從無到有
Wade Huang
 
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
twMVC
 
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC
 
ASP.NET Core 2.1設計新思維與新發展
江華 奚
 
Asp.net mvc 從無到有 -twMVC#2
twMVC
 
Ad

More from Jeff Chu (20)

PPTX
.NET Conf 2019 高雄場 - .NET Core 3.0
Jeff Chu
 
PPTX
Developing Serverless application with Microsoft Azure and Cognitive Services
Jeff Chu
 
PPTX
.NET Innovations and Improvements
Jeff Chu
 
PPTX
Microsoft Azure IoT 手把手實作 @ K.NET by Maduka (2017-8-12)
Jeff Chu
 
PPTX
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
Jeff Chu
 
PPTX
利用微軟雲端平台打造完整 IoT 服務鍊 (maduka)
Jeff Chu
 
PPTX
Developing serverless applications with azure functions
Jeff Chu
 
PPTX
Connect() Mini 2016
Jeff Chu
 
PPTX
Windows 與 Azure 的容器旅程 @ Skilltree Day
Jeff Chu
 
PPTX
物件導向設計原則:SOLID + DI
Jeff Chu
 
PDF
例外處理實務
Jeff Chu
 
PPTX
Machine Learning, Big Data, Insights
Jeff Chu
 
PPTX
Global Azure Bootcamp 2015 Taipei: Planning and Migrating your Application fr...
Jeff Chu
 
PPTX
Cloud computing for manufacturing
Jeff Chu
 
PPTX
Microsoft Azure 新功能導覽 @ Build 2014
Jeff Chu
 
PPTX
Microsoft Azure 概觀 (2014-4-2 雲端達人班)
Jeff Chu
 
PPTX
Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)
Jeff Chu
 
PPTX
GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐
Jeff Chu
 
PDF
從雲端看資訊科技的未來 (2014-03-26 國立嘉義大學資管系週會演講)
Jeff Chu
 
PPTX
雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)
Jeff Chu
 
.NET Conf 2019 高雄場 - .NET Core 3.0
Jeff Chu
 
Developing Serverless application with Microsoft Azure and Cognitive Services
Jeff Chu
 
.NET Innovations and Improvements
Jeff Chu
 
Microsoft Azure IoT 手把手實作 @ K.NET by Maduka (2017-8-12)
Jeff Chu
 
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
Jeff Chu
 
利用微軟雲端平台打造完整 IoT 服務鍊 (maduka)
Jeff Chu
 
Developing serverless applications with azure functions
Jeff Chu
 
Connect() Mini 2016
Jeff Chu
 
Windows 與 Azure 的容器旅程 @ Skilltree Day
Jeff Chu
 
物件導向設計原則:SOLID + DI
Jeff Chu
 
例外處理實務
Jeff Chu
 
Machine Learning, Big Data, Insights
Jeff Chu
 
Global Azure Bootcamp 2015 Taipei: Planning and Migrating your Application fr...
Jeff Chu
 
Cloud computing for manufacturing
Jeff Chu
 
Microsoft Azure 新功能導覽 @ Build 2014
Jeff Chu
 
Microsoft Azure 概觀 (2014-4-2 雲端達人班)
Jeff Chu
 
Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)
Jeff Chu
 
GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐
Jeff Chu
 
從雲端看資訊科技的未來 (2014-03-26 國立嘉義大學資管系週會演講)
Jeff Chu
 
雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)
Jeff Chu
 
Ad

ASP.NET 5 快速入門 (Getting Started ASP.NET 5)

  • 3. 何謂真正的 Web 程式設計世界? • 一切功能都能用程式碼決定,不需要再接觸 UI。 • 例如…那個有點討人厭的 IIS Manager… • 套件的相依性 (Dependency) 能用程式碼決定,也不需要再接觸 UI。 • 例如…加入參考和管理 NuGet 套件這件事。 • 連前端應用程式框架也可以用程式碼或指令來處理。 • Web 應用程式不再相依於特定環境。 • 這表示,不只 Windows,連 Linux, Mac 也能夠跑才算。
  • 4. ASP.NET 5 是 Microsoft 技術中 第一個符合這些條件的平台。
  • 5. ASP.NET 5 • 第一個使用程式碼決定功能的 Web 開發平台。 • 第一個不再相依於 IIS 的 Web 開發平台。 • 第一個不再受限於 Windows 的 Web 開發平台。 • 第一個將前端程式納入指令管理的 Web 開發平台。
  • 6. ASP.NET 5 vs. Pre-ASP.NET 5
  • 7. ASP.NET 5 vs. ASP.NET 4- 了解其中的差異,以消除莫名的恐懼。 程式設計模型 架構 工具 部署 由程式碼決定應用程式應有的功能。 ASP.NET 5 ASP.NET 4- 由安裝 IIS 所設定的模組功能決定。 具有強大彈性的 Package-based 相 依,且只有超輕量的 Runtime。 相依於大包的 .NET Framework 裡面 的 System.Web.dll。 Visual Studio, Visual Studio Code, Sublime 或其他 Open Source 工具。 Visual Studio (Web Form) Visual Studio, VS Code (MVC) IIS 只是附加,ASP.NET 5 預設使用 Kestrel Server。 原則上只能掛在 IIS 上,目前只有 Web API 具有 Self-hosting 的能力。
  • 8. ASP.NET 5 vs. ASP.NET 4- Web Form 了解其中的差異,以消除莫名的恐懼。 程式設計模型 架構 前端介面 MVC-based, 沒有 Web Form ASP.NET 5 ASP.NET 4- Web Form Web Form 程式設計模型 Controller, Model, View: View Component, Tag Helpers Page, Master Page User Control, Custom Control VC, Tag Helpers: C# View: Razor Control-based HTML/CSS/JavaScript Render
  • 9. ASP.NET 5 版本系統 • 目前的版本:v1.0.0-rc1-final • Microsoft.AspNet.* : v1.0.0-rc1-final (非 MVC 的 ASP.NET 套件) • Microsoft.AspNet.Mvc.*: v6.0.0-rc1-final (ASP.NET MVC 6 套件) • EntityFramework.*: v7.0.0-rc1-final (Entity Framework 7 套件) • Microsoft.Extensions.*: v1.0.0-rc1-final (ASP.NET 組態與記錄等擴充功 能的套件) • Microsoft.Dnx.*: v1.0.0-rc1-final (.NET Execution Environment 的相關 套件) • 未來其他的套件 (例如 .NET Core 的功能套件) 也將使用相似的命 名規則。
  • 11. ASP.NET 的基石:.NET Execution Environment • 最早的命名是 Project K。 • 負責管理 .NET 5 以上版本的執行時期環境。 • 幾個重要的指令: • dnx: 執行 .NET 的程式。 • dnu: DNX 工具,用來還原專案使用的 NuGet 套件。 • dnvm: DNX 版本管理工具,可安裝指定或最新版的 DNX Runtime。
  • 12. DNX 4.5.1 vs. DNX Core 5.0
  • 13. ASP.NET 5 專案系統 DNX 4.5.1 • 以 .NET Framework 為基礎 • 可使用目前以 .NET 為主的元 件與 DLLs • 無法跨平台  DNX Core 5.0 • 以 .NET Core 5 為基礎 • 無法使用非以 .NET Core 開發 的元件與 DLLs • 可以跨平台  • 目前 .NET Framework 內的核 心組件已有超過 90% 移轉 到 .NET Core,預計在 1.0 release 前全部完成。
  • 14. ASP.NET 5 相依管理 (Dependency) • ASP.NET 5 使用 NuGet 套件化管理, 原則上不再有『加入參考』這件事。 • 加入參考,由 GUI 轉換成編輯 project.json 內的 dependencies 設 定。 • 不再只鎖定固定版本,可依需求選擇 特定版本的版本。 • 每次修改 dependencies 儲存後都會 自動同步套件,部署時亦然。
  • 15. ASP.NET 5 相依管理 (Dependency) • 針對特定平台的相依性,project.json 提供了 frameworks 處 理這個問題。 • dnx451  .NET Framework 4.5.1 • dnxcore50  .NET Core 5.0
  • 16. 如何取得 ASP.NET 5 的開發工具? • 微軟幫你準備好了 Microsoft ASP.NET and Web Tools for ASP.NET 5 (RC)  • 安裝 Visual Studio 2015 Update 1 後,自 動就有這工具了。 其他的平台,可到 https://get.asp.net/ 取得必要的工具
  • 17. 專案範本產生器 (Visual Studio) Web 專案範本 Class Library, Console 專案
  • 18. 專案範本產生器 (for Windows, Linux, Mac) • 以 node.js 開發 • 跨平台的 Generator • 不需要 GUI 就能產生 以資料夾為主的專案 範本 • Windows 10 作業系 統暫時無法使用它, 因為它使用的引擎在 Windows 10 上有問 題… 
  • 19. 專案結構 • 參考: Platform-Specific 組件參考 • wwwroot: 網站根目錄 • 相依性: 前端套件相依性 • Startup.cs • project.json • appsettings.json • global.json
  • 20. Startup.cs • 一切都由此開始。 • 由程式碼定義功能。 • app.UseStaticFiles(); (Microsoft.AspNet.StaticFiles 套件) • app.UseDeveloperExceptionPage(); (Microsoft.AspNet.Builder套件) • app.UseDirectoryBrowser(); (Microsoft.AspNet.Builder套件) • app.UseDatabaseErrorPage(); (Microsoft.AspNet.Builder套件) • app.UseIISPlatformHandler(); (Microsoft.AspNet.IISPlatformHandler 套件) • app.UseMvc(); (Microsoft.AspNet.Mvc 套件) • 服務相依性 (Service Dependency) • services.AddMvc(); • services.AddTransient<ISmsSender, AuthMessageSender>();
  • 21. project.json • 取代了 Web.config • 應用程式的定義在此設定。 • 套件相依性 (dependencies) • 平台相依性 (frameworks) • 環境參數 (commands) • 建置時排除資源 (exclude) • 發行時排除資源 (publishExclude) • 觸發使用 dnu 執行指令的 事件 (scripts)
  • 22. appsettings.json • 取代了 Web.config 內的 設定相關功能。 • ConnectionStrings • AppSettings • 其他設定值 • 必須在 Startup.cs 中導入 ConfigurationBuilder 的 設定,才會生效。
  • 23. global.json • 用以鎖定方案層級的 DNX 版本與相關設定。 • 需要加在方案層級內。
  • 26. ASP.NET MVC 6 • 其實沒有什麼太大變化,但不是沒有變化 。 • ActionResult 類別改成 IActionResult 介面。 • 加入新的 View Component 能力,比 Partial View 更強的 Programmable View。 • Visual Studio 2015 一樣支援 Scaffold 功能。 • Web API 與 MVC 核心完全整合。 • MVC 6 需要的功能一樣要用程式碼定義 (例如 ASP.NET Identity, CORS 等) • 支援除錯時期的 Edit-and-Continue
  • 27. View Component (VC) • View Component 是進階版本的 Partial View。 • 你也可以將它視為極簡的 Controller + View。 • Partial View 要以 Razor 來寫,而 View Component 可由 C# + Razor 來開發,將資料處理和實際顯示的程式碼進一步切開。 • View Component 的 View 檔案放在標準的 View 路徑下的 Components/[VC]/[Viewname].cshtml,預設的名稱是 default.cshtml,不過也可以自己決定命名。 • 引用端使用 @Component.Invoke() 呼叫 VC。
  • 28. Tag Helper • 標籤自造者 (Tag Maker) • 自造標籤,或是在現有標籤內加入自己需要的特徵。 • 加入 Microsoft.AspNet.Mvc.TagHelper 的套件。 • 繼承自 TagHelper 類別。 • 覆寫 ProcessAsync() 方法。 • 使用 GetChildContentAsync() 取得標籤內的內容。 • 產生輸出的 HTML 內容。 <tagMaker>Data Content</tagMaker> <div attrMaker=“data”>Data Content</div>
  • 29. Hosting 的改變 • ASP.NET 5 除非使用 IIS Platform Handler,否則預設使用 Kestrel Server 作為 Hosting 的基底。 • Kestrel Server (Microsoft.AspNet.Server.Kestrel) 支援跨平台的 Hosting。 • Kestrel Server 直接支援 IIS-based hosting 以及 Self-hosting 兩 種方式。
  • 30. IIS Platform Handler IIS Platform HandlerHTTP.SYS Web AppWeb App aspnet_wp aspnet_wp Web App Kestrel Server Web App Kestrel Server IIS Hosting Mode (ASP.NET 4-) IIS Platform Handler (ASP.NET 5)
  • 31. 結語 • ASP.NET 5 是 Microsoft 第一個真正的 Web 應用開發的平台。 • 豐富的套件支援 (前端+後端),Visual Studio 便利的專案管理方 式,使生產力大增。 • ASP.NET 5 跨平台的願望正式實現。 • 不過…要先習慣沒有 Web.config 的世界 
  • 32. References • ASP.NET Official: http://asp.net/vnext • Documentation: http://docs.asp.net • Web Team Blog: http://blogs.msdn.com/webdev • ASP.NET GitHub: http://github.com/aspnet