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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

Abp v0.18.0 新版本: MVC Module 启动模板

發(fā)布時(shí)間:2023/12/4 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Abp v0.18.0 新版本: MVC Module 启动模板 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
0.18.0將于近期發(fā)布, 本文內(nèi)容針對(duì)于0.18.0版本.


MVC模塊啟動(dòng)模板

可用此模板開(kāi)發(fā)基于模塊開(kāi)發(fā)最佳實(shí)踐和約定的可復(fù)用?應(yīng)用程序模塊?. 它同樣適用于開(kāi)發(fā)微服務(wù).

如何開(kāi)始?

你可以使用ABP CLI創(chuàng)建基于此啟動(dòng)模板的新項(xiàng)目,或者你也可以在入門頁(yè)面創(chuàng)建并下載項(xiàng)目. 在這里我們使用CLI創(chuàng)建新項(xiàng)目.

如果未安裝ABP CLI,第一步是安裝ABP CLI

dotnet tool install -g Volo.Abp.Cli

然后使用?abp new?命令在空文件夾中創(chuàng)建新解決方案:

abp new Acme.IssueManagement -t mvc-module
  • Acme.IssueManagement?是解決方案的名稱, 如YourCompany.YourProduct. 你可以使用單級(jí)或多級(jí)名稱.

無(wú)用戶界面

默認(rèn)情況模板附帶一個(gè)UI,你可以使用--no-ui選項(xiàng)指定不包含UI層.

abp new Acme.IssueManagement -t mvc-module --no-ui

解決方案結(jié)構(gòu)

根據(jù)命令的選項(xiàng),會(huì)創(chuàng)建略有不同的解決方案結(jié)構(gòu). 如果未指定選項(xiàng),你會(huì)得到如下所示的解決方案:

項(xiàng)目組織在src和test和host文件夾中:

  • src?文件夾包含基于DDD原則分層的實(shí)際模塊.

  • test?文件夾包含單元和集成測(cè)試.

  • host?文件夾包含具有不同配置的應(yīng)用程序,用于演示在應(yīng)用程序中如何托管模塊. 這些不是模塊的一部分,但開(kāi)發(fā)時(shí)會(huì)很有用.

下圖展示了模塊的層和項(xiàng)目的依賴關(guān)系:

下面介紹解決方案中的項(xiàng)目及依賴關(guān)系:

.Domain.Shared 項(xiàng)目

項(xiàng)目包含常量,枚舉和其他對(duì)象,這些對(duì)象實(shí)際上是領(lǐng)域?qū)拥囊徊糠?但是解決方案中所有的層/項(xiàng)目中都會(huì)使用到.

例如?IssueType?枚舉和?IssueConts?類 (可能是?Issue?實(shí)體用到的常數(shù)字段,像MaxTitleLength)都適合放在這個(gè)項(xiàng)目中.

  • 該項(xiàng)目不依賴解決方案中的其他項(xiàng)目. 其他項(xiàng)目直接或間接依賴該項(xiàng)目.

.Domain 項(xiàng)目

解決方案的領(lǐng)域?qū)? 它主要包含?實(shí)體, 集合根,?領(lǐng)域服務(wù),?值類型,?倉(cāng)儲(chǔ)接口?和解決方案的其他領(lǐng)域?qū)ο?

例如?Issue?實(shí)體,?IssueManager?領(lǐng)域服務(wù)和?IIssueRepository?接口都適合放在這個(gè)項(xiàng)目中.

  • 它依賴?.Domain.Shared?項(xiàng)目,因?yàn)轫?xiàng)目中會(huì)用到它的一些常量,枚舉和定義其他對(duì)象.

.Application.Contracts 項(xiàng)目

項(xiàng)目主要包含?應(yīng)用服務(wù)?interfaces?和應(yīng)用層的?數(shù)據(jù)傳輸對(duì)象?(DTO). 它用于分離應(yīng)用層的接口和實(shí)現(xiàn). 這種方式可以將接口項(xiàng)目做為約定包共享給客戶端.

例如?IIssueAppService?接口和?IssueCreationDto?類都適合放在這個(gè)項(xiàng)目中.

  • 它依賴?.Domain.Shared?因?yàn)樗赡軙?huì)在應(yīng)用接口和DTO中使用常量,枚舉和其他的共享對(duì)象.

.Application 項(xiàng)目

項(xiàng)目包含?.Application.Contracts?項(xiàng)目的?應(yīng)用服務(wù)?接口實(shí)現(xiàn).

例如?IssueAppService?類適合放在這個(gè)項(xiàng)目中.

  • 它依賴?.Application.Contracts?項(xiàng)目, 因?yàn)樗枰獙?shí)現(xiàn)接口與使用DTO.

  • 它依賴?.Domain?項(xiàng)目,因?yàn)樗枰褂妙I(lǐng)域?qū)ο?實(shí)體,倉(cāng)儲(chǔ)接口等)執(zhí)行應(yīng)用程序邏輯.

.EntityFrameworkCore 項(xiàng)目

這是集成EF Core的項(xiàng)目. 它定義了?DbContext?并實(shí)現(xiàn)?.Domain?項(xiàng)目中定義的倉(cāng)儲(chǔ)接口.

  • 它依賴?.Domain?項(xiàng)目,因?yàn)樗枰脤?shí)體和倉(cāng)儲(chǔ)接口.

如果不需要使用EF Core,可以刪除此項(xiàng)目.

.MongoDB 項(xiàng)目

這是集成MongoDB的項(xiàng)目.

  • 它依賴?.Domain?項(xiàng)目,因?yàn)樗枰脤?shí)體和倉(cāng)儲(chǔ)接口.

如果不需要使用MongoDB,可以刪除此項(xiàng)目.

