初识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)


相关推荐

  • hexo-theme-matery_文字博客wordpress主题

    hexo-theme-matery_文字博客wordpress主题零、博客作用笔记:概念及部分功能演示;教程:安装和卸载教程;BUG:bug解决方案;优化:在能用的基础上增强实现;字典:汇总常用的知识,便于查阅;展示:个性化展示。一、更改导航栏颜色在主题文件的theme/matery/source/css/matery.css文件中,搜索.bg-color来修改背景颜色:.bg-color{/*backgrou…

  • HTML中设置背景图的两种方式「建议收藏」

    HTML中设置背景图的两种方式「建议收藏」HTML中设置背景图的两种方式1、background  background:url(images/search.png)no-repeattop;2、background-image  background-image:url(images/search.png);  background-repeat:no-repeat;

  • bs与cs的区别简述_bs和cs页面

    bs与cs的区别简述_bs和cs页面B/SB/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的,Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查。不依赖用户的电脑操作系统环境,只与浏览器环境有关,当然由于网页复杂性,又延伸出网页前端技术与后端技术,前端技术指的是在浏览器上编程的技术,比如:JS,HTML,CSS,这些前端技术是运行在客户端B

    2022年10月16日
  • 呼叫中心坐席功能都有哪些?

    呼叫中心坐席功能都有哪些?IPCC是IP呼叫中心(IPCallCenter)的简称,本质上是以IP技术和IP语音为主要应用技术的呼叫中心构建方式,即利用IP传输网来传输与交换语音、图像和文本等信息。(摘自百度百科)

  • 9款最好用的MySQL数据库客户端图形界面管理工具,第三款我用了10年

    9款最好用的MySQL数据库客户端图形界面管理工具,第三款我用了10年MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考。MySQL是一个非常流行的小型关系型数据

  • 网站目录权限设置

    网站目录权限设置

发表回复

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

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