Gridwich 專案命名和命名空間

Azure Functions

Gridwich 是由多個專案所組成的 .NET 6 解決方案。 程式代碼項目必須具備命名慣例,以協助瞭解應用程序結構、快速尋找相關程式碼,以及減少 專案命名中的自行車脫 位。

Gridwich 系統有三個主要元件、 CoreHost.FunctionAppSagaParticipants

  • 專案 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}
    • 否:程序代碼是否與特定功能相關?

      • 是: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、 和 TestResultsbin暫時性目錄,其中不包含任何符合 Git 資格的成品。 處理會 dotnet clean 清除這些暫時性目錄。

專案名稱和命名空間

Gridwich 專案名稱和命名空間具有下列特性。

核心和SagaParticipants技術命名空間

Gridwich.Core.{Technology} 命名空間不包含技術的目的,主要是為了避免 自行車脫口。 Core命名空間是或Host.FunctionApp專案使用的內部專案SagaParticipants,而且不需要妥善定義的名稱。

例如, Gridwich.Core.EventGrid 專案可以是 Gridwich.Core.Events.EventGridGridwich.Core.Messaging.EventGrid。 不過, Core 專案名稱已經建議技術對核心系統做出貢獻。

一種技術也可以以一種以上的方式對系統做出貢獻。 例如,您可以根據使用量來呼叫 Redis 資料存放區或傳訊傳輸,但一律使用相同的 SDK 包裝函式。

Gridwich.SagaParticipants.Encode.CloudPortGridwich.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.TestsGridwich.Core.Helpers.TestHelpers 參與 類別。

不過,每個套件都會建置一個 DLL,其符合 中 src生產程式代碼的套件名稱,以及單元測試的 DLL,如果有的話,則為 tests。 測試 DLL 名稱與套件名稱相同,但後綴為 Tests

下一步

產品檔案:

Microsoft Learn 課程模組: