前言

    Adnc是一个轻量级的.Net Core微服务开发框架,同样适用于单体架构系统的开发。

    如果只是想本地调试,只需要安装必备软件,必备软件除开发工具外,其它软件建议大家都使用`docker`安装。如何安装`docker`,官方网站上有各种环境下的 安装指南

    微服务最核心的服务自动注册/发现/配置,`adnc`使用`consul`实现,因为在代码中做了限制,调试环境不会启动。当然如果你已经安装好了`cosnul`环境,也可以自己开启,请修改如下3个文件。建议先不要开启`cosnul`相关功能,先快速跑起来,`consul`如何配置,请参考 如何用docker consul部署到服务器
  1. //program.cs
  2. if (env.IsProduction() || env.IsStaging())
  3. {
  4. var configuration = cb.Build();
  5. //从consul配置中心读取配置
  6. var consulOption = configuration.GetSection("Consul").Get<ConsulConfig>();
  7. cb.AddConsul(new[] { consulOption.ConsulUrl }, consulOption.ConsulKeyPath);
  8. }
  1. //startup.cs
  2. if (env.IsProduction() || env.IsStaging())
  3. {
  4. //启动后自动注册服务到consul
  5. app.RegisterToConsul(_srvRegistration.GetConsulConfig());
  6. }
  1. //ServiceRegistrationHelper.cs
  2. //获取用户认证、鉴权服务
  3. var authServerAddress = (_env.IsProduction() || _env.IsStaging()) ? "adnc.usr.webapi" : "http://localhost:5010";
  4. base.AddRpcService<IAuthRpcService>(authServerAddress, policies);

演示

GitHub

必备软件有哪些

1. Visual Studio 2019

Adnc基于.Net Core 3.1开发,并且用了部分C# 8.0语法,所以需要安装visual studio 2019

2. Redis

  1. #新建/data/redis目录
  2. cd /
  3. mkdir data
  4. cd data
  5. mkdir redis
  6. #进入redis目录
  7. cd reids
  8. #拉取redis镜像文件
  9. docker pull redis
  10. #从官网下载redis.conf,并修改配置
  11. 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持久化(可选)

  1. #启动redis容器,监听13379端口,并挂载redis.conf与data目录
  2. 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.WebApiAdnc.Cus.WebApiAdnc.Maint.WebApi 3个微服务appsettings.development.json文件的redis节点信息
  1. "Redis": {
  2. "MaxRdSecond": 120,
  3. "EnableLogging": false,
  4. "LockMs": 5000,
  5. "SleepMs": 300,
  6. "dbconfig": {
  7. "ConnectionStrings": [
  8. "你的redis地址:13379,password=你的密码,poolsize=50,defaultDatabase=1,prefix="
  9. ],
  10. "ReadOnly": false
  11. }
  12. }

3. rabbitmq

  1. #拉取rabbitmq镜像
  2. docker pull rabbitmq:management
  3. #启动容器,监听18578,13572端口
  4. 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.WebApiAdnc.Cus.WebApiAdnc.Maint.WebApi 3个微服务appsettings.development.json文件的RabbitMq节点信息
  1. "RabbitMq": {
  2. "HostName": "服务器Ip",
  3. "VirtualHost": "虚拟主机",
  4. "Port": "13572",
  5. "UserName": "用户名",
  6. "Password": "密码"
  7. }

4. mongodb

  1. #拉取mongodb镜像
  2. docker pull mongo
  3. #启动容器,监听13017端口并挂载data与backup目录
  4. 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.WebApiAdnc.Cus.WebApiAdnc.Maint.WebApi 3个微服务appsettings.development.json文件的MongoDb节点信息
  1. "MongoDb": {
  2. "ConnectionStrings": "mongodb://用户名:密码@服务器Ip:13017/Logs",
  3. "CollectionNamingConvention": 2,
  4. "PluralizeCollectionNames": true
  5. }
  • 修改nlog.config monogdb配置部分

5. mysql

  1. #拉取mysql镜像
  2. docker pull mariadb
  3. #启动容器,监听13308端口,并挂载data与logs目录
  4. 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.WebApiAdnc.Cus.WebApiAdnc.Maint.WebApi 3个微服务appsettings.development.json文件的mysql节点信息
  1. "Mysql": {
  2. "WriteDbConnectionString": "Server=服务器ip;Port=13308;database=库名;uid=账号;pwd=密码;"
  3. }
  • 3个微服务的sql脚本在doc目录中,请自行导入

必备软件安装完成,下面介绍如何启动。

启动服务端ServerApi

  • 修改Adnc.Usr.WebApiAdnc.Cus.WebApiAdnc.Maint.WebApiAdnc.Infr.Gateway 4个微服务的launchSettings.json文件

    注释如下代码,这是启动挂载SkyAPM的配置,因为你没有安装skywalking环境,注释就可以了。
  1. //注释下面代码
  2. "SKYWALKING__SERVICENAME": "adnc.usr.webapi.dev",
  3. "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore"
  • 右键解决方案,选择多个项目启动,并点击确定

需要启动4个项目:Adnc.Infr.GatewayAdnc.Cus.WebApiAdnc.Maint.WebApiAdnc.Usr.WebApi



实际开发过程中并不需要这样,这样介绍主要是为了快速在本地跑起来。

  • 回到Visual Studio 2019 主界面,点击启动,这样后台接口与网关就启动了。


