模板简介

使用 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. 常用的word技巧

    自动生成标题 自动生成目录 显示导航列 修订 查看最终版本

  2. 鸿蒙内核源码分析(工作模式篇) | CPU是韦小宝,七个老婆 | 百篇博客分析OpenHarmony源码 | v36.04

    百篇博客系列篇.本篇为: v36.xx 鸿蒙内核源码分析(工作模式篇) | CPU是韦小宝,七个老婆 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CP ...

  3. EF Core Sequence contains no elements

    一.在.Net Core中使用Ef的聚合函数报错: 类似函数: 1,使用FirstOrDefault() 来代替 First() 2.使用SingleOrDefault 来代替 Single 3.使用 ...

  4. Spring技术内幕笔记2--我懒不写了哈哈哈哈。

    目录 1.1 关于IOC容器设计的线路区别 1.1.1 BeanFactory 1.1.2 ApplicationContext 2.1 FileSystemXmlApplicationContext ...

  5. NOIP模拟69

    T1 石子游戏 大坑未补 T2 大鱼吃小鱼 解题思路 set+桶可以得到 60pts (code) 线段树上二分每一次优先递归右区间从右区间贪心选择,并且记录下更改过的值,在处理完答案之后再复原回去. ...

  6. React Native之新架构中的Turbo Module实现原理分析

    有段时间没更新博客了,之前计划由浅到深.从应用到原理,更新一些RN的相关博客.之前陆续的更新了6篇RN应用的相关博客(传送门),后边因时间问题没有继续更新.主要是平时空余时间都用来帮着带娃了,不过还是 ...

  7. js Promise用法

    Promise 英文意思是 承诺的意思,是对将来的事情做了承诺, Promise 有三种状态, Pending 进行中或者等待中 Fulfilled 已成功 Rejected 已失败 Promise ...

  8. 搭建hexo博客遇到的问题

    搭建hexo博客遇到的问题 常用命令 hexo clean 清除hexo缓存 hexo generate 生成文章 hexo deploy 部署 hexo new post name 新建文章名 he ...

  9. Bert文本分类实践(三):处理样本不均衡和提升模型鲁棒性trick

    目录 写在前面 缓解样本不均衡 模型层面解决样本不均衡 Focal Loss pytorch代码实现 数据层面解决样本不均衡 提升模型鲁棒性 对抗训练 对抗训练pytorch代码实现 知识蒸馏 防止模 ...

  10. Catch That Cow 经典广搜

    链接:http://poj.org/problem?id=3278 题目: Farmer John has been informed of the location of a fugitive co ...