建立和開發ASP.NET Core應用能夠有二種方式:最簡單的方式是經過Visual Studio 2017 來建立,其優勢是簡單方便,但須要安裝最新版本Visual Studio 2017 preview 15.3 。另外一種方式是使用Visual Studio Code來建立,Visual Studio Code 則是一款輕量級的編輯器 ,可在多種操做系統中運行,若是狀況容許,筆者更建議使用Visual Studio Code來進行開發,可在多種平臺開發,同時也更靈活,享受更多開發的樂趣。html
開發ASP.NET Core 2.0的應用,前提是須要安裝.NET Core 2.0 正式版。linux
安裝完成後,可在命令行(cmd)中鍵入命令查看安裝信息:docker
dotnet --info
安裝信息以下圖,表示.NET Core 2.0 已經成功安裝shell
若是須要使用Visual Studio 2017 來開發,須要安裝 Visual Studio 2017 Preview version 15.3,我的開發者可選擇社區版,社區版的功能對於平常的開發已經足夠,而且是免費。json
下載地址 https://www.visualstudio.com/vs/preview/?dotnetid=639356346.1501080398ubuntu
下載完成後可選擇相應的工做負載來安裝,若是隻是運行ASP.NET Core應用則能夠只安裝響應部分,以下圖所示:c#
Visual Studio Code 是一個輕量級的源代碼編輯器,能夠運行在Windows,MacOs,和Linux。經過安裝擴展可用來開發諸如C++、C#、 Python、PHP、Go等語言。windows
下載地址(https://code.visualstudio.com/)[https://code.visualstudio.com/]visual-studio-code
安裝完成後,須要安裝c#開發擴展以下圖所示
經過Visual Studio 2017 建立應用很是簡單,在新建項目時選擇 ASP.NET Core webapplication便可
在確認選擇後,還會彈出一個對話框,選擇代碼結構模板,此處任意選擇Web Application(MVC)
,項目便可生成完畢。在Visual Studio 2017中點擊運行,一個ASP.NET Core 網站便可運行。
首先可在本地新建文件夾,而後打開Visual Studio Code ,選擇打開剛纔的文件夾
在主菜單中依次選擇「查看」 > 「集成終端」。在集成終端中輸入 dotnet new mvc
命令,文件夾中會生成 mvc 的模板
模板創建好後,可在集成終端中輸入dotnet run
命令,mvc 站點便可運行。
要在Visual Studio Code 中調試程序,須要配置調試器,點擊調試配置,選擇.NET Core配置文件
此時會生成launch.json文件,文件中有三種launch方式,以web節點爲例
{ "name": ".NET Core Launch (web)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "${workspaceRoot}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll", "args": [], "cwd": "${workspaceRoot}", "stopAtEntry": false, "launchBrowser": { "enabled": true, "args": "${auto-detect-url}", "windows": { "command": "cmd.exe", "args": "/C start ${auto-detect-url}" }, "osx": { "command": "open" }, "linux": { "command": "xdg-open" } } }
將program節點中的路徑改成本身程序集的路徑便可,例如${workspaceRoot/bin/Debug/netcoreapp2.0/WebApplicationSample1.dll
而後點擊左側調試圖標,在左上角可選擇啓動調試,啓動後會彈出,對話框提示找不到build命令,選擇配置任務運行程序。
配置完成後會多一個task.json文件,此時再次開啓調試,即可運行調試。
託管 ASP.NET Core 應用有多種方式,便可在傳統的windows平臺,也能夠部署在開源的Linux上,還能夠經過docker容器來部署,本節將講解多種方式部署 ASP.NET Core 應用
ASP.NET Core 應用須要一個Host , Host必需要實現IWebHost
接口,接口包括Start
方法。建立一個Host 須要使用WebHostBuilder
,它會返回一個WebHost
實例,用於處理請求。
在上一節所建立的ASP.NET Core應用中,能夠看到Program.cs文件中的 'void Main'方法,此方法是整個應用的入口,在入口中調用了CreaDefaultbuilder
來建立Host,代碼以下:
public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); }
CreateDefaultBuilder
建立了WebHostBuilder
的實例來構建啓動 server 的 host。host須要一個實現IServer
接口的server。內建的Web server 包括 Kestrel 和 Httpsys,默認使用Kestrel.在命令行工具中執行dotnet run
命令,此時便可啓動整個應用。
在ASP.NET Core中能夠用兩種HTTP server,它們請求原理如圖所示:
Kestrel 是跨平臺的HTTP server 基於libuv(一個跨平臺的異步I/O library)
Httpsys 是基於Windows內核驅動程序Http.Sys的HTTP server。Http.Sys是成熟的技術,能夠防範多種攻擊,並提供全功能Web服務器的魯棒性,安全性和可擴展性。IIS自己做爲HTTP偵聽器運行在Http.Sys之上。
在windows平臺上還可使用Http.Sys做爲Web Server
WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseHttpSys() .Build();
因爲ASP.NET Core的跨平臺性,所以在Liunx環境下也可使用,須要注意的是在Linux環境下是不能選擇Http.Sys做爲Web server,而只能選擇Kestrel。本文選用 Ubuntu 16.04 系統,做爲示例。
第一步:註冊微軟key爲可信任
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
注:若是沒有curl須要安裝curl。命令 sudo apt-get install curl
第二步:將微軟的安裝地址設爲可信任的列表
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
第三步:更新apt-get
版本
sudo apt-get update
第四步:更新完成後便可安裝最新.NET Core 2.0
sudo apt-get install dotnet-sdk-2.0.0
安裝完成後使用以下命令查看.NET Core 版本信息
dotnet --info
使用命令生成項目模板
dotnet new mvc -o app
以上命令會在當目錄下面建立一個app文檔夾,首先咱們要將根路徑跳轉到app文件夾下面
cd app
最後咱們要將ASP.NET Core應用在Linux環境下託管起來,只須要運行下面一條命令
dotnet run
若是選擇Http.Sys做爲Linux下的服務器則會拋出異常
從本節能夠看出,無論是在傳統的Windows環境仍是Linux環境,都能經過Visual Studio Code開發ASP.NET Core 應用程序,一樣的在Windwos環境和Linux均可以使用ASP.NET Core自帶的Web server來託管應用。
參考資料
【1】http://www.microsoft.com/net/core#linuxubuntu