[.Net]使用Soa库+Abp搭建微服务项目框架(三):项目改造

19 篇文章 2 订阅

上一章我们说道,如果要使各模块之间解耦,使得各自独立成服务,首先要解除各个模块之间的引用关系。

还记得上一章我们的小项目吗 ?们回到之前的代码上来,当前的项目架构如下图:

这次的任务是将它改造成面向服务体系的架构,是构建微服务的第一步改造:

一. 引入Soa库

首先将Soa库的三个项目引入到基础设施层:

二. 建立抽象层

  •  创建Interface文件夹,分别创建MatoProject.IService1、MatoProject.IService2 类库项目
  • 创建接口,继承于ISoaService,
  • 配置接口方法成员的SoaService属性和接口的SoaServiceRoute属性
  • 在领域层引用抽象层,并在各Manager中实现这个接口定义的方法 

三. 编写服务端Host代码

  •  创建ServiceHost文件夹,分别创建MatoProject.Service1.Host、MatoProject.Service2.Host 控制台项目

  • 项目添加appsettings.json,并配置好数据库连接字符串,并将文件的属性-复制到输出目录设置为“如果较新则复制”
  • 在程序入口点Program.cs 中编写服务启动代码:

 

  • 两个控制台应用作为Abp的模块,需要添加一个模块类,并继承自AbpModule
  • 重写PreInitialize方法并配置默认数据库配置名称

  • 重写Initialize方法并配置好Ioc

 四. 编写客户端调用代码

打开MatoProject.Web.Core项目中的MatoProjectWebCoreModule.cs,重写PostInitialize方法并配置好客户端相关配置

 解决方案属性,设置启动项目为三个Host

 五. 编写服务层代码

  • 回到服务层MainService.cs,添加两个接口声明

 

  • 在构造函数中注入IServiceProxy对象,并分别调用GetService方法将两个服务实例化

  •  GetExtends方法不需要作额外的修改,依旧是

 至此,所有的准备工作就绪。

 运行项目,打开swagger界面,调试请求GetExtends接口,发现type和num值已经正确地显示

项目地址​​​​​​​

jevonsflash/Soa: (github.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林晓lx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值