启动前端ClientApp

  • 使用visual code 打开前端项目ClientApp

前端使用Vue开发,需要安装很多依赖包

  1. #安装依赖包
  2. npm install --registry=https://registry.npm.taobao.org
  3. #启动前端页面,地址:localhost:5001,这里请耐心等待,成功后会自动打开浏览器
  4. npm run dev
  • 启动成功后,默认页面是登录页面,登录账号:alpha2008密码:alpha2008

问题交流

License

MIT

Free Software, Hell Yeah!

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

  1. 一个轻量级的.Net Core微服务快速开发的轮子

    前言     Adnc是一个轻量级的.Net Core微服务快速开发框架,同时也可以应用于单体架构系统的开发.框架基于JWT认证授权.集成了一系列微服务配套组件,代码简洁.易上手.学习成本低.开箱即用 ...

  2. 分享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo+SkyWalking的微服务开发框架

    集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo的微服务开发框架 Github源代码地址 htt ...

  3. spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版

    spring-boot-cloud-module spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版. 新手上路的绝佳模版,只有必要的配 ...

  4. 今天介绍一下自己的开源项目,一款以spring cloud alibaba为核心的微服务架构项目,为给企业与个人提供一个零开发基础的微服务架构。

    LaoCat-Spring-Cloud-Scaffold 一款以spring cloud alibab 为核心的微服务框架,主要目标为了提升自己的相关技术,也为了给企业与个人提供一个零开发基础的微服务 ...

  5. .NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯

    最近一段时间有些事情耽搁了更新,抱歉各位了. 上一篇我们简单的介绍了DotNetty通信框架,并简单的介绍了基于DotNetty实现了回路(Echo)通信过程. 我们来回忆一下上一个项目的整个流程: ...

  6. .NET Core微服务之路:利用DotNetty实现一个简单的通信过程

    上一篇我们已经全面的介绍过<基于gRPC服务发现与服务治理的方案>,我们先复习一下RPC的调用过程(笔者会在这一节的几篇文章中反复的强调这个过程调用方案),看下图

  7. kubernetes实战篇之部署一个.net core微服务项目

    目录 继上一篇kubernetes理论知识完结.本篇主要讲解基于nexus搭建一个docker镜像仓库(当然大家实践过程是不必完全跟着做,也可以搭建harbor仓库或者直接把镜像推送到docker h ...

  8. 推荐一个超牛的SpringCloud微服务项目,开发脚手架

    前言 Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权.认证后台管理系统,其中包含具备用户管理.资源权限管理.网关API 管理等多个模块,支持多业务系统 ...

  9. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

随机推荐

  1. Python中错误之 TypeError: object() takes no parameters、TypeError: this constructor takes no arguments

    TypeError: object() takes no parameters TypeError: this constructor takes no arguments 如下是学习python类时 ...

  2. 3、tensorflow变量运算,数学运算

    import tensorflow as tf import numpy as np a = tf.range(1,7) a = tf.reshape(a,[2,3]) b = tf.constant ...

  3. 查询满足条件的最新数据(逐步优化,mysql、达梦数据库)

    1.条件:报警信息表sensor_warning 2.需求: 查询当前车厢的.不同设备的.所有处理未完成的.不同报警原因的.时间最新的数据集合,最后按设备id或报警时间排序 3.原始sql,不满足实际 ...

  4. Alpha冲刺——序言篇(任务与计划)

    Alpha冲刺--序言篇(任务与计划) 1.整个项目预期的任务量 需求规格说明书 架构设计,原型设计,原型改进(给目标用户展现原型,并进一步理解需求) 编码规范完成.平台环境搭建完成.初步架构搭建 队 ...

  5. js实现元素范围内拖动

    元素拖拽,网上一堆的实现,其中很多是原生js写的,都不够简洁,甚至运行后看不到效果. 于是乎,安静地想了下,拖动元素貌似就是一个滑动事件的监听处理,具体操作如下: 1.一个外层DIV,或者直接用根节点 ...

  6. C++异常之七 标准库里的异常类

    标准库里的异常类 C++标准提供了一组标准异常类,这些类以基类 Exception 开始,标准程序库抛出的所有异常,都派生于该基类,这些类构成如图所示的异常类的派生继承关系,该基类提供一个成员函数 w ...

  7. sql server如何把退款总金额拆分到尽量少的多个订单中

    一.问题 原来有三个充值订单,现在要退款450元,如何分配才能让本次退款涉及的充值订单数量最少?具体数据参考下图: 二.解决方案 Step 1:对可退金额进行降序排列,以便优先使用可退金额比较大的订单 ...

  8. Spring @Scheduled Annotation

    1.Overview 这里我们将会学习Spring @Scheduled 标签,了解它是如何配置,如何设置定时任务. 关于它的使用,有两点简单的规则需要记住: ※它的方法应该是一个void返回值类型 ...

  9. layui的登录页面设计

    主要的结构 先导入layui的主要的js和css等 <html> <head> <meta charset="utf-8"> <title ...

  10. angular8 页面滚动到某一个特定位置

    背景:使用angular8安装的 Fuse-v8.0.0-demo 后台的框架 锚点: id='nearby' 流程:无论是点击触发方法也好,还是直接调用方法也好,这里只写 引入: import {C ...