初识ABP vNext(12):模块的独立运行与托管

初识ABP vNext(12):模块的独立运行与托管

Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章。

前言

很久没更新这个系列。。。之前的章节中讲到ABP的模块是可以独立运行的,但是没有介绍具体怎么操作,本篇就来讨论一下模块如何独立运行,以及一些托管方式。本人也是处于摸索阶段,如有不对欢迎指出。

开始

模块运行

首先需要生成模块的数据库,修改HttpApi.HostIdentityServer项目的appsettings.json数据库连接字符串配置。

<span>初识ABP vNext(12):模块的独立运行与托管</span>

\modules\file-management\host\Xhznl.FileManagement.HttpApi.Host\appsettings.json:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

\modules\file-management\host\Xhznl.FileManagement.IdentityServer\appsettings.json:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

这样会生成2个数据库,如果你只需要一个数据库的话,就把FileManagement的那行配置去掉就好了。

打开程序包管理器控制台,默认项目选择IdentityServer,执行update-database

<span>初识ABP vNext(12):模块的独立运行与托管</span>

执行完成会生成Main数据库,其中是一些ABP的基础表。

<span>初识ABP vNext(12):模块的独立运行与托管</span>

继续将默认项目设置为HttpApi.Host执行add-migration Initial update-database

<span>初识ABP vNext(12):模块的独立运行与托管</span>

执行完成会生成Module数据库,其中是你模块的相关表。

<span>初识ABP vNext(12):模块的独立运行与托管</span>

此时这两个项目就可以正常运行了。

<span>初识ABP vNext(12):模块的独立运行与托管</span>

<span>初识ABP vNext(12):模块的独立运行与托管</span>

项目中可能有多个模块相互协作,如果将各个模块独立运行的话,不可能每个模块都创建一个Main数据库,所以部分ABP的通用模块的数据库表就用同一个就好了。

\modules\file-management\host\Xhznl.FileManagement.HttpApi.Host\appsettings.json:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

\modules\file-management\host\Xhznl.FileManagement.IdentityServer\appsettings.json:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

动态 C# API 客户端

当有多个独立部署的模块时,可能需要做一些网关之类的来统一入口,模块之间的相互调用也比较麻烦,本篇暂不讨论。下面介绍一下如何使用ABP的动态C# API客户端来调用远程模块。

ABP可以自动创建C# API 客户端代理来调用远程HTTP服务(REST APIS).通过这种方式,你不需要通过 HttpClient 或者其他低级的HTTP功能调用远程服务并获取数据.

前面的章节中,在主项目中将模块的Application层和Domain层的大部分项目都引用了一遍,那种方式是单体部署的情况,模块和主项目托管在同一个进程里。

下面使用C# API客户端来代理远程模块。

首先删除项目中模块的引用和DependsOn

<span>初识ABP vNext(12):模块的独立运行与托管</span>

然后在你需要调用模块的项目中,添加模块的HttpApi.Client项目的依赖即可。比如我这里的Xhznl.HelloAbp.HttpApi.Host项目:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

然后DependsOn

<span>初识ABP vNext(12):模块的独立运行与托管</span>

然后在appsettings.json中添加远程服务的地址配置:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

其中的FileManagement这个名称是来自模块的HttpApi.Client项目中的定义:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

接下来就可以像使用本地方法一样去使用远程服务了,因为HttpApi.Client是依赖于Application.Contracts项目的,所以你模块的所有服务接口都可以在这里使用,直接注入即可(前提是你的服务需要实现IRemoteService),ABP会自动帮你完成Http的远程调用。随便找个地方测试一下:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

接下来是模块项目,最好配合ABP的自动API控制器一起使用,如果你是自定义路由的话,可能会出现一些Could not found remote action的奇怪错误。

<span>初识ABP vNext(12):模块的独立运行与托管</span>

Auth服务地址也注意一下:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

下面给两个项目打上断点,测试一下流程是否正确:

<span>初识ABP vNext(12):模块的独立运行与托管</span>

<span>初识ABP vNext(12):模块的独立运行与托管</span>

可以看到,请求已经正常流转到模块项目中。

上面有些乱,总结一下重点:

  1. 添加HttpApi.Client引用
  2. 添加RemoteServices地址配置
  3. 注入服务接口进行使用

如果想托管模块的所有API,那么只需要再添加模块的HttpApi依赖即可。托管方式非常灵活,具体可以参考:模块化架构最佳实践 & 约定

最后

本篇就到这里。。。。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2635.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Ubuntu18.04的网络配置

    Ubuntu18.04的网络配置1、网络配置1首先打开虚拟网络编辑器进行配置,会加载几秒钟2点击更改设置1.3选择添加网络,添加一个Vment0,并设置为桥接模式,桥接到处设置为自动即可,如下图所示注意:这里有可能会出现问题:无法将网络更改为桥接状态,没有未桥接的主机网络适配器,解决办法请查看我的另外一章博客:https://blog.csdn.net/weixin_42108484/arti…

  • maven阿里云仓库配置_阿里docker仓库

    maven阿里云仓库配置_阿里docker仓库maven仓库1、阿里云maven仓库https://mvnrepository.com/artifact/com.aliyun2、仓库配置第一步:修改maven根目录下的conf文件夹中的setting.xml文件,内容如下:<mirrors><mirror><id>alimaven</id>&lt…

    2022年10月31日
  • UITextView 手势触发 TouchesBegan 函数

    UITextView 手势触发 TouchesBegan 函数前几天做了个手势可以改变文章字体大小的功能。开始,在当前view中添加一个UITextView,然后添加-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event函数,可怎么也触发不了,在网上找了些资料,说得也不是很清楚,今天把它总结下。       首先说原因吧,你把UITextView加载到当前view上,

  • pycharm怎么打包成exe文件_pycharm打包python程序

    pycharm怎么打包成exe文件_pycharm打包python程序如何将python中的文件打包成exe文件:首先,在cmd中输入pip3Installpyinstaller他就会开始下载pyinstaller下载成功后就点进去你想去打包的代码中,我使用的是pycharm,然后点击terminal,输入Pyinstaller-FXXXX.Py其中XXXX指的是你要打包的文件名,弄好之后你就成功将其打包成exe文件了,下载后里面会显示你的exe文件的路径,去找就好了,发送给别人的话我是压缩后发送的以下是pyinstaller功能的一些注..

  • html表格菜鸟教程_怎么把excel表格导入word

    html表格菜鸟教程_怎么把excel表格导入wordHTML基础之表格文章目录HTML基础之表格1.表格的定义2.表格的标签3.单元格边框(border)4.合并单元格4.1合并行单元格(colspan)4.2合并列单元格(rowspan)5.表格格式设置5.1单元格的对齐(align)(居中,左对齐,右对齐)5.2.背景色&图片(bgcolor&background)5.2.1单元格背景色&图片5.2.2表格背景色&图片5.3单元格的边距(cellpadding)5.4单元格间的距离(cel

  • nginx 基础命令

    nginx 基础命令nginx 基础命令

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号