Adnc如何本地调试 - 一个轻量级的.Net Core微服务开发框架

前言
如果只是想本地调试,只需要安装必备软件,必备软件除开发工具外,其它软件建议大家都使用`docker`安装。如何安装`docker`,官方网站上有各种环境下的 安装指南。
微服务最核心的服务自动注册/发现/配置,`adnc`使用`consul`实现,因为在代码中做了限制,调试环境不会启动。当然如果你已经安装好了`cosnul`环境,也可以自己开启,请修改如下3个文件。建议先不要开启`cosnul`相关功能,先快速跑起来,`consul`如何配置,请参考 如何用docker consul部署到服务器
//program.cs
if (env.IsProduction() || env.IsStaging())
{
var configuration = cb.Build();
//从consul配置中心读取配置
var consulOption = configuration.GetSection("Consul").Get<ConsulConfig>();
cb.AddConsul(new[] { consulOption.ConsulUrl }, consulOption.ConsulKeyPath);
}
//startup.cs
if (env.IsProduction() || env.IsStaging())
{
//启动后自动注册服务到consul
app.RegisterToConsul(_srvRegistration.GetConsulConfig());
}
//ServiceRegistrationHelper.cs
//获取用户认证、鉴权服务
var authServerAddress = (_env.IsProduction() || _env.IsStaging()) ? "adnc.usr.webapi" : "http://localhost:5010";
base.AddRpcService<IAuthRpcService>(authServerAddress, policies);
演示
GitHub
必备软件有哪些
1. Visual Studio 2019
Adnc基于.Net Core 3.1开发,并且用了部分C# 8.0语法,所以需要安装visual studio 2019。
2. Redis
#新建/data/redis目录
cd /
mkdir data
cd data
mkdir redis
#进入redis目录
cd reids
#拉取redis镜像文件
docker pull redis
#从官网下载redis.conf,并修改配置
wget http://download.redis.io/redis-stable/redis.conf
- 修改上面下载的配置文件
redis.conf
bind 127.0.0.1#注释掉这部分,这是限制redis只能本地访问
protected-mode no#默认yes,开启保护模式,限制为本地访问
daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败,请设置成no.
dir ./#输入本地redis数据库存放文件夹(可选)
appendonly yes#redis持久化(可选)
#启动redis容器,监听13379端口,并挂载redis.conf与data目录
docker run -p 13379:13379 --name redis -v /root/data/redis/redis.conf:/etc/redis/redis.conf -v /root/data/redis/data:/data -d redis redis-server /etc/redis/redis.conf
- 修改
Adnc.Usr.WebApi、Adnc.Cus.WebApi、Adnc.Maint.WebApi3个微服务appsettings.development.json文件的redis节点信息
"Redis": {
"MaxRdSecond": 120,
"EnableLogging": false,
"LockMs": 5000,
"SleepMs": 300,
"dbconfig": {
"ConnectionStrings": [
"你的redis地址:13379,password=你的密码,poolsize=50,defaultDatabase=1,prefix="
],
"ReadOnly": false
}
}
3. rabbitmq
#拉取rabbitmq镜像
docker pull rabbitmq:management
#启动容器,监听18578,13572端口
docker run --name=rabbitmq -p 18578:15672 -p 13572:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=你的密码 -d rabbitmq:management
如果安装成功,我们访问
http://服务器IP:18578,会出现登录页面。
- 修改
Adnc.Usr.WebApi、Adnc.Cus.WebApi、Adnc.Maint.WebApi3个微服务appsettings.development.json文件的RabbitMq节点信息
"RabbitMq": {
"HostName": "服务器Ip",
"VirtualHost": "虚拟主机",
"Port": "13572",
"UserName": "用户名",
"Password": "密码"
}
4. mongodb
#拉取mongodb镜像
docker pull mongo
#启动容器,监听13017端口并挂载data与backup目录
docker run --name mongo -p 13017:27017 -v /root/data/mongo:/data/db -v /root/data/mongo/backup:/data/backup -d mongo --auth
- 修改
Adnc.Usr.WebApi、Adnc.Cus.WebApi、Adnc.Maint.WebApi3个微服务appsettings.development.json文件的MongoDb节点信息
"MongoDb": {
"ConnectionStrings": "mongodb://用户名:密码@服务器Ip:13017/Logs",
"CollectionNamingConvention": 2,
"PluralizeCollectionNames": true
}
- 修改
nlog.configmonogdb配置部分
5. mysql
#拉取mysql镜像
docker pull mariadb
#启动容器,监听13308端口,并挂载data与logs目录
docker run --name mariadb -p 13308:3306 -e MYSQL_ROOT_PASSWORD=你的root密码 --restart=always -v /root/data/mariadb/conf:/etc/mysql -v /root/data/mariadb/logs:/var/log/mysql -v /root/data/mariadb/data:/var/lib/mysql -d mariadb
- 修改
Adnc.Usr.WebApi、Adnc.Cus.WebApi、Adnc.Maint.WebApi3个微服务appsettings.development.json文件的mysql节点信息
"Mysql": {
"WriteDbConnectionString": "Server=服务器ip;Port=13308;database=库名;uid=账号;pwd=密码;"
}
- 3个微服务的
sql脚本在doc目录中,请自行导入
必备软件安装完成,下面介绍如何启动。
启动服务端ServerApi
- 修改
Adnc.Usr.WebApi、Adnc.Cus.WebApi、Adnc.Maint.WebApi、Adnc.Infr.Gateway4个微服务的launchSettings.json文件
注释如下代码,这是启动挂载SkyAPM的配置,因为你没有安装skywalking环境,注释就可以了。
//注释下面代码
"SKYWALKING__SERVICENAME": "adnc.usr.webapi.dev",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore"
- 右键解决方案,选择多个项目启动,并点击确定
需要启动4个项目:
Adnc.Infr.Gateway、Adnc.Cus.WebApi、Adnc.Maint.WebApi、Adnc.Usr.WebApi。
实际开发过程中并不需要这样,这样介绍主要是为了快速在本地跑起来。
- 回到
Visual Studio 2019主界面,点击启动,这样后台接口与网关就启动了。

