Gridwich 是由多個專案所組成的 .NET 6 解決方案。 程式代碼項目必須具備命名慣例,以協助瞭解應用程序結構、快速尋找相關程式碼,以及減少 專案命名中的自行車脫 位。
Gridwich 系統有三個主要元件、 Core
、 Host.FunctionApp
和 SagaParticipants
。
專案
Core
具有全系統介面、模型、數據傳輸物件 (DTO) 和基類。Core.{Technology}
專案具有各種功能實作所使用的用戶端類別和基底功能。專案
Host.FunctionApp
是整體系統的公用介面。SagaParticipants
專案提供外部函式功能,例如分析、編碼、發佈和記憶體。SagaParticipants.{Capability}
專案描述功能產生的介面、例外狀況和事件。SagaParticipants.{Capability}.{Technology}
專案提供實際的功能實作、事件接聽程式和功能特定功能。
Gridwich Technology
是功能或核心函式的實際實作。 {Technology}
專案可以位於 或 SagaParticipants.{Capability}
命名空間和項目名稱底下Core
,視使用方式而定。
建立專案
在命名新的 Gridwich 專案時,您可以使用下列判定樹:
程式代碼是合約,例如基類、介面、模型或 DTO,還是服務延伸模組?
是:程序代碼是否與特定容量或服務相關?
- 是:
Gridwich.SagaParticipants.{Capability}
- 否:
Gridwich.Core
- 是:
否:程序代碼是否與事件接聽程式或特定技術的實作相關?
是:一個以上的服務會使用程序代碼嗎?
- 是,例如 SDK 包裝函式:
Gridwich.Core.{Technology}
- 否:
Gridwich.SagaParticipants.{Capability}.{Technology}
- 是,例如 SDK 包裝函式:
否:程序代碼是否與特定功能相關?
是:
Gridwich.SagaParticipants.{Capability}
否:程序代碼是否為 Azure 函式應用程式端點?
- 是:
Gridwich.Host.FunctionApp
- 否:
Gridwich.Core
- 是:
專案結構
每個套件都有兩個子目錄:
src
包含非測試生產程序代碼。tests
包含單元測試。
每個專案都有子 tests
目錄,但如果套件沒有單元測試,則目錄可能是空的。
這兩個子目錄的每一 個都包含 C# 或其他檔案來建置程式代碼,以及 .csproj 檔案。 .csproj 檔名遵循套件名稱,例如:
Gridwich.Host.FunctionApp/src/Gridwich.Host.FunctionApp.csproj
Gridwich.Host.FunctionApp/tests/Gridwich.Host.FunctionAppTests.csproj
封裝所使用的程式代碼命名空間也遵循此慣例,例如:
Gridwich.Host.FunctionApp
Gridwich.Host.FunctionAppTests
在建置和測試周期期間,會出現 、obj
、 和 TestResults
等bin
暫時性目錄,其中不包含任何符合 Git 資格的成品。 處理會 dotnet clean
清除這些暫時性目錄。
專案名稱和命名空間
Gridwich 專案名稱和命名空間具有下列特性。
核心和SagaParticipants技術命名空間
Gridwich.Core.{Technology}
命名空間不包含技術的目的,主要是為了避免 自行車脫口。 Core
命名空間是或Host.FunctionApp
專案使用的內部專案SagaParticipants
,而且不需要妥善定義的名稱。
例如, Gridwich.Core.EventGrid
專案可以是 Gridwich.Core.Events.EventGrid
或 Gridwich.Core.Messaging.EventGrid
。 不過, Core
專案名稱已經建議技術對核心系統做出貢獻。
一種技術也可以以一種以上的方式對系統做出貢獻。 例如,您可以根據使用量來呼叫 Redis 資料存放區或傳訊傳輸,但一律使用相同的 SDK 包裝函式。
Gridwich.SagaParticipants.Encode.CloudPort
和 Gridwich.SagaParticipants.Encode.Flip
技術命名空間會使用 命名空間中的Gridwich.SagaParticipants.Encode
元件。 此程式代碼不在命名空間下 Gridwich.Core.Encode
,因為它專屬於編碼工作,而且不會交叉到其他功能,例如發行集。
SagaParticipants 套件
並非每個 Gridwich.SagaParticipants
套件都會處理外部事件。 下 Gridwich.SagaParticipants
的某些套件會為處理外部要求的其他傳奇參與者提供功能。
除了跨多個編碼技術套件共用程式碼的 Gridwich.SagaParticipants.Encode
封裝之外,還有像是 等 Gridwich.SagaParticipants.Encode.TelestreamCloud
特製化套件。 Telestream 套件提供 Gridwich 外部 Vantage Telestream 系統的存取權。 Flip 和 CloudPort 傳奇參與者會使用 Telestream 套件來提供自己的要求處理。
套件名稱和其他命名空間
為了將語句保持在 using
最小值,Gridwich 不會將套件內容限制為套件名稱所指出的命名空間。 某些套件會為其他命名空間貢獻實體。 例如,套件 Gridwich.Core.Tests
會 Gridwich.Core.Helpers.TestHelpers
參與 類別。
不過,每個套件都會建置一個 DLL,其符合 中 src
生產程式代碼的套件名稱,以及單元測試的 DLL,如果有的話,則為 tests
。 測試 DLL 名稱與套件名稱相同,但後綴為 Tests
。
下一步
產品檔案:
Microsoft Learn 課程模組: