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

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

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

前言

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

开始

模块运行

首先需要生成模块的数据库,修改HttpApi.Host和IdentityServer项目的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 策略模式解决多重if-else

    策略模式解决多重if-else

    2021年7月12日
  • shiro过滤放行方法_shiro框架原理

    shiro过滤放行方法_shiro框架原理之间工作中曾经用到过shiro这个权限控制的框架,之前一直都是停留在用的方面,没有过多的去理解这方面的知识,现在有时间,专门研究了一下这个Shiro权限的框架使用。Shiro是什么?ApacheShiro是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。ApacheShiro的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框…

    2022年9月7日
  • 如何把文件复制到桌面_如何把桌面文件放一起

    如何把文件复制到桌面_如何把桌面文件放一起如何解决电脑桌面文件无法删除问题电脑是现在最常用的工具之一,有些用户遇到了桌面文件无法删除问题,想知道如何解决,接下来小编就给大家介绍一下具体的操作步骤。具体如下:1.首先第一步鼠标右键单击桌面,在弹出的菜单栏中根据下图所示,点击【刷新】选项,查看是否删除文件,或者将电脑重新启动后再次删除。2.第二步如果仍然无法删除文件,则打开【计算机】窗口,根据下图所示,依次点击【组织-文件夹和搜索选项】。…

    2022年10月21日
  • Floyed理解「建议收藏」

    Floyed理解「建议收藏」Floyed理解 Floyd算法的本质是动态规划,其转移方程为:f(k,i,j)=min(f(k-1,i,j),f(k-1,i,k)+f(k-1,k,j))。f(k-1,i,j)表示经过前k-1个点f(k-1,i,k)+f(k-1,k,j)表示经过k这个点f(k,i,j)表示路径除开起点i与终点j,只经过前k个点中的某些点,从i到j的最小值。计算这个值只需要考…

    2022年6月29日
  • 抖音粉丝快速增长的有效方法 抖音怎么增加1000粉丝

    抖音粉丝快速增长的有效方法 抖音怎么增加1000粉丝同比淘宝、京东、拼多多等成熟的电商平台,抖音视频在短短几年内以“病毒式”的增长速度发展。很多人也想趁着这个风口,抢夺这块蛋糕。但对于,没有运营经验的人来说,账号要做起来并非是这么简单。那么想要做好抖音号,内容策划、账号定位、人群画像、发布时间该注意什么呢?抖音用户画像和人群分析人群性别:抖音的用户中,52%的用户为男性,48%的用户为女性,男女比例基本属于持平。另一方面,抖音的男性大多是理性消费者,女性大多是感性消费者。如果你的产品的针对人群是男性,内容应该偏向性价比、功能、

    2022年5月29日
  • Java开发手册之 ORM映射

    Java开发手册之 ORM映射Java开发手册之 ORM映射

    2022年4月22日

发表回复

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

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