9. ASP.NET 5 與 .NET Core 簡介
ASP.NET 5 and .NET Core Introduction
10. ASP 開發技術的歷史
• 1996 – Active Server Pages (ASP)
• 2002 – ASP.NET
• 2008 – ASP.NET MVC
• 2010 – ASP.NET Web Pages
• 2012 – ASP.NET Web API, SignalR
• 2014 – ASP.NET 5
11. ASP.NET 5 是甚麼?
• 一個重新設計的 ASP.NET 框架
( 目前 ASP.NET 5 還處於預覽階段 )
• 一個精鍊的、可重組的框架,
用來建構網站與雲端應用程式。
• ASP.NET 5 完全開放原始碼,
並且發布於 GitHub 平台。
12. ASP.NET 5 的特性 ( 1 / 3 )
• ASP.NET 5 有真正「跨平台」的執行環境
– Full .NET CLR (Common Language Runtime)
• 完整的 .NET 執行環境 ( 即 .NET 4.5 / 4.6 )
– Core CLR (針對雲端執行環境最佳化過的執行環境)
• 將部分 Full CLR 拆解成各自獨立的 NuGet 套件
• 個別的套件可以個別更新,更新速度更快
• 所有的套件都將隨著專案部署 (伺服器不用預裝)
– Cross-Platform CLR
• 微軟將會官方支援 Linux 與 Mac OS X 執行環境
• 短期內可透過 Mono 執行 ASP.NET 5
• ASP.NET 5 有個完全模組化的 HTTP 要求管線
– 很多事情都跟你想像的不一樣了!
13
13. ASP.NET 5 的特性 ( 2 / 3 )
• ASP.NET 5 有個全新的設定檔管理機制
– 開發環境設定 config.json
– 正式環境設定 global.json、環境變數、自動覆寫 config.json
– 專案設定 project.json
• ASP.NET 5 有個全新的 Session State 管理機制
– 會依據執行環境自動判斷 Session State 該寫到哪裡去 ( Cloud First )
– 所有寫進 Session 的物件都將需要「強制」序列化 ( Cloud First )
• ASP.NET 5 有個全新的 Cache 管理機制
– 全自動管理,無須再額外設定 ( Cloud First )
• ASP.NET 5 有個全新的追蹤機制
– 支援一個共用的追蹤堆疊 (Tracing Stack)
– 從最底層一直追蹤到 ASP.NET Web Form, ASP.NET MVC,
ASP.NET Web API, ... 通通都可以用。
14. ASP.NET 5 的特性 ( 3 / 3 )
• ASP.NET 5 提供統一 ASP.NET 框架的開發模型
– MVC、Web API 與 Web Pages 都將採用相同的開發流程、介面、類別
– 開發模型 (programming model) != 應用程式介面 (API)
• ASP.NET 5 開發過程完全不需要手動執行建置動作
– 採用全新 Rosyln 編譯器平台,所有編譯動作在背景完成
– Rosyln = 編譯即服務 ( Compile-as-a-Service )
• ASP.NET 5 與 .NET Framework 的連結是綁在一起的
– ASP.NET 5 可以用 .NET 4.5.x、.NET 4.6 甚至是 .NET Core 都可自由選
擇
– 未來不用再等 Microsoft 每個數月才做一次大更新,也降低了套件相依性
• ASP.NET 5 可以更加彈性的執行在任意 Host 環境
– 依然可以跑在 IIS 上
– 也可以跑在自訂的 Console 應用程式或 Windows 服務裡 (self-host)
• ASP.NET 5 在 GitHub 上開放原始碼!
15. ASP.NET 5 與舊版的相容性
• ASP.NET 4.5 (ASP.NET MVC 5) 以前的網
站
– 可以不用重寫!
– 依然可以跑在 .NET Framework 4.6 上!
– 請記得:
• ASP.NET 5 是一種開發模型的轉變!
• 如果想用到 ASP.NET 5 的新功能特性
– 必須微調部分程式碼與專案架構才能用!
16. 什麼是 "k"?
• 一套用來管理 ASP.NET 5 執行環境的工具
– KVM = K Version Manager
• 用來管理 KRE 的工具
• kvm list
• kvm use default
– KRE = K Runtime Environment
• 一個 .NET 版本就是一個 KRE
• klr 執行 KRE 的主要程式
• k 方便執行 klr 的批次檔
• kpm KRE 的套件管理員
19. ASP.NET 5 專案範本類型
• ASP.NET Web Application
– 建立 ASP.NET 5 網站應用程式
• ASP.NET 5 Class Library
– 建立與 ASP.NET 5 相容的類別庫
• ASP.NET 5 Console Application
– 建立可被 "k" 呼叫的主控台應用程式
20. ASP.NET 5 專案範本
• ASP.NET Web Application 的專案範本
– 上一版有的範本現在還是都有
• Empty, Web Forms, MVC, Web API, Single Page
Application, Azure Mobile Service
– 新版多了兩個 ASP.NET 5 範本 ( 不能勾選核心參考 )
• ASP.NET 5 Empty
• ASP.NET 5 Starter Web
33. ASP.NET Web API 哪裡不一樣了?
• MVC + Web API + Web Pages
= ASP.NET MVC 6!
• Web API 的 API 被犧牲了!
– 預設採用跟 ASP.NET MVC 一樣的 Routing,
Filters, Model Binding, … etc.
– 類別不需要再繼承 ApiController
直接繼承 Controller 即可
不繼承 Controller 一樣可用 (透過 DI/IoC 機制)
34. ASP.NET 5 從核心方面的改變
• 什麼!Global.asax 沒了?
• 什麼!Web.config 沒了?
– ASP.NET 5 採用全新設計的 HTTP 要求管線
• 只剩 Startup.cs 來定義應用程式特性
– Startup()
• 用來設定參數來源
– ConfigureServices()
• 使用 ASP.NET 5 內建的 DI 機制進行服務註冊
– Configure()
• 當 ConfigureServices() 執行完後會執行這個方法
46. • ASP.NET 5 這次真的打掉重練
– ASP.NET 5.0 事實上跑在 .NET 4.5 CLR 上面
– ASP.NET 5.0 自己是一個 Process Container
– ASP.NET 5.0 是個開發模型(Programming Model)
– ASP.NET 5.0 與 ASP.NET Core 5.0 開發模型相
同
– ASP.NET 5.0 須跑在一個支援 KRuntime 的環境
– ASP.NET 5.0 改用全新的專案架構 (*.kproj)
• ASP.NET MVC 6
– 核心觀念與架構都沒變,僅新增幾個小功能
• 建議多學點前端工程的技能 (大勢所趨)
47. 聯絡資訊
• The Will Will Web
記載著 Will 在網路世界的學習心得與技術分享
– http://blog.miniasp.com/
• Will 保哥的技術交流中心 (臉書粉絲專頁)
– http://www.facebook.com/will.fans
• Will 保哥的噗浪
– http://www.plurk.com/willh/invite