SlideShare a Scribd company logo
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
部落格:http://blog.miniasp.com/
Introducing ASP.NET 5
介紹 ASP.NET 5
• 跨平台
• 使用 .NET 技術
• 開放原始碼 (GitHub)
• 可建構雲端應用程式
• 可部署到雲端或本地環境
• 使用模組化的 CoreFX 框架
• 一套全新且重新打造的 ASP.NET 框架
什麼是 ASP.NET 5
• 歷史包袱
• ASP.NET 1.0 是 15 年前打造的框架
• ASP.NET 5 不再使用 System.Web.dll 組件
• 整合 MVC, Web API 與 WebForms 框架,去蕪存菁
• 雲端狂潮
• 最佳化模組載入與使用,並以最小資源執行 Web 應用程式
• ASP.NET 5 實現輕量且模組化的 HTTP 要求管線
• ASP.NET 5 使用 NuGet 載入必要的 CoreFX
• ASP.NET 5 可執行在任意 self-host 環境 (IIS, Kestrel, …)
• 現有 Web 開發主流
• 開放原始碼與跨平台
• 明顯區分前端開發與後端開發
• 使用相依性注入 (Dependency injection)
為什麼要建構 ASP.NET 5
Installing ASP.NET 5 Beta 7
安裝 ASP.NET 5 Beta 7
• ASP.NET and Web Tools 2015 (Beta7)
• 安裝 beta7 版本 (14.0.60831.0)
http://go.microsoft.com/fwlink/?LinkId=623894
• 下載並安裝 .NET Version Manager (DNVM)
DotNetVersionManager-x64.msi
• 若為 Visual Studio 2015 (Community, Professional, Enterprise)
• 下載並安裝 WebToolsExtensionsVS14.msi
• 下載並安裝 WebToolsExtensionsVSLP14_cht.msi
• 若為 Visual Studio 2015 Express for Web
• 下載並安裝 WebToolsExtensionsVWD14.msi
• 下載並安裝 WebToolsExtensionsVWDLP14_cht.msi
安裝必要工具 ( Windows )
• Installing ASP.NET 5 On Mac OS X
• 安裝 1.0.0-beta7 版本
http://docs.asp.net/en/1.0.0-beta7/getting-
started/installing-on-mac.html
• 下載並安裝 .NET Version Manager (DNVM)
curl -sSL
https://raw.githubusercontent.com/aspnet/Home/dev/dnvmin
stall.sh | DNX_BRANCH=dev sh && source
~/.dnx/dnvm/dnvm.sh
• 下載並安裝 .NET Execution Environment (DNX) (無須 Mono 相依)
• DNX for .NET Core
dnvm upgrade -r coreclr
• 增加 NuGet 套件來源
~/.config/NuGet/NuGet.Config
安裝必要工具 ( Mac OS X )
• DNX for Mono
dnvm upgrade -r mono
• Installing ASP.NET 5 On Linux
• 安裝 1.0.0-beta7 版本
http://docs.asp.net/en/1.0.0-beta7/getting-
started/installing-on-linux.html
• 下載並安裝 .NET Version Manager (DNVM) (與 Mac 相同指令)
• 下載並安裝以下套件
• libunwind8, gettext, libssl-dev, libcurl3-dev, zlib1g
• libuv ( 因為 Kestrel 會用到 )
• 下載並安裝 .NET Execution Environment (DNX) (無須 Mono 相依)
• DNX for .NET Core
dnvm upgrade -r coreclr
• 增加 NuGet 套件來源
~/.config/NuGet/NuGet.Config
安裝必要工具 ( Linux )
• DNX for Mono
dnvm upgrade -r mono
• 重要觀念
• ASP.NET 5 基於 .NET Execution Environment (DNX) 打造
• DNX 是一個微軟官方支援的跨平台支援 .NET 執行環境 (Win, Mac, Linux)
• 可選版本
• .NET Framework (CLR)
• 擁有完整的元件與大量的 API 與較慢的發行週期
• .NET 4.6 可在線上瀏覽完整原始碼
• 只能跑在 Windows 作業系統
• .NET Core (CoreCLR)
• 為 .NET 4.6 的子集合,擁有較少的 API 支援,但支援跨平台執行,也可執行在資
源受限的執行環境中 ( 例如 Windows Server Nano )
• .NET Core 包含一組函式庫稱為 "CoreFX",並統一由 NuGet 發佈
• 目前 Windows 平台已有完整功能實作,而 Linux, OS X 還在持續開發中
• 現有的 .NET 專案若要跑在 CoreCLR 上,必須重新編譯
• Mono
• 支援跨平台的完整 .NET Framework 實作,開源原始碼,但微軟官方不支援
選擇正確的 .NET 版本
• 從這版開始不再「主動」新增功能
• 專注於讓 ASP.NET 5 進入穩定狀態、工具支援
• 除非有人提出重要的建議:
https://github.com/aspnet/Home/issues
• ASP.NET 5 Beta 8 預計在 2015/10/05 釋出!
• 開發伺服器
• 會移除 Helios 專案
• Microsoft.AspNet.Server.IIS (Windows)
• 會專注在以下兩項專案
• Microsoft.AspNet.Server.WebListener (Windows)
• Microsoft.AspNet.Server.Kestrel (跨平台)
關於 ASP.NET 5 Beta 8
Creating your first ASP.NET 5 project
建立 ASP.NET 5 專案
• 安裝 Node.js
• npm install -g yo
• npm install -g generator-aspnet
• yo aspnet
• cd WebApplication
• dnu restore
• dnu build (非必要步驟)
• dnx web
建立專案 ( 使用 yo 工具 )
建立專案 ( 使用 VS2015 工具 )
• 修改任何檔案,不再需要事先建置
• 優點:更流暢的開發體驗
• 缺點:會有不知道何時編譯完成的不確定感
• 前端與後端的分工與整合
• ASP.NET 5 從純後端技術,轉向整合更多前端工程
• ASP.NET 5 整合許多常見的前端技術與前端工具
• 技術:Less, Sass, Font Awesome, TypeScript, RWD, …
• 框架:Bootstrap, Knockout.js, AngularJS, ReactJS, …
• 工具:Gulp, Grunt, npm, Bower, Yeoman, …
全新的 .NET 執行環境與開發環境
• HomeController.About()
• ViewBag.EnvName = Environment.MachineName;
• ViewBag.Software = Environment.OSVersion.ToString();
• 編譯專案 ( F6 )
• 修正錯誤
• 移除 project.json 裡面的 frameworks 裡面的 dnxcore50
修改 Controller 與編譯專案
The ASP.NET 5 project template
專案內容介紹
• 一樣有 *.sln 方案檔
• WebApplication1.sln
• 專案的 NuGet 定義檔
• NuGet.Config
• 方案定義
• global.json
• 定義專案目錄
• 會自動匯入 *.sln 方案檔
• 定義 SDK 版本
ASP.NET 5 方案設定
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-beta7"
}
}
• 改用 *.xproj 專案檔
• ASP.NET 5 取消 *.csproj 定義專案 (使用正向表列檔案)
• ASP.NET 5 改用 *.xproj 定義專案 (改用負向表列檔案)
• 所有專案項目都改採「自動掃描」的方式匯入專案
• 優點:不再需要手動加入專案,減少檔案忘記加入版控的問題
• 缺點:需要不斷掃描是否有新檔案加入專案
• 許多專案設定都移到 project.json 設定檔
• https://github.com/aspnet/Home/wiki/Project.json-file
ASP.NET 5 專案設定
• ASP.NET 5 專案設定檔
• 摘要說明
• ASP.NET 5 已改用 project.json 定義專案 (現在改用負向表列專案檔案)
• 此檔案是 JSON 格式,其內容會與 Gulp 共用 (透過 Node.js 載入)
• 重要屬性
• webroot
• 定義網站根目錄位置 (所有靜態檔案)
• userSecretsId
• 定義網站的 "使用者秘密ID"
• 同主機每個網站應用程式都不能重複
• version
• 定義目前 ASP.NET 5 應用程式版本
• commands
• 設定 dnx 的自訂命令
project.json
• dependencies
• 設定專案要載入哪些套件
• frameworks
• 設定特定執行框架下 (Runtime
Framework) 要載入哪些套件
• exclude
• 哪些資料夾或檔案要排除編譯範圍
• publishExclude
• 哪些資料夾在發布時要排除在外
• scripts
• 設定 dnu 的事件動作
• ASP.NET 5 參數設定檔
• 摘要說明
• 類似之前 web.config 中的 appSettings 設定
• 這裡定義著應用程式執行過程所需的參數,例如連接字串
• 由於檔案是 JSON 格式,因此可以自由添加任何所需參數
• 這裡的 JSON 參數設定完全沒有限制,不一定要按照預設的下去設定
config.json
• ASP.NET 5 開發伺服器設定檔
• 摘要說明
• 這裡定義 ASP.NET 5 開發伺服器所需的參數定義
• 設定說明
• server=Microsoft.AspNet.Server.WebListener
• 定義伺服器種類
• 可能的選項有:
• Microsoft.AspNet.Server.Kestrel
• "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta7"
• Microsoft.AspNet.Server.WebListener
• "Microsoft.AspNet.Server.WebListener": "1.0.0-beta7",
• server.urls=http://localhost:5000
• 定義伺服器的啟動 URL 與 Port
hosting.ini
• ASP.NET 5 專案的進入點
• Startup() 建構式
• 注入物件
• IHostingEnvironment env
• 宿主環境變數
• 提供環境名稱(EnvironmentName)、
網站根目錄位置(WebRootPath)等資訊
• IApplicationEnvironment appEnv
• 應用程式環境變數
• 提供應用程式名稱、路徑、版本、執行框架等資訊
• 定義設定檔來源
• AddJsonFile("config.json")
• AddCommandLine(args)
• AddEnvironmentVariables()
• AddIniFile("config.ini")
• AddInMemoryCollection()
• AddUserSecrets()
Startup.cs 1/3
• 公開屬性:Configuration
• 用於共享設定資訊於類別之中
• ASP.NET 5 專案的進入點
• ConfigureServices() 方法
• 注入物件
• IServiceCollection services
• 用來記錄那些服務要被加入到 ASP.NET 5 容器內的重要物件
• 因為一個 ASP.NET 5 應用程式會包含多個「服務」並在此被註冊進去
• 註冊服務
• Add*() 增加服務到集合裡
• Configure<T>() 設定特定服務選項
• AddTransient<T1, T2>() 註冊自訂的應用程式服務物件
• 重要觀念
• 「服務」是 ASP.NET 5 的模組化元件
Startup.cs 2/3
• ASP.NET 5 專案的進入點
• Configure() 方法
• 注入物件
• IApplicationBuilder app
• 用來建立應用程式 執行管線 (Execution Pipeline) 的重要物件
• IHostingEnvironment env
• 宿主環境變數
• 提供環境名稱(EnvironmentName)、網站根目錄位置(WebRootPath)等資訊
• ILoggerFactory loggerFactory
• ASP.NET 5 內建的 Logger 物件,用來設定 Logger 的紀錄方式
• 使用服務
• Use*() 使用服務
• UseMvc() 使用 ASP.NET MVC 6 服務,路由 (Routing) 也改從這裡宣告
• 注意事項
• 這個方法會決定 ASP.NET 5 執行時期的 執行管線 (Execution Pipeline) 的順序
• 這裡執行順序很重要,必須想清楚你要如何處理每一個 HTTP 要求
Startup.cs 3/3
• package.json
• npm 設定檔
• bower.json
• Bower 設定檔
• gulpfile.js
• Gulp 工作定義檔
前端工程相關檔案
The Main Concepts about ASP.NET 5
重要觀念解析
• ASP.NET 5 的模組化以「服務」為中心
• 要在 ASP.NET 5 中使用這些元件,必須靠 DI (相依性注入)
• ASP.NET 5 內建 IoC (控制反轉) 容器,也可抽換成其他的 IoC
• ASP.NET 5 預設可讓類別建構式注入服務元件
• 服務區分三種類型
• Singleton 每次 Web 應用程式啟動會只會建立一個實體
• services.AddSingleton<IMyApp, MyApp>();
• Scoped 每次 HTTP 要求都會建立一次實體
• services.AddScoped<IMember, Member>();
• Transient 每次執行注入都會建立全新實體
• services.AddTransient<IEmailSender, AuthMessageSender>();
服務元件 ( service components )
• ASP.NET 5 支援 Middleware 架構
• 可將元件依序套用到 HTTP 要求管線 (順序很重要)
• 預設定義在 Startup 類別中的 Configure() 方法
中介元件 ( Middleware )
• 看一下 Startup.cs 的 Configure() 方法
• 為何 loggerFactory.AddConsole(); 要擺在第一順位?
• 為何 app.UseStaticFiles(); 要設定在app.UseIdentity(); 之前?
• 如果順序調換會怎樣?
• 如果加入 app.UseDirectoryBrowser(); 應該擺在哪裡?
• 每個 Middleware 到底在做甚麼?做了什麼事?有沒有文件?
思考題:套用 Middleware 順序
• Authentication
• 提供身分驗證支援
• CORS
• 設定 Cross-Origin Resource Sharing (CORS)
• Diagnostics
• 支援錯誤頁面顯示與執行時期資訊
• Routing
• 定義路由與限制
• Session
• 提供 Session 支援
• Static Files
• 提供 wwwroot (網站根目錄) 下的靜態檔案
ASP.NET 5 內建的 Middleware
• ASP.NET 5 可依據不同環境套用不同設定
• 指定 ASPNET_ENV 環境變數
• Development
• Staging
• Production
• 專案設定
• launchSettings.json
多重執行環境
• SET ASPNET_ENV=LogInline
• dnx web http://localhost:5000
自訂環境與 Middleware 範例
Learning Resources for ASP.NET 5
ASP.NET 5 學習資源
• ASP.NET 5 Documentation
• http://docs.asp.net/en/1.0.0-beta7/ (1.0.0-beta7)
• http://docs.asp.net/en/latest/ (最新版)
• JabbR – AspNetvNext
• https://jabbr.net/#/rooms/AspNetvNext (線上聊天室)
• ASP.NET 5 專案 (GitHub)
• https://github.com/aspnet/Home/issues (討論議題)
• https://github.com/aspnet/Home/wiki (Wiki文件)
• https://github.com/aspnet/Home/releases (版本資訊)
• https://github.com/aspnet/Home/wiki/Roadmap(開發時程)
• https://github.com/aspnet/Announcements/issues (公佈欄)
相關學習資源
• The Will Will Web
記載著 Will 在網路世界的學習心得與技術分享
• http://blog.miniasp.com/
• Will 保哥的技術交流中心 (臉書粉絲專頁)
• http://www.facebook.com/will.fans
• Will 保哥的噗浪
• http://www.plurk.com/willh/invite
• Will 保哥的推特
• https://twitter.com/Will_Huang
聯絡資訊
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to
changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the
date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
只要完成「大會線上問卷」,可於活動期間於大會服務台兌換問卷禮哦!
請協助完成「本課程線上問卷」,我們重視您的寶貴意見
本課程影音及簡報檔未來將公布於 http://aka.ms/td2015
問卷網址 http://aka.ms/td2015-survey
DEV305 - ASP.NET 5 開發攻略
TechDays 2015 課程影片及簡報檔載點
( 將於九月底陸續釋出 )
aka.ms/td2015
免費線上課程及簡報檔下載
Channel 9
aka.ms/c9-learning
MSDN 台灣
aka.ms/msdntw-fb
TechNet 台灣
aka.ms/tntw-fb
MVA
mva.ms
開發人員社群 IT 專業人員社群
- 您不可不知的微軟四大核心學習資源 -
© 2014 Microsoft Corporation. All rights reserved

