[.Net]使用Soa库+Abp搭建微服务项目框架(三):项目改造
上一章我们说道,如果要使各模块之间解耦,使得各自独立成服务,首先要解除各个模块之间的引用关系。
还记得上一章我们的小项目吗 ?们回到之前的代码上来,当前的项目架构如下图:
这次的任务是将它改造成面向服务体系的架构,是构建微服务的第一步改造:
一. 引入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值已经正确地显示
项目地址
[.Net]使用Soa库+Abp搭建微服务项目框架(三):项目改造的更多相关文章
- [Abp vNext微服务实践] - 框架分析
一.简介 abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.n ...
- ABP vNext微服务架构详细教程——项目部署
1. 基础配置 在之前的文章中,我们已经配置了Kubernetes集群并安装了管理工具Kubesphere,文章地址为:https://mp.weixin.qq.com/s/MgpdMv5A-fYxN ...
- Soa: 一个轻量级的微服务库
Soa 项目地址:Github:MatoApps/Soa 介绍 一个轻量级的微服务库,基于.Net 6 + Abp框架 可快速地将现有项目改造成为面向服务体系结构,实现模块间松耦合. 感谢 Rabbi ...
- 使用Yii2的Web框架搭建微服务框架
方法 使用自己的Yii2镜像作为基础 使用Yii2的Web框架搭建,为了节省搭建Yii2框架的时间,直接使用现有的Yii2项目,删除了业务相关的逻辑类,将这个代码库作为搭建微服务框架的基础,本身已经积 ...
- [Abp vNext微服务实践] - 文章目录
简介 ABP vNext是volosoft的新一代框架,ABP(vNext)完全使用.NET CORE和DDD(领域驱动)打造,目前GitHub已有6K+次提交,发布版本超过40次,Nuget包下载量 ...
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
- 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)
背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...
- spring cloud+.net core搭建微服务架构:服务注册(一)
背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...
- 从面向服务架构(SOA)学习:微服务时代应该借鉴的5条经验教训
[编者按]本文作者为 Matt McLarty,通过介绍 SOA 的兴衰变化,总结了微服务应该借鉴的5条经验教训.文章系国内 ITOM 管理平台 OneAPM 编译呈现. SOA 的兴衰变化让我们更了 ...
- [译]ABP vNext微服务演示,项目状态和路线图
译注: ABP的主要负责人hikalkan最近又发布了一篇博客, 说明了ABP vNext的微服务演示,项目状态和路线图.其中特意对ABP的中文社区进行了感谢! 本文翻译自该博客文章(https:// ...
随机推荐
- 深度学习应用篇-计算机视觉-语义分割综述[5]:FCN、SegNet、Deeplab等分割算法、常用二维三维半立体数据集汇总、前景展望等
深度学习应用篇-计算机视觉-语义分割综述[5]:FCN.SegNet.Deeplab等分割算法.常用二维三维半立体数据集汇总.前景展望等 语义分割综述(semantic segmentation) 1 ...
- ASP.NET Core 6.0+Vue.js 3 实战开发(视频)
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章或视频能成为你成长路上的垫脚石. 录制视频的体验 这是一个收费的视频,很抱歉,让您失望了. 我尝试做点收费的视频,不是因为我不 ...
- MyBatis踩坑之单字符条件比较
背景 Mybatis中可以使用 <choose><when>...</when></choose> 语句来实现条件选择,<when> 标签含 ...
- C++ map自定义比较函数遵守严格弱序
C++ map自定义比较函数遵守严格弱序 问题背景及定位 背景:这个问题是在将tablesaw(一个Java的数据处理项目)迁移到C++时出现的. 问题位置:SplitOn()函数,在数据流水线中的a ...
- CF-928(已更新:B C E)
CF-928 排名四千多,目前为止排名最高的一场~ E题我赛时基本上是猜的结论(但是也推了快一小时才想到有这个可能性),因此目前只能放个码在这(⊙﹏⊙) D的话问了学长思路,正在补了0-^-0 --但 ...
- 如何查看当前Ubuntu系统的版本-【转 https://www.cnblogs.com/chenxiaomeng/p/10038492.html】
如何查看当前Ubuntu系统的版本 一.系统位数 在控制台输入:sudo uname --m 如果显示i686,则表示安装了32位操作系统 如果显示 x86_64,则表示安装了64位操作系统 sudo ...
- 利用LiveReload插件实现vscode和谷歌浏览器实时刷新
说明 最近在研究CSS希望可以提升一个层次.在写DEMO练习的时候老是需要去谷歌浏览器手动刷新页面才能看到更改后的效果次数多了 我也受不了,这不我又请来了个帮手: LiveReload,名如其人,这家 ...
- Java集合框架学习(十一) Hashtable详解
Hashtable介绍 1. 继承自Dictionary; 2. 线程安全: 3. 支持Iterator和Enumeration: 4. key和value都不可为null; 5. 一般用于多线程环境 ...
- windows 上 ffmpeg 库的安装
真复杂啊 安装 ffmpeg 库有两种途径,一种是自己下载源码再去编译,另一种是使用 vcpkg 自动安装 一般情况下,第二种是最简单方便的,但是如果你需要使用 ffmpeg 的特定历史版本,那就有点 ...
- MASM32 - PlaySound的实现
MASM安装教程: https://blog.csdn.net/u010486308/article/details/105495848 代码参考: .model flat, stdcall opti ...