surging+EFCore 服务实现入门 - Go语言中文社区

surging+EFCore 服务实现入门


准备工作

  本篇文章基于上篇基础上进行的,请先了解此篇  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

开始干活

 1.新建.NETCore2.1 控制台程序项目解决方案

    我参照surging 的源码将服务模块分离出来,这样我们就不用操心网关怎么实现了,安心写我们的服务就行了。我也假模假样的用下DDD思想。

    

  surgingDemo.Data 我这边用于存放EF 实体,算是 基础设施层

  surgingDemo.IModuleServices.UserManager  用户管理模块接口

  surgingDemo.Modules.UserManager 用户管理模块实现

  surgingDemo.Sevices.server  服务层,配置好服务层网关会通过consul 发现服务

 2.EFCore+DBFirst 实现

  把 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 配置文件

1 "ConnectionString": "${Register_Conn}|192.168.56.2:8500" --设置consul的地址,根据实际情况配置
2 "EventBusConnection": "${EventBusConnection}|192.168.56.2"  --设置rabbitmq 的地址
3 
4 --在末尾增加sql连接字符串配置文件
5 "ConnectionStrings": {
6     "SqlServerStr": "${SqlServerStr}|Server=.;Database=test;User ID=sa;Password=S1a2;Trusted_Connection=False;"
7   }

   接下来新建一个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 

 

转载于:https://www.cnblogs.com/hankexia/p/9641565.html

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/adcyrhh5869/article/details/101346125
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-13 12:22:08
  • 阅读 ( 1523 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