More Related Content

What's hot (20)

PPTX
Frontend Devops at Cloudinsight
Yan Wang
 
PPTX
宅學習 Firebase
Wei chung chai
 
PPTX
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Will Huang
 
PPTX
SQL Server 資料庫版本控管
Will Huang
 
PPTX
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Will Huang
 
PPTX
Angular 4 網站開發最佳實務 (Modern Web 2017)
Will Huang
 
PPTX
快快樂樂學 Angular 2 開發框架
Will Huang
 
PPTX
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Will Huang
 
PPTX
開發人員不可不知的 Windows Container 容器技術預覽
Will Huang
 
PPTX
快速上手 Windows Containers 容器技術 (Docker Taipei)
Will Huang
 
PPTX
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
 
PPTX
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
Will Huang
 
PPTX
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
Jeff Chu
 
PPTX
Micro-frontends with Angular 10 (Modern Web 2020)
Will Huang
 
PPTX
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Will Huang
 
PPTX
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
Jeff Chu
 
PPTX
Angular 4 新手入門攻略完全制霸
Will Huang
 
PPTX
Angular 7 全新功能探索 (Angular Taiwan 2018)
Will Huang
 
PPTX
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Jeff Chu
 
PPTX
Entity framework + Linq 介紹
Alan Tsai
 
