日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/4 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初识ABP vNext(12):模块的独立运行与托管 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方藍字"小黑在哪里"關注我吧

  • 模塊運行

  • 動態 C# API 客戶端

前言

很久沒更新這個系列。。。之前的章節中講到ABP的模塊是可以獨立運行的,但是沒有介紹具體怎么操作,本篇就來討論一下模塊如何獨立運行,以及一些托管方式。本人也是處于摸索階段,如有不對歡迎指出。

開始

模塊運行

首先需要生成模塊的數據庫,修改HttpApi.Host和IdentityServer項目的appsettings.json數據庫連接字符串配置。

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

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

這樣會生成2個數據庫,如果你只需要一個數據庫的話,就把FileManagement的那行配置去掉就好了。

打開程序包管理器控制臺,默認項目選擇IdentityServer,執行update-database

執行完成會生成Main數據庫,其中是一些ABP的基礎表。

繼續將默認項目設置為HttpApi.Host執行add-migration Initial ?update-database

執行完成會生成Module數據庫,其中是你模塊的相關表。

此時這兩個項目就可以正常運行了。

項目中可能有多個模塊相互協作,如果將各個模塊獨立運行的話,不可能每個模塊都創建一個Main數據庫,所以部分ABP的通用模塊的數據庫表就用同一個就好了。

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

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

動態 C# API 客戶端

當有多個獨立部署的模塊時,可能需要做一些網關之類的來統一入口,模塊之間的相互調用也比較麻煩,本篇暫不討論。下面介紹一下如何使用ABP的動態C# API客戶端來調用遠程模塊。

ABP可以自動創建C# API 客戶端代理來調用遠程HTTP服務(REST APIS).通過這種方式,你不需要通過 HttpClient 或者其他低級的HTTP功能調用遠程服務并獲取數據.

前面的章節中,在主項目中將模塊的Application層和Domain層的大部分項目都引用了一遍,那種方式是單體部署的情況,模塊和主項目托管在同一個進程里。

下面使用C# API客戶端來代理遠程模塊。

首先刪除項目中模塊的引用和DependsOn

然后在你需要調用模塊的項目中,添加模塊的HttpApi.Client項目的依賴即可。比如我這里的Xhznl.HelloAbp.HttpApi.Host項目:

然后DependsOn:

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

其中的FileManagement這個名稱是來自模塊的HttpApi.Client項目中的定義:

接下來就可以像使用本地方法一樣去使用遠程服務了,因為HttpApi.Client是依賴于Application.Contracts項目的,所以你模塊的所有服務接口都可以在這里使用,直接注入即可(前提是你的服務需要實現IRemoteService),ABP會自動幫你完成Http的遠程調用。隨便找個地方測試一下:

接下來是模塊項目,最好配合ABP的自動API控制器一起使用,如果你是自定義路由的話,可能會出現一些Could not found remote action的奇怪錯誤。

Auth服務地址也注意一下:

下面給兩個項目打上斷點,測試一下流程是否正確:

可以看到,請求已經正常流轉到模塊項目中。

上面有些亂,總結一下重點:

  • 添加HttpApi.Client引用

  • 添加RemoteServices地址配置

  • 注入服務接口進行使用

  • 如果想托管模塊的所有API,那么只需要再添加模塊的HttpApi依賴即可。托管方式非常靈活,具體可以參考:模塊化架構最佳實踐 & 約定[1]

    最后

    本篇就到這里。。。。。。

    參考資料

    [1]

    模塊化架構最佳實踐 & 約定: https://docs.abp.io/zh-Hans/abp/latest/Best-Practices/Module-Architecture

    如果本文對您有用,

    不妨點個“”或者轉發朋友圈支持一下

    總結

    以上是生活随笔為你收集整理的初识ABP vNext(12):模块的独立运行与托管的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。