擁抱開源, .NET 走向跨平台 - Visual Studio 2015 如何開發 ASP.NET on Linux/Docker

各位夥伴們,

在 2014/11月的 Connect() 大會上,微軟宣布將會全力發展 .NET 開放原始碼,首要之務即是開發進階的 .NET 組件庫,讓 Immutable Collections, SIMD, XML 與 Metadata Reader…等組件庫能夠存放在 GitHub 並且在 GitHub 開放原始碼。此外,我們正在推出一項新計畫讓雲端應用程式能在 .NET Core Runtime 上執行,將會支援 Windows、Linux、Mac 多種版本。 這項計畫仍在籌備中,我們會盡最大的力量把它做到最好。

無論在何處部署應用程序,  Visual Studio 也一定會提供 .NET 開發人員最好的開發經驗。那我們就先來看看這項計畫的初步構想吧。

: 以下展示如何在 Visual Studio 2015 開發 ASP.NET 應用程式,執行在 Linux 上的 Docker 環境中,這些畫面使用先前的 CTP 版本,目前為 Visual Studio 2015 RC 版 (2015/5月),於 2015年夏天時將正式發表上市,畫面及功能可能有所不同。

現在開始來建立基於 .NET 核心運行的 ASP.NET 應用程式。

首先從建立檔案開始。注意: 完成這些不需要額外執行多餘的工作

選擇 ASP.NET vNext 網頁應用程序範本,按OK確認執行。

幾分鐘後專案就會開始建置

在過去項目建置完成後我們即可馬上執行,但因為 .NET Core runtime 的關係,專案建置完成後可以部署到多個執行平台,所以會花費一點時間。

如果要讓 .NET 在 Linux 環境運行,我們延續了相同的使用經驗。右鍵點擊專案,選擇 “Publish to Docker”,將 ASP.NET 應用程序部屬至 Docker,在 Linux 環境中執行。

跟在 Windows Server 部署專案的步驟是一樣的,替伺服器跟應用程式命名,建立 Docker 映象檔,剩下的都由 Visual Studio 負責就行了。

Docker 是一個開放原始碼軟體專案,開發人員能在 Docker 內不需要安裝作業系統就能建置、並執行多項應用程式。今年初,微軟也積極與 Docker 合作,Azure上除了將會提供 Docker 技術,未來新版的 Windows Server 也將會內建 Docker 引擎。

內建 Docker 可以在 Window Server 上建立可散佈的 Container 應用程式,這讓原先執行在 Linux 上的 Docker Container 應用程式也能夠運行在 Windows Server 上,讓 Windows Server 可以同時執行 Windows 以及 Linux 的應用程式。

Docker Hub 是 Docker 系統的主要核心,可以透過雲分享應用程序並自動化工作流程。

下圖可以看到 Docker Container 的映像目錄,其中有我們這次操作中所使用的基礎 Container 映象檔。

在這個範例中,我搜尋一張剛剛為了 Demo 而發佈的 Ubuntu 映象檔。

部署完成後,可以直接導到 ASP.NET 5.0 應用程序上,並在 Azure 上的 Linux 伺服器支援的 Docker 容器上運行。

 

但假設我們未善用 Visual Studio Debugger,就無法發揮 Visual Studio 的優勢。

在專案上點擊右鍵並選擇 「附加 Debugger 到 Docker 上」附加到應用程序上,即使它是在 Azure 中的 Linux 伺服器中運行。

一旦加了 Debugger,我可以很容易地設置中斷點和進行偵錯。在索引頁面上設置一個 Debugger,這樣更容易呼叫。

在 Internet Explorer 瀏覽器中,我們查看 About 頁面時能回到中斷點。

如同預期,這使用經驗就如同在本地運行的應用程式,但假設在監看視窗中評估 OSVersion 環境,您可以看到該應用程式目前正運行在Linux虛擬機器上。

最後可以看到我們成功利用 Visual Studio 將 ASP.NET 應用程序部屬至 Linux 虛擬機器上的 Docker Container。