Frontend Devops at Cloudinsight
Yan Wang
 
宅學習 Firebase
Wei chung chai
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Will Huang
 
SQL Server 資料庫版本控管
Will Huang
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Will Huang
 
Angular 4 網站開發最佳實務 (Modern Web 2017)
Will Huang
 
快快樂樂學 Angular 2 開發框架
Will Huang
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Will Huang
 
開發人員不可不知的 Windows Container 容器技術預覽
Will Huang
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
Will Huang
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
 
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
Will Huang
 
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
Jeff Chu
 
Micro-frontends with Angular 10 (Modern Web 2020)
Will Huang
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Will Huang
 
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
Jeff Chu
 
Angular 4 新手入門攻略完全制霸
Will Huang
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Will Huang
 
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Jeff Chu
 
Entity framework + Linq 介紹
Alan Tsai
 

Viewers also liked (14)

PPTX
簡介 GitHub 平台
Will Huang
 
PPTX
Growth Mindset 經驗分享
Will Huang
 
PPTX
git merge 與 rebase 的觀念與實務應用
Will Huang
 
PPTX
簡介 Git hub 平台 ( 1.5 hrs )
Will Huang
 
PPTX
中小企業選擇雲端服務的實戰密技
Will Huang
 
PPTX
初學者都該了解的 HTTP 通訊協定基礎
Will Huang
 