Test 項(xiàng)目

解決方案有多個(gè)測(cè)試項(xiàng)目,每一層都會(huì)有一個(gè):

  • .Domain.Tests?用于測(cè)試領(lǐng)域?qū)?

  • .Application.Tests?用于測(cè)試應(yīng)用層.

  • .EntityFrameworkCore.Tests?用于測(cè)試EF Core配置與自定義倉(cāng)儲(chǔ).

  • .MongoDB.Tests?用于測(cè)試MongoDB配置與自定義倉(cāng)儲(chǔ).

  • .TestBase?所有測(cè)試項(xiàng)目的基礎(chǔ)(共享)項(xiàng)目.

此外,?.HttpApi.Client.ConsoleTestApp?是一個(gè)控制臺(tái)應(yīng)用程序(不是自動(dòng)化測(cè)試項(xiàng)目),它用于演示DotNet應(yīng)用程序中HTTP API的用法.

測(cè)試項(xiàng)目是用于做集成測(cè)試的:

  • 它完全集成到ABP框架和應(yīng)用程序的所有服務(wù).

  • 如果數(shù)據(jù)庫(kù)提供程序是EF Core,測(cè)試項(xiàng)目會(huì)使用SQLite內(nèi)存數(shù)據(jù)庫(kù),如果是MongoDB,它使用Mongo2Go庫(kù).

  • 授權(quán)被禁用,任何的應(yīng)用服務(wù)都可以在測(cè)試中輕松調(diào)用.

你依然可以編寫單元測(cè)試,只不過(guò)它很難寫(因?yàn)槟阈枰獪?zhǔn)備mock/fake對(duì)象),但它的運(yùn)行速度更快(因?yàn)橹粶y(cè)試單個(gè)類并跳過(guò)所有初始化過(guò)程).

領(lǐng)域?qū)雍蛻?yīng)用層測(cè)試使用EF Core. 如果你刪除了EF Core集成項(xiàng)目或者要使用MongoDB測(cè)試這些層,需要手動(dòng)的修改項(xiàng)目引用和依賴.

Host 項(xiàng)目

解決方案中有一些宿主應(yīng)用程序可以在開(kāi)發(fā)時(shí)運(yùn)行模塊. 在開(kāi)發(fā)時(shí)會(huì)很有用. 除了正在開(kāi)發(fā)的模塊外,宿主應(yīng)用程序包括其他模塊:

宿主應(yīng)用程序支持兩種類型的場(chǎng)景.

單體 (統(tǒng)一) 應(yīng)用場(chǎng)景

如果模塊含有UI, 那么?.Web.Unified?應(yīng)用程序于在一個(gè)站點(diǎn)上托管UI和API. 它有自己的?appsettings.json?配置文件(包括數(shù)據(jù)庫(kù)連接字符串)和EF Core數(shù)據(jù)庫(kù)遷移.

.Web.Unified?應(yīng)用程序有一個(gè)名為YourProjectName_Unified的數(shù)據(jù)庫(kù)(本例中名為?IssueManagement_Unified).

如果你選擇了?--no-ui?選項(xiàng), 這個(gè)項(xiàng)目不會(huì)出現(xiàn)在你的解決方案中.

如何運(yùn)行?

將其設(shè)置成啟動(dòng)項(xiàng), 使用包管理控制臺(tái)運(yùn)行?Update-Database?命令遷移數(shù)據(jù)庫(kù),然后運(yùn)行應(yīng)用程序. 默認(rèn)用戶名:?admin?密碼:?1q2w3E*.

分離部署&數(shù)據(jù)庫(kù) 場(chǎng)景

在這個(gè)場(chǎng)景中,有三個(gè)應(yīng)用程序;

  • .IdentityServer?應(yīng)用程序是其他應(yīng)用程序使用的身份驗(yàn)證服務(wù)器,它有自己的?appsettings.json?包含數(shù)據(jù)庫(kù)連接字符串和其他配置.

  • .HttpApi.Host?托管模塊的HTTP API. 它有自己的?appsettings.json?包含數(shù)據(jù)庫(kù)連接字符串和其他配置.

  • .Web.Host?托管模塊的UI. 它包含?appsettings.json?文件, 但是其中沒(méi)有數(shù)據(jù)庫(kù)連接字符串, 因?yàn)樗恍枰B接到數(shù)據(jù)庫(kù), 它主要調(diào)用遠(yuǎn)程API服務(wù)器和身份認(rèn)證服務(wù)器.

下圖展示了應(yīng)用程序的關(guān)系:

.Web.Host?項(xiàng)目使用OpenId Connect身份認(rèn)證從.IdentityServer獲取當(dāng)前用戶的身份和訪問(wèn)令牌. 然后使用訪問(wèn)令牌調(diào)用?.HttpApi.Host. HTTP API 服務(wù)器使用bearer token驗(yàn)證訪問(wèn)令牌獲取當(dāng)前用戶聲明并授權(quán)用戶.

如何運(yùn)行?

你需要按照以下順序運(yùn)行應(yīng)用程序:

  • 首先, 運(yùn)行?.IdentityServer,因?yàn)槠渌麘?yīng)用程序依賴它做身份認(rèn)證.

  • 然后運(yùn)行?.HttpApi.Host,因?yàn)?Web.Host應(yīng)用程序使用API接口.

  • 最后運(yùn)行?.Web.Host?使用用戶名:?admin?密碼:?1q2w3E*?登錄到應(yīng)用程序.

原文地址:https://mp.weixin.qq.com/s/gyVPZgp6SC9NNBC6DLoMug

.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總?http://www.csharpkit.com?

總結(jié)

以上是生活随笔為你收集整理的Abp v0.18.0 新版本: MVC Module 启动模板的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。