模板简介

使用 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 这两个应用了。

开源地址

在线文档

使用silky脚手架构建微服务应用的更多相关文章

  1. 通过silky框架在.net平台构建微服务应用

    目录 必要前提 使用Web主机构建微服务应用 使用.NET通用主机构建微服务应用 构建具有websocket服务能力的微服务应用 构建Silky微服务网关 开源地址 在线文档 在线示例 必要前提 (必 ...

  2. SpringBoot 快速构建微服务体系 知识点总结

    可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目 一.微服务 1.SpringBoot是一个可使用Java构建微服务的微框架. 2.微服务就是要倡导大家尽 ...

  3. [译]Spring构建微服务

    此文为译文,原文地址 介绍 本文通过一个使用Spring.Spring Boot和Spring Cloud的小例子来说明如何构建微服务系统. 我们可以通过数个微服务组合成一个大型系统. 我们可以想象下 ...

  4. 构建微服务:Spring boot

    构建微服务:Spring boot 在上篇文章构建微服务:Spring boot 提高篇中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jp ...

  5. 如何使用 Java 构建微服务?

    [编者按]微服务背后的大理念是将大型.复杂且历时长久的应用在架构上设计为内聚的服务,这些服务能够随着时间的流逝而演化.本文主要介绍了利用 Java 生态系统构建微服务的多种方法,并分析了每种方法的利弊 ...

  6. 构建微服务-使用OAuth 2.0保护API接口

    微服务操作模型 基于Spring Cloud和Netflix OSS 构建微服务-Part 1 基于Spring Cloud和Netflix OSS构建微服务,Part 2 在本文中,我们将使用OAu ...

  7. 基于Spring Cloud和Netflix OSS构建微服务,Part 2

    在上一篇文章中,我们已使用Spring Cloud和Netflix OSS中的核心组件,如Eureka.Ribbon和Zuul,部分实现了操作模型(operations model),允许单独部署的微 ...

  8. 构建微服务(Building Microservices)-PDF 文档

    闲时翻译了几篇基于Spring Cloud.Netflix OSS 构建微服务的英文文章,为方便分享交流,整理为PDF文档. PDF 文档目录: 目录 一.微服务操作模型... 3 1.     前提 ...

  9. Chris Richardson微服务翻译:构建微服务之微服务架构的进程通讯

    Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯(本文) 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...

随机推荐

  1. linux下部署Elasticsearch6.8.1版本的集群

    一.准备工作 安装包的下载:elasticsearch-6.8.1.tar.gz 集群服务器:A     B 一.单节点elasticsearch的安装部署 a.进入es的下载目录home:解压tar ...

  2. P3180-[HAOI2016]地图【圆方树,莫队,分块】

    正题 题目链接:https://www.luogu.com.cn/problem/P3180 题目大意 \(n\)个点\(m\)条边的一个仙人掌,有点权. \(Q\)次询问给出\(op,x,y\),封 ...

  3. 自从学会了Python自动化Pytest框架,领导再也不敢在我背后指手划脚了

    前言 大家都知道Python有自带的单元测试框架unittest,那为什么还要学习Pytest呢?先了解下Pytest优点 pytest: pytest是一个非常成熟的全功能的Python测试框架,是 ...

  4. 请求既有multipartFile,也有实体的解决方案

    上回书我们说到,我们在发文件上传请求的时候,携带数据 this.fileData.append('trainName', this.dataModel.trainName); // 添加培训名称 然后 ...

  5. Markdown 相关语法

    MD语法博客:https://www.cnblogs.com/Jetictors/p/8506757.html 公式 \[\mathbf{x}_{t}=\Phi_{t}\left(\mathbf{x} ...

  6. 从产业链、架构和技术三个层面,看元宇宙与RPA的发展关系

    你可能还不知道,元宇宙也将带动RPA高速发展 一文读懂RPA如何赋能元宇宙,虚拟空间更需要RPA无处不在 三个层面,解读元宇宙如何利好RPA行业发展 从产业链.架构和技术三个层面,看元宇宙与RPA的发 ...

  7. 【vue】生成接口模拟数据

    目录 方案一:自定义模拟数据 Step1 创建json文件 Step2 在 vue.config.js 中配置 Step3 在组件中使用 (方式一) Step3 封装api (方式二) Step4 在 ...

  8. 网络基础--简单理解什么是DNS? TCP? UDP? Http? Socket?

    什么是IP 协议?  协议就是为了实现网络通信而创建的一系列规范.  通常我们的网络模型从上到下共分为4层: 应用层, 传输层, 网络层 和数据链路层. IP协议属于网络层协议,它精确定义了网络通信中 ...

  9. 关于django配置好静态文件后打开相关图片页显示404的解决方法

    在url里设置以上代码即可,即可解决图片显示异常(出现此问题的根本原因是django版本)django3后需要加以上代码)

  10. 浏览器有别_HTTP报文的回车换行

    本来以为浏览器HTTP报文的生成应该是完全一致的.但最近在做一个项目的时候,发现Safari和Chrome提交同一份表单,后端的处理结果不一致.看提交结果呢,是因为Safari多了个回车.由于原项目的 ...