快速入門:將 .NET 可靠服務應用程式部署至 Service Fabric
Azure Service Fabric 是一個分散式系統平台,可讓您部署及管理可調整和可信賴的微服務與容器。
本快速入門示範如何將您的第一個 .NET 應用程式部署到 Service Fabric。 當您完成時,您會有一個投票應用程式,其 ASP.NET Core Web 前端會將投票結果儲存在叢集中具狀態的後端服務。
使用此應用程式,您將了解如何:
- 建立使用 .NET 和 Service Fabric 的應用程式
- 使用 ASP.NET Core 作為 Web 前端
- 將應用程式資料儲存在具狀態服務中
- 在本機偵錯您的應用程式
- 跨多個節點相應放大應用程式
- 執行輪流應用程式升級
必要條件
若要完成本快速入門:
安裝 Visual Studio 2019,其中包含 Azure 開發以及 ASP.NET 和 Web 開發工作負載。
執行下列命令以將 Visual Studio 部署到本機 Service Fabric 叢集:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser
建置叢集
在您安裝執行階段、SDK、Visual Studio 工具、Docker,且 Docker 開始執行後,建立包含五個叢集的本機開發叢集。
注意
當您建立叢集時讓 Docker 執行的原因是讓建立的叢集啟用容器功能。 如果未執行 Docker,您必須重建叢集才能啟用容器功能。
雖然此特殊快速入門沒必要這麼做,但是當您建立叢集時讓 Docker 執行的指示已納入為最佳做法。
請開啟終端機視窗並執行 docker ps
,然後查看是否有錯誤發生,以測試該 Docker。 如果回應未指出錯誤,表示 Docker 正在執行中,且您已可建置叢集。
以系統管理員身分開啟提升權限的新 PowerShell 視窗。
執行下列 PowerShell 命令,以建立開發叢集:
. "C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\DevClusterSetup.ps1"
執行下列命令以啟動本機叢集管理員工具:
. "C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager\ServiceFabricLocalClusterManager.exe"
注意
在本快速入門中,範例應用程式使用的功能在 Windows 7 中無法使用。
下載範例
在命令視窗中執行下列命令,將範例應用程式存放庫複製到本機電腦。
git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart
在本機執行應用程式
以滑鼠右鍵按一下 [開始] 功能表中的 Visual Studio 圖示,然後選擇 [以系統管理員身分執行]。 若要將偵錯工具附加至您的服務,您需要以系統管理員身分執行 Visual Studio。
從您複製的存放庫開啟 Voting.sln Visual Studio 方案。
根據預設,投票應用程式會在連接埠 8080 上接聽。 應用程式連接埠設定於 /VotingWeb/PackageRoot/ServiceManifest.xml 檔案中。 更新 [端點] 元素的 [連接埠] 屬性,即可變更應用程式連接埠。 若要在本機上部署並執行應用程式,則必須在您的電腦上開啟此應用程式連接埠並讓連接埠可供使用。 如果您變更了應用程式連接埠,請以新的應用程式連接埠值取代本篇文章中所有的 "8080"。
若要部署應用程式,請按 F5。
注意
在 Visual Studio 輸出視窗中,您會看到如下的訊息:「應用程式 URL 未設定或不是 HTTP/HTTPS URL,所以瀏覽器不會開啟應用程式。」此訊息不表示發生錯誤,而是代表瀏覽器將無法自動啟動。
部署完成之後,啟動瀏覽器並開啟 http://localhost:8080
以檢視應用程式的 Web 前端。
您現在可以新增一組投票選項,並開始進行投票。 應用程式會執行並將所有資料儲存在 Service Fabric 叢集中,而不需要個別資料庫。
逐步解說投票範例應用程式
投票應用程式包含兩個服務:
- Web 前端服務 (VotingWeb) 是 ASP.NET Core Web 前端服務,可作為網頁,並公開 Web API 來與後端服務通訊。
- 後端服務 (VotingData) 是 ASP.NET Core Web 服務,會公開 API 來將投票結果儲存在磁碟上所保存的可靠字典中。
當您在應用程式中投票時,會發生下列事件:
JavaScript 會將投票要求當做 HTTP PUT 要求,傳送至 Web 前端服務中的 Web API。
Web 前端服務使用 Proxy 來尋找 HTTP PUT 要求,並將其轉送至後端服務。
後端服務會接受傳入要求,並將更新的結果儲存在可靠的字典中,以複寫至叢集中的多個節點並保存在磁碟上。 應用程式的所有資料都會儲存在叢集中,因此不需要資料庫。
在 Visual Studio 中偵錯
應用程式應可正常執行,但是您可以使用偵錯工具查看應用程式主要組件的運作情形。 在 Visual Studio 中偵錯應用程式時,您會使用本機 Service Fabric 開發叢集。 您可以根據自己的情況調整偵錯體驗。 在這個應用程式中,我們會使用可靠的字典,將資料儲存在後端服務中。 當您停止偵錯工具時,Visual Studio 預設會移除應用程式。 移除應用程式也會導致移除後端服務中的資料。 若要在偵錯工作階段之間保存資料,請開啟投票專案的 [屬性],並將應用程式偵測模式變更為 [自動升級]。
若要查看對程式碼的影響,請完成下列步驟:
開啟 /VotingWeb/Controllers/VotesController.cs 檔案,並在 Web API 的 Put 方法 (第 69 行) 中設定中斷點 - 您可以在 Visual Studio 的方案總管中搜尋此檔案。
開啟 /VotingData/Controllers/VoteDataController.cs 檔案,並在這個 Web API 的 Put 方法 (第 54 行) 中設定中斷點。
返回到瀏覽器,並按一下投票選項或新增投票選項。 您到達 Web 前端之 API 控制器的第一個中斷點。
瀏覽器中的 JavaScript 會在此步驟中,將要求傳送至前端服務中的 Web API 控制器。
首先,請針對後端服務 (1) 建構 ReverseProxy 的 URL。
接著,將 HTTP PUT 要求傳送至 ReverseProxy (2)。
最後,將後端服務的回應傳回給用戶端 (3)。
按 F5 繼續
如果瀏覽器出現提示,請將偵錯模式的讀取和執行權限授與 ServiceFabricAllowedUsers 群組。
您現在位於後端服務的中斷點。
在方法的第一行 (1) 中,
StateManager
會取得或新增名為counts
的可靠字典。與可靠字典中的值進行的所有互動,都需要交易,這會使用陳述式 (2) 建立該交易。
在交易中,更新投票選項的相關索引鍵值,然後認可作業 (3)。 一旦傳回認可方法,字典中的資料會更新並複寫至叢集中的其他節點。 資料現在會安全地儲存在叢集中,而且後端服務可以容錯移轉到仍有可用資料的其他節點。
按 F5 繼續
若要停止偵錯工作階段,請按 Shift+F5。
執行輪流應用程式升級
將新的更新部署到應用程式時,Service Fabric 會以安全的方式來推出更新。 輪流升級可讓您在不需要停機的情況下進行升級,並在發生錯誤時自動復原。
若要升級應用程式,請執行下列動作:
在 Visual Studio 中開啟 /VotingWeb/Views/Home/Index.cshtml 檔案。
新增或更新文字以變更頁面上的標題。 例如,將標題變更為「Service Fabric 投票範例第 2 版」。
儲存檔案。
以滑鼠右鍵按一下方案總管中的 [投票],並選擇 [發行]。 [發行] 對話方塊隨即出現。
按一下 [資訊清單版本] 按鈕以變更服務和應用程式的版本。
例如,將 [VotingWebPkg] 下的 [Code] 元素版本變更為 "2.0.0",然後按一下 [儲存]。
在 [發行 Service Fabric 應用程式] 對話方塊中,核取 [升級應用程式] 核取方塊。
將 [目標設定檔] 變更為 PublishProfiles\Local.5Node.xml,並確定 [連線端點] 已設定為 [本機叢集]。
選取 [升級應用程式]。
按一下發行。
執行升級期間,您仍然可以使用應用程式。 由於您有兩個服務執行個體正在叢集中執行,因此其中一些要求可能會取得應用程式的升級版本,而其他要求可能仍然會取得舊版。
開啟您的瀏覽器,然後瀏覽至連接埠 19080 上的叢集位址。 例如:
http://localhost:19080/
。按一下樹狀檢視中的 [應用程式] 節點,然後按一下右窗格中的 [正在升級]。 您會看到在叢集的升級網域中輪流升級的情況,請確保每個網域的狀況良好,再繼續下一步。 當網域的健康狀態通過驗證時,進度列中的升級網域即會呈現綠色。
Service Fabric 會等候兩分鐘,再升級叢集中每個節點上的服務,以確保安全升級。 整個更新預計需要約八分鐘。
下一步
在本快速入門中,您已了解如何:
- 建立使用 .NET 和 Service Fabric 的應用程式
- 使用 ASP.NET Core 作為 Web 前端
- 將應用程式資料儲存在具狀態服務中
- 在本機偵錯您的應用程式
- 跨多個節點相應放大應用程式
- 執行輪流應用程式升級
若要深入了解 Service Fabric 和 .NET,請參閱下列教學課程: