2019年02月24日,终于完成之前的项目。发现多年的工作开发节奏有点脱节了,刚好有时间多学一下,同时在这里记录一下爬坑遇到的问题。之前一直使用WEB API 做单点服务端开发,其中涉及到 ASP.NET WEB PAGE , MVC 等基础技术,这次想感受下‘ .Net Core。
首先感谢前辈,参考下面两个帖子开工
surging 微服务框架使用系列之surging
【.NET CORE】Surging 分布式微服务框架使用入门
首先确定一个小目标,因为之前项目都是WEB API和VUE , 其他也不多想了,就搞个小例子出来。
rabbitmq 消息队列处理
下载地址 http://www.rabbitmq.com/download.html
这玩意需要 erlang/otp
下载地址 http://www.erlang.org/download/otp_win64_17.3.exe
surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用
git clone https://github.com/dotnetcore/surging.git
Consul 服务注册中心
下载地址:https://www.consul.io/downloads.html
.NET Core 2.2
https://dotnet.microsoft.com/download/visual-studio-sdks?utm_source=getdotnetsdk&utm_medium=referral
【1】 Rabbitmq (注意:目前为止还不在清楚这东西干嘛的T_T)
打开 http://localhost:15672/ 用户名跟密码均是 guest,guest
在rabbitmq安装目录中的sbin目录中执行
rabbitmq-plugins enable rabbitmq_management
重新启动服务
注意: 这里有一点就是,按照上面说的需要修改配置额文件,但是我添加了用户和权限后直接就可以远程访问登录,不知道是不是版本问。
【2】 Consul 作为服务注册中心
参考这个吧 https://www.cnblogs.com/alangur/p/8377977.html
Consul.exe 可执行文件 后面我们会用到
【3】 开始学习大拿们代码吧
Surging Demo
clone代码 git clone https://github.com/billyang/SurgingDemo.git
亲亲真是好人,git 之后包含surging 和 他的 demo
我先学一下基础,看看代码 并没有导入数据文件
打开后编译成功(其实这是个假象,由于版本的不一致,出来了一堆错误,哎 慢慢解决吧)
.UseLog4net(“log4net.config”) 这句代码执行的时候老出现错误说找不到参数,后面没办法修改了一下代码稍后我们在讨论。
至此,SurgingDemo的环境已经搭建完成
【4】 我们尝试跑起来运行一下
开启Consul服务
命令行执行 consul agent -dev 开启调试环境
window power shell ./consul agent -dev
开启服务网关 surging
命令行执行 dotnet run Surging.ApiGateway
dotnet Bill.Demo.Services.Server.dll
这里注意:
调用这几个指定需要在文件对应的目录下
Surging.ApiGateway 对应 项目路径 surging\src\Surging.ApiGateway
Bill.Demo.Services.Server.dll 对应项目下 bin\Debug\netcoreapp2.2
consul agent -dev 执行后 浏览器中打开管理页面
http://127.0.0.1:8500
dotnet run Surging.ApiGateway 网关开启后
127.0.0.1:729 如 下图
dotnet Bill.Demo.Services.Server.dll 开启例子中的服务(这里会报错崩溃,稍后在说吧)
然后查看网关管理服务已经添加进去了
这里我们已经成功的部署了一个Demo,然后开心的看代码学习吧
找不到物理文件 (这问题我抓狂好久) 路径也改了
就是不行,还是改回来吧
把配置未见从configs里面拿出来
运行错误继续,经过多次调试发现,不止一个地方调用这个配置文件
这个方法跟踪进去看看
UseLog4net(“log4net.config”)
public static IServiceHostBuilder UseLog4net(this IServiceHostBuilder hostBuilder,string log4NetConfigFile= "log4net.config")
{
hostBuilder.ConfigureLogging(logger =>
{
var section = CPlatform.AppConfig.GetSection("Logging");
// 这里代码修改下吧 根本获取不到 Logging 配置文件也没这个东西
//logger.AddConfiguration(CPlatform.AppConfig.GetSection("Logging"));
// 如果是空我们就不添加了 哎
if(section.Exists())
logger.AddConfiguration(section);
});
return hostBuilder.MapServices(mapper =>
{
var section = CPlatform.AppConfig.GetSection("Logging");
log4NetConfigFile = EnvironmentHelper.GetEnvironmentVariable(log4NetConfigFile);
mapper.Resolve().AddProvider(new Log4NetProvider(log4NetConfigFile));
});
}
然后编译运行
重新开启以下服务
dotnet Bill.Demo.Services.Server.dll
其实整个弄来来真是一头雾水,只能慢慢消化了,下来参考这个Demo 我们自己也写一个demo,写好了在来记录吧