模板簡介
使用 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