PPTX
Visual Studio 2017 新功能探索 (Study4.TW)
Will Huang
 
PPTX
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
Will Huang
 
PPTX
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
Will Huang
 
PPTX
Visual Studio 2015 與 Git 開發實戰
Will Huang
 
PPTX
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
 
PPTX
Windows Container 101: dotNET, Container, Kubernetes
Will Huang
 
PPTX
TypeScript 綜合格鬥技
Will Huang
 
PPTX
從開發人員角度十分鐘理解區塊鏈技術
Will Huang
 
簡介 GitHub 平台
Will Huang
 
Growth Mindset 經驗分享
Will Huang
 
git merge 與 rebase 的觀念與實務應用
Will Huang
 
簡介 Git hub 平台 ( 1.5 hrs )
Will Huang
 
中小企業選擇雲端服務的實戰密技
Will Huang
 
初學者都該了解的 HTTP 通訊協定基礎
Will Huang
 
Visual Studio 2017 新功能探索 (Study4.TW)
Will Huang
 
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
Will Huang
 
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
Will Huang
 
Visual Studio 2015 與 Git 開發實戰
Will Huang
 
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
 
Windows Container 101: dotNET, Container, Kubernetes
Will Huang
 
TypeScript 綜合格鬥技
Will Huang
 
從開發人員角度十分鐘理解區塊鏈技術
Will Huang
 
Ad

Similar to DEV305 - ASP.NET 5 開發攻略 (20)

PPTX
Asp.net core v1.0
國昭 張
 
PPTX
Asp.net core v1.0
chang kuo-chao
 
PDF
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
PPTX
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
 
PDF
Nodejs & NAE
q3boy
 
PPTX
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
 
PPT
Node分享 展烨
tb-vertical-guide
 
PDF
DAE 新变化介绍
Tianwei Liu
 
PDF
合久必分,分久必合
Qiangning Hong
 
PDF
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式
升煌 黃
 
PPTX
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
 
PPTX
How to choose web framework
Bo-Yi Wu
 
PDF
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
 
PPTX
Artifacts management with CI and CD
Chen-Tien Tsai
 
