您现在的位置是:网站首页> 内容页

surging+EFCore 服务实现入门

  • 奔驰宝马娱乐城
  • 2019-09-25
  • 420人已阅读
简介准备工作  本篇文章基于上篇基础上进行的,请先了解此篇  surging+CentOS7+docker+rancher2.0菜鸟部署运行笔记   开发环境 VisualStudi

准备工作

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

 

文章评论

Top