NCF 的 Dapr 應用實例的運行

簡介

在進行今天的主要內容之前,先帶大家瞭解一下 Dapr

Dapr 是一個可移植的、事件驅動的運行時,它使任何開發人員都可以輕鬆構建在雲和邊緣上運行的彈性、無狀態和有狀態的應用程序,幷包含語言和開發人員框架的多樣性。

任何語言,任何框架,任何地方

今天,我們正在經歷一波雲採用浪潮。開發人員對 Web + 數據庫應用程序架構感到滿意,例如經典的 3 層設計,但對本質上分佈式的微服務應用程序架構不滿意。成爲分佈式系統專家很難,你也不應該這樣做。開發人員希望專注於業務邏輯,同時依靠平臺爲他們的應用程序注入雲原生架構的規模、彈性、可維護性、彈性和其他屬性。

這就是 Dapr 的用武之地。Dapr 將構建微服務應用程序的_最佳實踐_編入稱爲構建塊的開放、獨立 API,使您能夠使用您選擇的語言和框架構建可移植的應用程序。每個構建塊都是完全獨立的,您可以在應用程序中使用其中的一個、部分或全部。

使用 Dapr,您可以將現有應用程序逐步遷移到微服務架構,從而採用雲原生模式,例如橫向擴展 / 縮減、彈性和獨立部署。

此外,Dapr 與平臺無關,這意味着您可以在本地、任何 Kubernetes 集羣、虛擬機或物理機以及 Dapr 集成的其他託管環境中運行您的應用程序。這使您能夠構建可以在雲和邊緣運行的微服務應用程序。

雲和邊緣的微服務構建塊

在構建微服務應用程序時有許多考慮因素。Dapr 在構建開發人員可以以標準方式使用並部署到任何環境的微服務應用程序時,爲常用功能提供了最佳實踐。它通過提供分佈式系統構建塊來做到這一點。

這些構建塊 API 中的每一個都是獨立的,這意味着您可以在應用程序中使用它們中的一個、部分或全部。

邊車架構

Dapr 將其 HTTP 和 gRPC API 公開爲 sidecar 架構,既可以作爲容器也可以作爲進程,不需要應用程序代碼包含任何 Dapr 運行時代碼。這使得與 Dapr 的集成很容易與其他運行時集成,並提供應用程序邏輯的分離以提高可支持性。

自託管本地開發

在自託管模式下,Dapr 作爲一個單獨的 sidecar 進程運行,您的服務代碼可以通過 HTTP 或 gRPC 調用該進程。每個正在運行的服務都有一個 Dapr 運行時進程(或 sidecar),它被配置爲使用狀態存儲、發佈 / 訂閱、綁定組件和其他構建塊。

您可以使用 Dapr CLI 在本地計算機上運行啓用 Dapr 的應用程序。下圖顯示了使用 CLIinit命令配置時 Dapr 的本地開發環境。

看完上述內容,我們大家需要有一個共識的概念就是,Dapr 它是邊車模式,下圖中箭頭所指的地方就是邊車,是不是一下子就知道 Dapr 是什麼樣的印象了

你可以理解爲是一些附加的服務,當然它也意味着,將是一個無所不能的服務。

知道 NCF 的小夥伴們都知道,不知道的小夥伴們可以到 NCF Docs 中去一睹 NCF 的真容。

NCF( NeuCharFramework)是一整套可用於構建基礎項目的企業級通用 .NET 框架,
嚴格遵循 DDD 設計模式,包含了基礎的緩存、數據庫、模型、驗證及配套管理後臺,
高度模塊化, 具有高度的可擴展性和耐造性。

NCF 具有簡單,靈活,可擴展的特性

現在給他加上 Dapr,你可以想象一下,它將更大限度的爲開發者夥伴提供更多的能力,下面我們就來看看 NCF 的 Dapr 版

步驟

實施

下載地址:https://github.com/NeuCharFramework/NCF

分支:Developer-front-DDD-Dapr-20220218

   打開源碼後如圖所示

  Senparc.Web      主運行項目

  XncfModules/    Xncf 模塊目錄

  docker-compose    docker 運行項目

打開數據庫配置文件

 修改 Sql-Server 節點的內容,如下所示

 修改這三個位置即可

設置 docker-compose 爲啓動項

 如果啓動的時候提示 xxx 容器不存在,則需要添加項目容器的支持,右鍵項目添加 Docker 支持

  需要查看 docker 容器運行中的 redis 中的配置信息

 在 Docker 運行的桌面圖標上右鍵,就能看到 docker 運行是否正常

進入 windows 版,docker desktop 主界面,看到如下圖的設置圖標,點擊進入

 給共享的文件夾授權

 爲什麼要給文件夾授權呢,因爲 docker 本身是一個容器環境,獨立於本身的操作系統,如果要與操作系統中的文件夾通信或者傳遞,則需要用到共享,掛載等功能,因此需要共享文件夾

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/VVXXKT7NLMedcPYuJhfPPg