PDF
從軟體開發角度
談 Docker 的應用
謝 宗穎
 
PPTX
使用 .NET Standard 開發跨平台應用程式
Gelis Wu
 
PPTX
Elastic stack day-1
YI-CHING WU
 
PDF
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
 
PDF
Kubernetes project update and how to contribute
inwin stack
 
PPTX
用 Docker 改善團隊合作模式
Bo-Yi Wu
 
Asp.net core v1.0
國昭 張
 
Asp.net core v1.0
chang kuo-chao
 
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
 
Nodejs & NAE
q3boy
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
 
Node分享 展烨
tb-vertical-guide
 
DAE 新变化介绍
Tianwei Liu
 
合久必分,分久必合
Qiangning Hong
 
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式
升煌 黃
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
 
How to choose web framework
Bo-Yi Wu
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
 
Artifacts management with CI and CD
Chen-Tien Tsai
 
從軟體開發角度
談 Docker 的應用
謝 宗穎
 
使用 .NET Standard 開發跨平台應用程式
Gelis Wu
 
Elastic stack day-1
YI-CHING WU
 
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
 
Kubernetes project update and how to contribute
inwin stack
 
用 Docker 改善團隊合作模式
Bo-Yi Wu
 
Ad

More from Will Huang (20)

PPTX
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
Will Huang
 
PPTX
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
Will Huang
 
PPTX
你一定不能不知道的 Markdown 寫作技巧
Will Huang
 
PPTX
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
Will Huang
 
PPTX
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
Will Huang
 
PPTX
從實戰經驗看到的 K8S 導入痛點
Will Huang
 
PPTX
RxJS 6 新手入門
Will Huang
 
PPTX
极速 Angular 开发:效能调校技巧 (ngChina 2019)
Will Huang
 
PPTX
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
Will Huang
 
PPTX
Protractor: The Hacker way (NG-MY 2019)
Will Huang
 
PPTX
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
Will Huang
 
PPTX
Angular 开发技巧 (2018 ngChina 开发者大会)
Will Huang
 
PPTX
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
Will Huang
 
PPTX
AKS 與開發人員體驗 (Kubernetes 大講堂)
Will Huang
 
PPTX
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
Will Huang
 
PPTX
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
Will Huang
 
PPTX
以敏捷架構打造美國軟體外包專案的經驗談
Will Huang
 
PPTX
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
Will Huang
 
PPTX
迎接嶄新的Windows容器叢集架構:Kubernetes
Will Huang
 
PPTX
Angular 5 全新功能探索 @ JSDC2017
Will Huang
 
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
Will Huang
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
Will Huang
 
你一定不能不知道的 Markdown 寫作技巧
Will Huang
 
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
Will Huang
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
Will Huang
 
從實戰經驗看到的 K8S 導入痛點
Will Huang
 
RxJS 6 新手入門
Will Huang
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
Will Huang
 
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
Will Huang
 
Protractor: The Hacker way (NG-MY 2019)
Will Huang
 
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
Will Huang
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Will Huang
 
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
Will Huang
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
Will Huang
 
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
Will Huang
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
Will Huang
 
以敏捷架構打造美國軟體外包專案的經驗談
Will Huang
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
Will Huang
 
迎接嶄新的Windows容器叢集架構:Kubernetes
Will Huang
 
Angular 5 全新功能探索 @ JSDC2017
Will Huang
 

