上一章我们说道,如果要使各模块之间解耦,使得各自独立成服务,首先要解除各个模块之间的引用关系。
还记得上一章我们的小项目吗 ?们回到之前的代码上来,当前的项目架构如下图:

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

一. 引入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值已经正确地显示


本文介绍了将一个项目从单体架构改造为微服务的步骤,包括引入SOA库、建立抽象层、编写服务端Host代码、客户端调用代码以及服务层的实现。通过改造,实现了模块间的解耦,每个服务都能独立运行。最后通过Swagger进行接口调试,验证了改造的成功。
752

被折叠的 条评论
为什么被折叠?



