初识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依赖即可。托管方式非常灵活,具体可以参考:模块化架构最佳实践 & 约定

最后

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 免费使用谷歌云服务器一年多少钱_谷歌云服务器永久免费

    免费使用谷歌云服务器一年多少钱_谷歌云服务器永久免费上周自己撸了一年的谷歌云服务器,昨天也帮同事搞了一发。毕竟工作中还是少不了向西方取经。把自己的经验总结一下吧,方便后来之人。说一下前提条件:1.持有外币卡,例有VISA标识、万事达标识、JCB标识的信用卡2.可以上谷歌且有谷歌账号,没有的话自己注册一个。免费申请链接在这:https://cloud.google.com/free/进入申请界面后有一个国家/地区的选项,截止目前没有找到中国的,直接选择了美国即可账户类型选择个人,然后地址直接百度一下美国地址生成器然后找到对应的网站,复制粘贴

    2022年10月5日
    0
  • aop 概念详解「建议收藏」

    aop 概念详解「建议收藏」本文主要内容什么是Aop?SpringAOP中重要的一些概念详解SpringAOP硬编码实现什么是AOP?先看一下传统程序的流程,比如银行系统会有一个取款流程我们可以把方框里的流程合

    2022年6月30日
    17
  • iptable命令参数详解

    iptable命令参数详解###还不够详细,后期补充###开放某端口:iptables-IINPUT-ptcp–dport9000-jACCEPT关闭某端口:iptables-DINPUT-ptcp–dport80-jACCEPT屏蔽某个IP请求:iptables-IINPUT-s192.168.0.1-jDROP(屏蔽单个IP192.168.0.1…

    2022年5月8日
    45
  • cubieboard + busybox 打造mini系统「建议收藏」

    cubieboard + busybox 打造mini系统「建议收藏」本文打造一个迷你的LINUX系统,讲述了arm嵌入式设备的常用方法和过程。适合新手入门,当然最好还是知道什么是交叉编译,和懂得linux的基本命令。先说说大致的思路,要在cubieboard板子上跑起来一个linux需要四大件:uboot,script-bin,linux内核(uImage),rootfs(这个我们自己做)前面3个已经很多人写过相关的文章了,我们不厌其烦的也多做一遍

    2022年7月22日
    8
  • DirectX修复工具(DirectX Repair)修复工具V4.0增强版「建议收藏」

    DirectX修复工具(DirectXRepair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectXredist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。本程序为了应对一般电脑用户的使用,采用了易用的一键式设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校

    2022年4月13日
    122
  • C语言算法之将十进制数转换成二进制数[通俗易懂]

    C语言算法之将十进制数转换成二进制数[通俗易懂]导语:在C语言中没有将其他进制的数直接输出为二进制数的工具或方法,输出为八进制数可以用%o,输出为十六进制可以用%x,输出为二进制就要我们自行解决了。下面给大家讲述一下如何编程实现将十进制数转换成二进制数。先将源代码展示给大家:#include&lt;stdio.h&gt;voidmain(){//进制转换函数的声明inttransfer(intx)…

    2022年5月19日
    66

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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