DEV305 - ASP.NET 5 開發攻略

  • 1. 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/
  • 3. • 跨平台 • 使用 .NET 技術 • 開放原始碼 (GitHub) • 可建構雲端應用程式 • 可部署到雲端或本地環境 • 使用模組化的 CoreFX 框架 • 一套全新且重新打造的 ASP.NET 框架 什麼是 ASP.NET 5
  • 4. • 歷史包袱 • ASP.NET 1.0 是 15 年前打造的框架 • ASP.NET 5 不再使用 System.Web.dll 組件 • 整合 MVC, Web API 與 WebForms 框架,去蕪存菁 • 雲端狂潮 • 最佳化模組載入與使用,並以最小資源執行 Web 應用程式 • ASP.NET 5 實現輕量且模組化的 HTTP 要求管線 • ASP.NET 5 使用 NuGet 載入必要的 CoreFX • ASP.NET 5 可執行在任意 self-host 環境 (IIS, Kestrel, …) • 現有 Web 開發主流 • 開放原始碼與跨平台 • 明顯區分前端開發與後端開發 • 使用相依性注入 (Dependency injection) 為什麼要建構 ASP.NET 5
  • 5. Installing ASP.NET 5 Beta 7 安裝 ASP.NET 5 Beta 7
  • 6. • ASP.NET and Web Tools 2015 (Beta7) • 安裝 beta7 版本 (14.0.60831.0) http://go.microsoft.com/fwlink/?LinkId=623894 • 下載並安裝 .NET Version Manager (DNVM) DotNetVersionManager-x64.msi • 若為 Visual Studio 2015 (Community, Professional, Enterprise) • 下載並安裝 WebToolsExtensionsVS14.msi • 下載並安裝 WebToolsExtensionsVSLP14_cht.msi • 若為 Visual Studio 2015 Express for Web • 下載並安裝 WebToolsExtensionsVWD14.msi • 下載並安裝 WebToolsExtensionsVWDLP14_cht.msi 安裝必要工具 ( Windows )
  • 7. • Installing ASP.NET 5 On Mac OS X • 安裝 1.0.0-beta7 版本 http://docs.asp.net/en/1.0.0-beta7/getting- started/installing-on-mac.html • 下載並安裝 .NET Version Manager (DNVM) curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvmin stall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh • 下載並安裝 .NET Execution Environment (DNX) (無須 Mono 相依) • DNX for .NET Core dnvm upgrade -r coreclr • 增加 NuGet 套件來源 ~/.config/NuGet/NuGet.Config 安裝必要工具 ( Mac OS X ) • DNX for Mono dnvm upgrade -r mono
  • 8. • Installing ASP.NET 5 On Linux • 安裝 1.0.0-beta7 版本 http://docs.asp.net/en/1.0.0-beta7/getting- started/installing-on-linux.html • 下載並安裝 .NET Version Manager (DNVM) (與 Mac 相同指令) • 下載並安裝以下套件 • libunwind8, gettext, libssl-dev, libcurl3-dev, zlib1g • libuv ( 因為 Kestrel 會用到 ) • 下載並安裝 .NET Execution Environment (DNX) (無須 Mono 相依) • DNX for .NET Core dnvm upgrade -r coreclr • 增加 NuGet 套件來源 ~/.config/NuGet/NuGet.Config 安裝必要工具 ( Linux ) • DNX for Mono dnvm upgrade -r mono
  • 9. • 重要觀念 • ASP.NET 5 基於 .NET Execution Environment (DNX) 打造 • DNX 是一個微軟官方支援的跨平台支援 .NET 執行環境 (Win, Mac, Linux) • 可選版本 • .NET Framework (CLR) • 擁有完整的元件與大量的 API 與較慢的發行週期 • .NET 4.6 可在線上瀏覽完整原始碼 • 只能跑在 Windows 作業系統 • .NET Core (CoreCLR) • 為 .NET 4.6 的子集合,擁有較少的 API 支援,但支援跨平台執行,也可執行在資 源受限的執行環境中 ( 例如 Windows Server Nano ) • .NET Core 包含一組函式庫稱為 "CoreFX",並統一由 NuGet 發佈 • 目前 Windows 平台已有完整功能實作,而 Linux, OS X 還在持續開發中 • 現有的 .NET 專案若要跑在 CoreCLR 上,必須重新編譯 • Mono • 支援跨平台的完整 .NET Framework 實作,開源原始碼,但微軟官方不支援 選擇正確的 .NET 版本
  • 10. • 從這版開始不再「主動」新增功能 • 專注於讓 ASP.NET 5 進入穩定狀態、工具支援 • 除非有人提出重要的建議: https://github.com/aspnet/Home/issues • ASP.NET 5 Beta 8 預計在 2015/10/05 釋出! • 開發伺服器 • 會移除 Helios 專案 • Microsoft.AspNet.Server.IIS (Windows) • 會專注在以下兩項專案 • Microsoft.AspNet.Server.WebListener (Windows) • Microsoft.AspNet.Server.Kestrel (跨平台) 關於 ASP.NET 5 Beta 8
  • 11. Creating your first ASP.NET 5 project 建立 ASP.NET 5 專案
  • 12. • 安裝 Node.js • npm install -g yo • npm install -g generator-aspnet • yo aspnet • cd WebApplication • dnu restore • dnu build (非必要步驟) • dnx web 建立專案 ( 使用 yo 工具 )
  • 13. 建立專案 ( 使用 VS2015 工具 )
  • 14. • 修改任何檔案,不再需要事先建置 • 優點:更流暢的開發體驗 • 缺點:會有不知道何時編譯完成的不確定感 • 前端與後端的分工與整合 • ASP.NET 5 從純後端技術,轉向整合更多前端工程 • ASP.NET 5 整合許多常見的前端技術與前端工具 • 技術:Less, Sass, Font Awesome, TypeScript, RWD, … • 框架:Bootstrap, Knockout.js, AngularJS, ReactJS, … • 工具:Gulp, Grunt, npm, Bower, Yeoman, … 全新的 .NET 執行環境與開發環境
  • 15. • HomeController.About() • ViewBag.EnvName = Environment.MachineName; • ViewBag.Software = Environment.OSVersion.ToString(); • 編譯專案 ( F6 ) • 修正錯誤 • 移除 project.json 裡面的 frameworks 裡面的 dnxcore50 修改 Controller 與編譯專案
  • 16. The ASP.NET 5 project template 專案內容介紹
  • 17. • 一樣有 *.sln 方案檔 • WebApplication1.sln • 專案的 NuGet 定義檔 • NuGet.Config • 方案定義 • global.json • 定義專案目錄 • 會自動匯入 *.sln 方案檔 • 定義 SDK 版本 ASP.NET 5 方案設定 { "projects": [ "src", "test" ], "sdk": { "version": "1.0.0-beta7" } }
  • 18. • 改用 *.xproj 專案檔 • ASP.NET 5 取消 *.csproj 定義專案 (使用正向表列檔案) • ASP.NET 5 改用 *.xproj 定義專案 (改用負向表列檔案) • 所有專案項目都改採「自動掃描」的方式匯入專案 • 優點:不再需要手動加入專案,減少檔案忘記加入版控的問題 • 缺點:需要不斷掃描是否有新檔案加入專案 • 許多專案設定都移到 project.json 設定檔 • https://github.com/aspnet/Home/wiki/Project.json-file ASP.NET 5 專案設定
  • 19. • ASP.NET 5 專案設定檔 • 摘要說明 • ASP.NET 5 已改用 project.json 定義專案 (現在改用負向表列專案檔案) • 此檔案是 JSON 格式,其內容會與 Gulp 共用 (透過 Node.js 載入) • 重要屬性 • webroot • 定義網站根目錄位置 (所有靜態檔案) • userSecretsId • 定義網站的 "使用者秘密ID" • 同主機每個網站應用程式都不能重複 • version • 定義目前 ASP.NET 5 應用程式版本 • commands • 設定 dnx 的自訂命令 project.json • dependencies • 設定專案要載入哪些套件 • frameworks • 設定特定執行框架下 (Runtime Framework) 要載入哪些套件 • exclude • 哪些資料夾或檔案要排除編譯範圍 • publishExclude • 哪些資料夾在發布時要排除在外 • scripts • 設定 dnu 的事件動作
  • 20. • ASP.NET 5 參數設定檔 • 摘要說明 • 類似之前 web.config 中的 appSettings 設定 • 這裡定義著應用程式執行過程所需的參數,例如連接字串 • 由於檔案是 JSON 格式,因此可以自由添加任何所需參數 • 這裡的 JSON 參數設定完全沒有限制,不一定要按照預設的下去設定 config.json
  • 21. • ASP.NET 5 開發伺服器設定檔 • 摘要說明 • 這裡定義 ASP.NET 5 開發伺服器所需的參數定義 • 設定說明 • server=Microsoft.AspNet.Server.WebListener • 定義伺服器種類 • 可能的選項有: • Microsoft.AspNet.Server.Kestrel • "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta7" • Microsoft.AspNet.Server.WebListener • "Microsoft.AspNet.Server.WebListener": "1.0.0-beta7", • server.urls=http://localhost:5000 • 定義伺服器的啟動 URL 與 Port hosting.ini
  • 22. • ASP.NET 5 專案的進入點 • Startup() 建構式 • 注入物件 • IHostingEnvironment env • 宿主環境變數 • 提供環境名稱(EnvironmentName)、 網站根目錄位置(WebRootPath)等資訊 • IApplicationEnvironment appEnv • 應用程式環境變數 • 提供應用程式名稱、路徑、版本、執行框架等資訊 • 定義設定檔來源 • AddJsonFile("config.json") • AddCommandLine(args) • AddEnvironmentVariables() • AddIniFile("config.ini") • AddInMemoryCollection() • AddUserSecrets() Startup.cs 1/3 • 公開屬性:Configuration • 用於共享設定資訊於類別之中
  • 23. • ASP.NET 5 專案的進入點 • ConfigureServices() 方法 • 注入物件 • IServiceCollection services • 用來記錄那些服務要被加入到 ASP.NET 5 容器內的重要物件 • 因為一個 ASP.NET 5 應用程式會包含多個「服務」並在此被註冊進去 • 註冊服務 • Add*() 增加服務到集合裡 • Configure<T>() 設定特定服務選項 • AddTransient<T1, T2>() 註冊自訂的應用程式服務物件 • 重要觀念 • 「服務」是 ASP.NET 5 的模組化元件 Startup.cs 2/3
  • 24. • ASP.NET 5 專案的進入點 • Configure() 方法 • 注入物件 • IApplicationBuilder app • 用來建立應用程式 執行管線 (Execution Pipeline) 的重要物件 • IHostingEnvironment env • 宿主環境變數 • 提供環境名稱(EnvironmentName)、網站根目錄位置(WebRootPath)等資訊 • ILoggerFactory loggerFactory • ASP.NET 5 內建的 Logger 物件,用來設定 Logger 的紀錄方式 • 使用服務 • Use*() 使用服務 • UseMvc() 使用 ASP.NET MVC 6 服務,路由 (Routing) 也改從這裡宣告 • 注意事項 • 這個方法會決定 ASP.NET 5 執行時期的 執行管線 (Execution Pipeline) 的順序 • 這裡執行順序很重要,必須想清楚你要如何處理每一個 HTTP 要求 Startup.cs 3/3
  • 25. • package.json • npm 設定檔 • bower.json • Bower 設定檔 • gulpfile.js • Gulp 工作定義檔 前端工程相關檔案
  • 26. The Main Concepts about ASP.NET 5 重要觀念解析
  • 27. • ASP.NET 5 的模組化以「服務」為中心 • 要在 ASP.NET 5 中使用這些元件,必須靠 DI (相依性注入) • ASP.NET 5 內建 IoC (控制反轉) 容器,也可抽換成其他的 IoC • ASP.NET 5 預設可讓類別建構式注入服務元件 • 服務區分三種類型 • Singleton 每次 Web 應用程式啟動會只會建立一個實體 • services.AddSingleton<IMyApp, MyApp>(); • Scoped 每次 HTTP 要求都會建立一次實體 • services.AddScoped<IMember, Member>(); • Transient 每次執行注入都會建立全新實體 • services.AddTransient<IEmailSender, AuthMessageSender>(); 服務元件 ( service components )
  • 28. • ASP.NET 5 支援 Middleware 架構 • 可將元件依序套用到 HTTP 要求管線 (順序很重要) • 預設定義在 Startup 類別中的 Configure() 方法 中介元件 ( Middleware )
  • 29. • 看一下 Startup.cs 的 Configure() 方法 • 為何 loggerFactory.AddConsole(); 要擺在第一順位? • 為何 app.UseStaticFiles(); 要設定在app.UseIdentity(); 之前? • 如果順序調換會怎樣? • 如果加入 app.UseDirectoryBrowser(); 應該擺在哪裡? • 每個 Middleware 到底在做甚麼?做了什麼事?有沒有文件? 思考題:套用 Middleware 順序
  • 30. • Authentication • 提供身分驗證支援 • CORS • 設定 Cross-Origin Resource Sharing (CORS) • Diagnostics • 支援錯誤頁面顯示與執行時期資訊 • Routing • 定義路由與限制 • Session • 提供 Session 支援 • Static Files • 提供 wwwroot (網站根目錄) 下的靜態檔案 ASP.NET 5 內建的 Middleware
  • 31. • ASP.NET 5 可依據不同環境套用不同設定 • 指定 ASPNET_ENV 環境變數 • Development • Staging • Production • 專案設定 • launchSettings.json 多重執行環境
  • 32. • SET ASPNET_ENV=LogInline • dnx web http://localhost:5000 自訂環境與 Middleware 範例
  • 33. Learning Resources for ASP.NET 5 ASP.NET 5 學習資源
  • 34. • ASP.NET 5 Documentation • http://docs.asp.net/en/1.0.0-beta7/ (1.0.0-beta7) • http://docs.asp.net/en/latest/ (最新版) • JabbR – AspNetvNext • https://jabbr.net/#/rooms/AspNetvNext (線上聊天室) • ASP.NET 5 專案 (GitHub) • https://github.com/aspnet/Home/issues (討論議題) • https://github.com/aspnet/Home/wiki (Wiki文件) • https://github.com/aspnet/Home/releases (版本資訊) • https://github.com/aspnet/Home/wiki/Roadmap(開發時程) • https://github.com/aspnet/Announcements/issues (公佈欄) 相關學習資源
  • 35. • The Will Will Web 記載著 Will 在網路世界的學習心得與技術分享 • http://blog.miniasp.com/ • Will 保哥的技術交流中心 (臉書粉絲專頁) • http://www.facebook.com/will.fans • Will 保哥的噗浪 • http://www.plurk.com/willh/invite • Will 保哥的推特 • https://twitter.com/Will_Huang 聯絡資訊
  • 36. © 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. 只要完成「大會線上問卷」,可於活動期間於大會服務台兌換問卷禮哦! 請協助完成「本課程線上問卷」,我們重視您的寶貴意見 本課程影音及簡報檔未來將公布於 http://aka.ms/td2015 問卷網址 http://aka.ms/td2015-survey
  • 38. TechDays 2015 課程影片及簡報檔載點 ( 將於九月底陸續釋出 ) aka.ms/td2015 免費線上課程及簡報檔下載 Channel 9 aka.ms/c9-learning MSDN 台灣 aka.ms/msdntw-fb TechNet 台灣 aka.ms/tntw-fb MVA mva.ms 開發人員社群 IT 專業人員社群 - 您不可不知的微軟四大核心學習資源 -
  • 39. © 2014 Microsoft Corporation. All rights reserved

