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 配置文件
"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
surging+EFCore 服务实现入门的更多相关文章
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大 ...
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图: 以上可以看出项目结构可以划分为4大块,1是surging的核心底层,2,3,4都可以 ...
- Surging 微服务框架使用入门
原文:Surging 微服务框架使用入门 前言 本文非 Surging 官方教程,只是自己学习的总结.如有哪里不对,还望指正. 我对 surging 的看法 我目前所在的公司采用架构就是类似与Sur ...
- (三)surging 微服务框架使用系列之我的第一个服务(审计日志)
前言:前面准备了那么久的准备工作,现在终于可以开始构建我们自己的服务了.这篇博客就让我们一起构建自己的第一个服务---审计日志. 首先我们先创建两个项目,一个控制台的服务启动项目,一个业务的实现项目. ...
- 微服务(入门四):identityServer的简单使用(客户端授权)
IdentityServer简介(摘自Identity官网) IdentityServer是将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET核心应用程序的中间件 ...
- 微服务(入门二):netcore通过consul注册服务
基础准备 1.创建asp.net core Web 应用程序选择Api 2.appsettings.json 配置consul服务器地址,以及本机ip和端口号信息 { "Logging&qu ...
- 微服务(入门三):netcore ocelot api网关结合consul服务发现
简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...
- 微服务(入门一):netcore安装部署consul
环境准备 vs开发环境:vs2017 consul版本: 1.4.4 netcore版本:2.1 安裝Consul 1.从官网下载consul到本地,选择系统对应的版本进行下载到本地,下载地址:h ...
- 一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装(转载 https://www.cnblogs.com/alangur/p/8339905.html)
(一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装 (1)下载erlang: http://www.erlang.org/download/otp_win64 ...
随机推荐
- Codeforces 158E Phone Talks:dp
题目链接:http://codeforces.com/problemset/problem/158/E 题意: 你有n个电话要接,每个电话打进来的时刻为第t[i]分钟,时长为d[i]分钟. 每一个电话 ...
- Codeforces 351B Jeff and Furik:概率 + 逆序对【结论题 or dp】
题目链接:http://codeforces.com/problemset/problem/351/B 题意: 给你一个1到n的排列a[i]. Jeff和Furik轮流操作,Jeff先手. Jeff每 ...
- PHP中有多态么
PHP中有多态么 一.总结 一句话总结:封装是类的构建过程,php具有:php也具有继承的特性.唯独这个多态,php体现的十分模糊.原因是php是弱类型语言. php不具有像java那种清晰的多态,不 ...
- Struts2 第一个入门小案例
1.加载类库 2 配置web.xml文件 3.开发视图层 4.开发控制层Action 5.配置struts.xml 6.部署运行
- Git_错误_01_failed to push some refs to 'git@github.com
在使用git 对源代码进行push到gitHub时可能会出错,信息如下 此时很多人会尝试下面的命令把当前分支代码上传到master分支上. $ git push -u origin master 但依 ...
- 201621123014《JAVA程序设计》第1周学习总结
1. 本章学习总结 关键字:JAVA特点.JDK.JVM.JRE.class.编译工具.JDK是JAVA的开发工具包,拥有JAVA需要的环境和各类JAVA工具,是JAVA的核心:JVM是JAVA虚拟机 ...
- bison 编译sql的基本知识
一.bison是干什么的? bison 是一个语法分析器,把用户输入的内容,根绝在.y文件中事先定义好的规则,构建一课语法分析树.(所谓的规则就是,匹配上对应字符之后,执行相应的动作.) 1.一个简单 ...
- C++中函数重载
C++中函数重载使用顶层const修饰参数和不使用const修饰参数效果是一样的,如果定义了这样的重载函数会报函数重定义的错误. 追其原因,C++中的函数传递方式有三种,一种是值传递,就是拷贝,一种是 ...
- linux命令学习笔记(6):rmdir 命令
今天学习一下linux中命令: rmdir命令.rmdir是常用的命令,该命令的功能是删除空目录,一个目录 被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.) ...
- ACM学习历程—HDU5407 CRB and Candies(数论)
Problem Description CRB has N different candies. He is going to eat K candies.He wonders how many co ...