本篇文章基于上篇基础上进行的,请先了解此篇 surging+CentOS7+docker+rancher2.0 菜鸟部署运行笔记
开发环境 Visual Studio 2017 15.5
数据库 sql server 2012
运行环境 虚拟机CentOS 7+Docker+Rancher 2.0+Consul+RabbmitMQ
surging项目下载地址 https://github.com/dotnetcore/surging
demo下载地址 https://github.com/q5934/surgingDemo0.9.git
我参照surging 的源码将服务模块分离出来,这样我们就不用操心网关怎么实现了,安心写我们的服务就行了。我也假模假样的用下DDD思想。
surgingDemo.Data 我这边用于存放EF 实体,算是 基础设施层
surgingDemo.IModuleServices.UserManager 用户管理模块接口
surgingDemo.Modules.UserManager 用户管理模块实现
surgingDemo.Sevices.server 服务层,配置好服务层网关会通过consul 发现服务
把 surgingDemo.Data设为启动项并 添加 nueget 包
Install-package Microsoft.EntityFrameworkCore --EF框架的核心包
Install-package Microsoft.EntityFrameworkCore.SqlServer --针对SqlServer数据库的扩展,使用SqlServer数据库必须
Install-package Microsoft.EntityFrameworkCore.Tools --用户根据现有的数据库生成模型代码等 ,更多参考 :https://docs.microsoft.com/zh-cn/ef/efcore-and-ef6/porting/port-edmx
根据数据生成实体模型,surgingDemo.Data设为启动项不然生成失败!
Scaffold-DbContext "Server=.;database=test;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models --根据自己数据自行修改参数
生成成功会创建Models文件 效果如下图
目前只是生成了默认的DbContext 我们要修改一下做成自定义配置连接字符串。稍后在启动服务的时候注册进去。
/// <summary>
/// 数据连接字符串
/// </summary>
public static string ConnectionString { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
//optionsBuilder.UseSqlServer("Server=.;database=test;Trusted\_Connection=True;");
optionsBuilder.UseSqlServer(ConnectionString);
}
}
依照surging中的surging.Services.Server 层我们将相关的配置文件和启动内容copy过来。
surging相关引用 可以通过nuget 进行安装,若是自己对网关进行过定制,那就引用生成后DLL。
Install-package Autofac.Extensions.DependencyInjection
Install-package Microsoft.Extensions.Logging
Install-package Microsoft.Extensions.Logging.Console
生成成功后,修改surgingSettings.json 配置文件
"ConnectionString": "${Register_Conn}|192.168.56.2:8500" --设置consul的地址,根据实际情况配置
"EventBusConnection": "${EventBusConnection}|192.168.56.2" --设置rabbitmq 的地址
--在末尾增加sql连接字符串配置文件
"ConnectionStrings": {
"SqlServerStr": "${SqlServerStr}|Server=.;Database=test;User ID=sa;Password=S1a2;Trusted_Connection=False;"
}
接下来新建一个user的接口和实现,接口文件以 Service 结尾并集成IserviceKey
[ServiceBundle("api/{Service}")] --这是surging的路由设置 必须加上
接口实现,必须继承 ProxyServiceBase
仓储层 ,必须继承 BaseRepository
这样我们的demo 程序算是完工了。。嘻嘻 开始run起来,前提是你要 surging 网关运行起来 consul和rabbitmq 配置好。
此处的Ip 就是服务的IP地址在VS 本地调试的时候可以设置成本机IP,不然在docker容器中的 网关找不到这个地址的。如果你surging是在本机VS 运行的设置成127.0.01 没毛病。当我们发布到 服务端到docker容器中的时候,要设置成 0.0.0.0 切记切记
运行成功后网关界面如下图
开始请求服务 ,Content-Type :application/json 一定要加不管是get请求还是post
成功后我们在调用获取用列表的方法
本地测试没毛病后,发布服务端 上传到,centos 7 上,docker build 镜像,映射好端口 ,数据库字符串的IP 记得改成本机IP 了用 . 运行不起来的,然后run起来 。。。(不清楚可以参考上篇网关发布教程)
demo 下载地址 https://github.com/q5934/surgingDemo0.9.git
如有疑问可加surging官方群:615562965
手机扫一扫
移动阅读更方便
你可能感兴趣的文章