Editor's Notes

  • #7: %appdata%\NuGet\NuGet.config
  • #13: yo aspnet --grunt
  • #16: 在 C# 原始碼編輯器中的左上角可以切換 DNX 版本
  • #30: 為何 loggerFactory.AddConsole(); 要擺在第一順位? Ans: 因為註冊完這個 Middleware 之後會在之後所有的 Middleware 技術所有偵錯資訊。 為何 app.UseStaticFiles(); 要設定在app.UseIdentity(); 之前? Ans: 因為 StaticFiles 不需要進行認證或授權,因此預設大家都可以存取或下載 如果順序調換會怎樣? Ans: 如果順序對調,就會連靜態檔案也可以一併進行身分驗證。 如果加入 app.UseDirectoryBrowser(); 應該擺在哪裡? Ans: 擺在最後面,不然 ASP.NET MVC 就不會執行了。 每個 Middleware 到底在做甚麼?做了什麼事?有沒有文件? Ans: 這是一種對複雜事物進行封裝的概念,是一種抽象化的過程,隱藏細節是對的,但需要文件支援。 目前內建的 Middleware 都有原始碼與範例程式,但不一定有文件可看。
  • #31: Middleware http://docs.asp.net/en/1.0.0-beta7/fundamentals/middleware.html
  • #32: Properties\launchSettings.json Working with Multiple Environments — ASP.NET 0.0.1 documentation http://docs.asp.net/en/1.0.0-beta7/fundamentals/environments.html