启动前端ClientApp
- 使用
visual code打开前端项目ClientApp
前端使用
Vue开发,需要安装很多依赖包
#安装依赖包
npm install --registry=https://registry.npm.taobao.org
#启动前端页面,地址:localhost:5001,这里请耐心等待,成功后会自动打开浏览器
npm run dev
- 启动成功后,默认页面是登录页面,登录账号:
alpha2008密码:alpha2008
问题交流
- 企 鹅 群:780634162
- 博 客:https://www.cnblogs.com/alphayu
- 项目网址:https://aspdotnetcore.net
License
MIT
Free Software, Hell Yeah!
Adnc如何本地调试 - 一个轻量级的.Net Core微服务开发框架的更多相关文章
- 一个轻量级的.Net Core微服务快速开发的轮子
前言 Adnc是一个轻量级的.Net Core微服务快速开发框架,同时也可以应用于单体架构系统的开发.框架基于JWT认证授权.集成了一系列微服务配套组件,代码简洁.易上手.学习成本低.开箱即用 ...
- 分享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo+SkyWalking的微服务开发框架
集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo的微服务开发框架 Github源代码地址 htt ...
- spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版
spring-boot-cloud-module spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版. 新手上路的绝佳模版,只有必要的配 ...
- 今天介绍一下自己的开源项目,一款以spring cloud alibaba为核心的微服务架构项目,为给企业与个人提供一个零开发基础的微服务架构。
LaoCat-Spring-Cloud-Scaffold 一款以spring cloud alibab 为核心的微服务框架,主要目标为了提升自己的相关技术,也为了给企业与个人提供一个零开发基础的微服务 ...
- .NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯
最近一段时间有些事情耽搁了更新,抱歉各位了. 上一篇我们简单的介绍了DotNetty通信框架,并简单的介绍了基于DotNetty实现了回路(Echo)通信过程. 我们来回忆一下上一个项目的整个流程: ...
- .NET Core微服务之路:利用DotNetty实现一个简单的通信过程
上一篇我们已经全面的介绍过<基于gRPC服务发现与服务治理的方案>,我们先复习一下RPC的调用过程(笔者会在这一节的几篇文章中反复的强调这个过程调用方案),看下图
- kubernetes实战篇之部署一个.net core微服务项目
目录 继上一篇kubernetes理论知识完结.本篇主要讲解基于nexus搭建一个docker镜像仓库(当然大家实践过程是不必完全跟着做,也可以搭建harbor仓库或者直接把镜像推送到docker h ...
- 推荐一个超牛的SpringCloud微服务项目,开发脚手架
前言 Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权.认证后台管理系统,其中包含具备用户管理.资源权限管理.网关API 管理等多个模块,支持多业务系统 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
随机推荐
- PyQt(Python+Qt)学习随笔:QTreeWidget中获取可见项视口位置矩形的visualItemRect方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件的visualItemRect方法可以返回参数指定项在视口的位置矩形. QRect visu ...
- 转:正则表达式的先行断言(lookahead)和后行断言(lookbehind)
正则表达式的先行断言和后行断言一共有4种形式: (?=pattern) 零宽正向先行断言(zero-width positive lookahead assertion) (?!pattern) 零宽 ...
- PyQt(Python+Qt)学习随笔:Mode/View中的枚举类 QItemSelectionModel.SelectionFlag取值及含义
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 以上取值可以通过或操作进行组合使用. 老猿Python,跟老猿学Python! 老猿Python博文 ...
- web文件包含
web安全~文件包含总结 文章来自freebuf,作者总结的很好,所以拿来做笔记用!!! 0×01 文件包含简介 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当P ...
- Day5 Scrum 冲刺博客
一.站立式会议# 1. 会议照片 2. 工作进度+燃尽图 团队成员 昨日完成工作 今日工作计划 遇到的困难 周梓波 将方块分类并抽象成类 将方块旋转变形 逻辑漏洞较多 纪昂学 绘制游戏背景,方块,状态 ...
- APIO2020 交换城市
我是真的不稳定的垃圾选手. 对于一张图来说,两个人能满足题面关系等价于这张图不是链,很好证明,如果有度数 \(> 2\) 的点,让一个人跑到一个度数 \(= 1\) 的地方就可以了. 如果离线就 ...
- Python迭代器&生成器&装饰器
1. 迭代器 1.1 可迭代对象(Iterator) 迭代器协议:某对象必须提供一个__next__()方法,执行方法要么返回迭代中的下一项,要么引起一个Stopiteration异常,以终止迭代(只 ...
- PHP判断字符串所属编码:ASCII、GB2312、GBK、UTF-8、ISO-8859-1
ASCII: ASCII的编码范围为0-127(十六进制:0x00-0x7F),判断函数: function isasciistr($str){ for($i=0;$i<strlen($str) ...
- S3C2440从NAND Flash启动和NOR FLASH启动的问题
1.为什么NAND FLASH不能直接运行程序 NAND FLASH本身是连接到了控制器上而不是系统总线上.CPU运行机制为:CPU启动后是要取指令执行的,如果是SROM.NOR FLASH ...
- 二叉排序树(BST)
二叉排序树(BST) 二叉排序树,又称二叉查找树(BST) 左子树结点值<根节点值<右子树结点值 如果用中序遍历来遍历一棵二叉排序树的话,可以得到一个递增的有序数列 左根右 二叉排序树的查 ...
