surging+EFCore 服务实现入门
阅读原文时间:2023年07月16日阅读:1

准备工作

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

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章