10分鐘學會在windows/Linux下設置ASP.Net Core開發環境並部署應用

建立和開發ASP.NET Core應用能夠有二種方式:最簡單的方式是經過Visual Studio 2017 來建立,其優勢是簡單方便,但須要安裝最新版本Visual Studio 2017 preview 15.3 。另外一種方式是使用Visual Studio Code來建立,Visual Studio Code 則是一款輕量級的編輯器 ,可在多種操做系統中運行,若是狀況容許,筆者更建議使用Visual Studio Code來進行開發,可在多種平臺開發,同時也更靈活,享受更多開發的樂趣。html

1.1. 先決條件

1.1.1. 安裝.NET Core 2.0

開發ASP.NET Core 2.0的應用,前提是須要安裝.NET Core 2.0 正式版。linux

下載地址https://www.microsoft.com/net/download/coreweb

安裝完成後,可在命令行(cmd)中鍵入命令查看安裝信息:docker

dotnet --info

安裝信息以下圖,表示.NET Core 2.0 已經成功安裝shell

2017-08-20-22-07-28

1.1.2. 安裝Visual Studio 2017

若是須要使用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

1.1.3. 安裝Visual Studio Code

Visual Studio Code 是一個輕量級的源代碼編輯器,能夠運行在Windows,MacOs,和Linux。經過安裝擴展可用來開發諸如C++、C#、 Python、PHP、Go等語言。windows

下載地址(https://code.visualstudio.com/)[https://code.visualstudio.com/]visual-studio-code

安裝完成後,須要安裝c#開發擴展以下圖所示

vscode

1.2. 經過Visual Studio 2017 建立應用

經過Visual Studio 2017 建立應用很是簡單,在新建項目時選擇 ASP.NET Core webapplication便可

create asp.net core webapplication

在確認選擇後,還會彈出一個對話框,選擇代碼結構模板,此處任意選擇Web Application(MVC),項目便可生成完畢。在Visual Studio 2017中點擊運行,一個ASP.NET Core 網站便可運行。

mvcmoive

1.3. 經過Visual Studio Code 建立應用

首先可在本地新建文件夾,而後打開Visual Studio Code ,選擇打開剛纔的文件夾

open vscode

在主菜單中依次選擇「查看」 > 「集成終端」。在集成終端中輸入 dotnet new mvc 命令,文件夾中會生成 mvc 的模板

2017-08-23-23-13-44

模板創建好後,可在集成終端中輸入dotnet run 命令,mvc 站點便可運行。

2017-08-23-23-14-23

要在Visual Studio Code 中調試程序,須要配置調試器,點擊調試配置,選擇.NET Core配置文件

configure

此時會生成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命令,選擇配置任務運行程序。

2017-08-23-23-12-20

配置完成後會多一個task.json文件,此時再次開啓調試,即可運行調試。

debug

2017-08-23-23-13-01

1.4. 託管ASP.NET Core 應用

託管 ASP.NET Core 應用有多種方式,便可在傳統的windows平臺,也能夠部署在開源的Linux上,還能夠經過docker容器來部署,本節將講解多種方式部署 ASP.NET Core 應用

1.4.1. Windows平臺託管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命令,此時便可啓動整個應用。

run

在ASP.NET Core中能夠用兩種HTTP server,它們請求原理如圖所示:

Kestrel

HttpSys

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();

1.4.2. Linux平臺下託管ASP.NET Core應用

因爲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

2017-08-20-14-29-41

使用命令生成項目模板

dotnet new mvc -o app

以上命令會在當目錄下面建立一個app文檔夾,首先咱們要將根路徑跳轉到app文件夾下面

cd app

最後咱們要將ASP.NET Core應用在Linux環境下託管起來,只須要運行下面一條命令

dotnet run

2017-08-20-14-32-52

若是選擇Http.Sys做爲Linux下的服務器則會拋出異常

2017-08-23-23-11-01

1.5. 總結

從本節能夠看出,無論是在傳統的Windows環境仍是Linux環境,都能經過Visual Studio Code開發ASP.NET Core 應用程序,一樣的在Windwos環境和Linux均可以使用ASP.NET Core自帶的Web server來託管應用。


參考資料

【1】http://www.microsoft.com/net/core#linuxubuntu


做者:帥蟲哥 出處: http://www.cnblogs.com/vipyoumay/p/7420436.html

相關文章
相關標籤/搜索