模板簡介
使用 dotnet new
命令可以創建模板,也就是我們常說的腳手架工具。silky框架提供了兩種類型的模板,開發者可以選擇合適的模板構建微服務應用。
構建獨立應用的模板Silky.App.Template
如果開發者需要獨立的開發、管理微服務應用(將微服務應用單獨放在一個倉庫管理),可以使用Silky.App.Template模板構建微服務應用。
- 安裝 Silky.App.Template 模板
dotnet new --install Silky.App.Template::3.0.2
- 創建微服務應用
通過如下命令創建一個新的微服務應用:
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 // 應用啟動配置
- 啟動項目
進入到 ./docker-compose/infrastr 目錄,通過如下命令創建zookeeper
和redis
服務:
# 創建一個名稱為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模板構建微服務應用。
- 安裝 Silky.Module.Template 模板
dotnet new --install Silky.Module.Template::3.0.2
- 創建微服務應用
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 // 應用啟動配置
- 新增一個微服務應用模塊
dotnet new silky.module --hosttype webhost -p:i -n Demo1
將新創建的微服務應用從 Demo1/microservices/Demo1 拷貝到 Demo/microservices/Demo1, Demo1/docker-compose/Demo1 拷貝到 Demo/docker-compose/Demo1,並將新模塊的微服務應用添加到解決方案中。
- 調式
如果開發者需要同時啟動調式多個微服務,需要更新rpc:port
配置(rpc:port
不能重復),並通過更新launchSettings.json
更新應用服務啟動的http服務地址。將啟動項目設置為 多個啟動項目,將 Demo1Host 和 DemoHost 設置為 啟動。這樣, 我們就可以同時調式 Demo1Host 和 DemoHost 這兩個應用了。
開源地址
- github: https://github.com/liuhll/silky
- gitee: https://gitee.com/liuhll2/silky