使用silky腳手架構建微服務應用

Silky發表於2021-11-09

模板簡介

使用 dotnet new 命令可以建立模板,也就是我們常說的腳手架工具。silky框架提供了兩種型別的模板,開發者可以選擇合適的模板構建微服務應用。

構建獨立應用的模板Silky.App.Template

如果開發者需要獨立的開發、管理微服務應用(將微服務應用單獨放在一個倉庫管理),可以使用Silky.App.Template模板構建微服務應用。

  1. 安裝 Silky.App.Template 模板
dotnet new --install Silky.App.Template::3.0.2
  1. 建立微服務應用

通過如下命令建立一個新的微服務應用:

dotnet new silky.module --hosttype webhost -p:i --includeinfrastr -n Demo

Silky.App.Template 模板引數:

短命令 長命令 說明 預設值
-r --rpcToken 設定rpctoken ypjdYOzNd4FwENJiEARMLWwK0v7QUHPW
-rp --rpcPort 設定rpc埠 2200
-re --registrycentertype 服務註冊中心型別 Zookeeper
-p:r --registrycenterconnections 服務註冊中心連結地址 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183;127.0.0.1:2184,127.0.0.1:2185,127.0.0.1:2186
-p:re --redisenable 是否可用redis服務 true
--redisconfiguration redis服務配置 127.0.0.1:6379,defaultDatabase=0
-d --dockersupport 是否支援docker true
-do --dotnetenv 設定執行開發環境 Development
-in --includeinfrastr 是否包含基礎服務編排檔案 true
-p:i --includesln 是否包括解決訪問檔案 true
-p:d --dockernetwork 設定docker network silky_service_net
-ho --hosttype 設定主機型別: webhost, generalhost ,websockethost, gateway webhost

使用 Silky.App.Template 模板建立的微服務應用的目錄結構:

.
├─docker-compose          // docker-compose編排檔案
│  ├─Demo                 // Demo微服務應用服務編排
│  └─infrastr             // 基礎服務編排檔案
│      └─sql
└─src                     // 原始碼目錄
    ├─Demo.Application    // 應用層
    │  └─System
    ├─Demo.Application.Contracts  // 應用介面層,用於定義服務,可被其他微服務應用引用
    │  └─System
    │      └─Dtos
    ├─Demo.Database.Migrations   // 資料遷移專案(屬於基礎設施層),用於存放ef遷移檔案
    ├─Demo.Domain                // 領域層,實現核心業務應用
    ├─Demo.Domain.Shared         // 領域共享層,用於存放通用的值型別,列舉型別,可被其他微服務應用
    ├─Demo.EntityFrameworkCore   // 資料訪問層(屬於基礎設施層),提供通過efcore提供資料訪問能力
    │  └─DbContexts
    └─DemoHost                   // 主機專案,用於應用寄宿,管理應用服務生命週期
        └─Properties             // 應用啟動配置
  1. 啟動專案

進入到 ./docker-compose/infrastr 目錄,通過如下命令建立zookeeperredis服務:

# 建立一個名稱為silky_service_net的docker網路
docker network create silky_service_net


# 使用docker-compose建立zookeeper和redis服務
docker-compose -f docker-compose.zookeeper.yml -f docker-compose.redis.yml up -d

使用visual studio 或是 rider 開啟 Demo.sln 解決方案,將 DemoHost 設定為啟動專案,還原專案後,按F5啟動專案。

專案啟動後,通過瀏覽器開啟地址 https://localhost:5001/index.html, 即可開啟swagger線上文件地址:

構建模組化應用的模板Silky.Module.Template

如果開發者將所有的微服務應用統一開發、管理(將所有微服務應用存放在一個倉庫中集中管理),可以使用Silky.Module.Template模板構建微服務應用。

  1. 安裝 Silky.Module.Template 模板
dotnet new --install Silky.Module.Template::3.0.2
  1. 建立微服務應用
dotnet new silky.module --hosttype webhost -p:i --includeinfrastr --newsln -n Demo

Silky.Module.Template 模板引數:

短命令 長命令 說明 預設值
-r --rpcToken 設定rpctoken ypjdYOzNd4FwENJiEARMLWwK0v7QUHPW
-rp --rpcPort 設定rpc埠 2200
-re --registrycentertype 服務註冊中心型別 Zookeeper
-p:r --registrycenterconnections 服務註冊中心連結地址 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183;127.0.0.1:2184,127.0.0.1:2185,127.0.0.1:2186
-p:re --redisenable 是否可用redis服務 true
--redisconfiguration redis服務配置 127.0.0.1:6379,defaultDatabase=0
-d --dockersupport 是否支援docker true
-do --dotnetenv 設定執行開發環境 Development
-in --includeinfrastr 是否包含基礎服務編排檔案 true
-p:i --includesln 是否包括解決訪問檔案 true
-p:d --dockernetwork 設定docker network silky_service_net
-ho --hosttype 設定主機型別: webhost, generalhost ,websockethost, gateway webhost
-ne --newsln 是否是一個新的解決方案 false

使用 Silky.Module.Template 模板建立的微服務應用的目錄結構:

.
├─docker-compose               // docker-compose編排檔案
│  ├─Demo                      // Demo微服務應用服務編排
│  └─infrastr                  // 基礎服務編排檔案
│      └─sql
└─microservices                // 各個微服務應用模組      
    └─Demo                     // Demo微服務應用
        ├─Demo.Application     // 應用層
        │  └─System
        ├─Demo.Application.Contracts   // 應用介面層,用於定義服務,可被其他微服務應用引用
        │  └─System
        │      └─Dtos
        ├─Demo.Database.Migrations     // 資料遷移專案(屬於基礎設施層),用於存放ef遷移檔案
        ├─Demo.Domain                  // 領域層,實現核心業務應用
        ├─Demo.Domain.Shared           // 領域共享層,用於存放通用的值型別,列舉型別,可被其他微服務應用
        ├─Demo.EntityFrameworkCore     // 資料訪問層(屬於基礎設施層),提供通過efcore提供資料訪問能力
        │  └─DbContexts
        └─DemoHost                     // 主機專案,用於應用寄宿,管理應用服務生命週期
            └─Properties               // 應用啟動配置
  1. 新增一個微服務應用模組
dotnet new silky.module --hosttype webhost -p:i -n Demo1

將新建立的微服務應用從 Demo1/microservices/Demo1 拷貝到 Demo/microservices/Demo1, Demo1/docker-compose/Demo1 拷貝到 Demo/docker-compose/Demo1,並將新模組的微服務應用新增到解決方案中。

  1. 調式

如果開發者需要同時啟動調式多個微服務,需要更新rpc:port配置(rpc:port不能重複),並通過更新launchSettings.json更新應用服務啟動的http服務地址。將啟動專案設定為 多個啟動專案,將 Demo1HostDemoHost 設定為 啟動。這樣, 我們就可以同時調式 Demo1HostDemoHost 這兩個應用了。

開源地址

線上文件

相關文章