abp專案如何按業務功能模組橫向分割?

2022-02-09 04:52:32 字數 3505 閱讀 7451

請先看專案分層的最後結構:

2.設計的初衷

專案較大,且主題鮮明,分為:bi模組、dm-使用者洞察模組、manage-應用管理模組、report應用分析報表模組,大模組之間並無依賴關係。

部分功能模組因為**存量很大,採用的是jquery+razor+mvc的技術棧,而現行的webapi+vue單頁面應用與之技術棧不同,所以不放在同乙個工程中並存使用,而是直接搬移舊**,做css樣式替換和許可權控制。

為什麼不通過sso拆開獨立子站點部署?體量不大,無需增大成本,以後如體量增大,大模組也可通過新增web.host工程單獨部署。

看這個即可。

如果是core專案,則無需麻煩,會自動成功,但是在netframework4.6下,會出現找不到控制器問題。

解決方案1:
以:sd_game分割,可看截圖。

public override void initialize()}}

解決方案2:

在分離的專案中引入abp,新建reportwebcoremudule.cs

[dependson(

typeof(abpaspnetcoremodule)

)]public class reportwebcoremudule : abpmodule

public override void postinitialize()

public override void preinitialize()

public override void initialize()}}

2.修改sd_game.web.host工程檔案中的webhostmodule.cs檔案

[dependson(

typeof(managewebcoremudule),

//依賴建立的模組,其他都不用修改

typeof(reportwebcoremudule),

typeof(biwebcoremudule),

typeof(dmwebcoremodule)

)]public class dmwebhostmodule : abpmodule

此時controller均可以找到,但是分離在類庫中的razor檔案會找不到。

解決方案:

修改:sd_game.report.web.core.csproj

此時,專案分離以及完成! 但是!在發布的時候,開啟子模組的razor頁面,會報錯:
system.invalidoperationexception: cannot find reference assembly 'microsoft.win32.primitives.dll' file for package microsoft.win32.primitives

在 microsoft.extensions.dependencymodel.resolution.referenceassemblypathresolver.tryresolveassemblypaths(compilationlibrary library, list`1 assemblies)

在 microsoft.extensions.dependencymodel.resolution.compositecompilationassemblyresolver.tryresolveassemblypaths(compilationlibrary library, list`1 assemblies)

在 microsoft.extensions.dependencymodel.compilationlibrary.resolvereferencepaths(icompilationassemblyresolver resolver, list`1 assemblies)

在 microsoft.extensions.dependencymodel.compilationlibrary.resolvereferencepaths()

在 system.linq.enumerable.d__17`2.movenext()

在 microsoft.aspnetcore.mvc.razor.compilation.metadatareferencefeatureprovider.populatefeature(ienumerable`1 parts, metadatareferencefeature feature)

在 microsoft.aspnetcore.mvc.razor.internal.defaultrazorreferencemanager.getcompilationreferences()

在 system.threading.lazyinitializer.ensureinitializedcore[t](t& target, boolean& initialized, object& synclock, func`1 valuefactory)

在 microsoft.aspnetcore.mvc.razor.internal.defaultrazorreferencemanager.get_compilationreferences()

在 microsoft.aspnetcore.mvc.razor.internal.lazymetadatareferencefeature.get_references()

在 microsoft.codeanalysis.razor.compilationtaghelperfeature.getdescriptors()

在 microsoft.aspnetcore.razor.language.defaultrazortaghelperbinderphase.executecore(razorcodedocument codedocument)

在 microsoft.aspnetcore.razor.language.razorenginephasebase.execute(razorcodedocument codedocument)

在 microsoft.aspnetcore.razor.language.defaultrazorengine.process(razorcodedocument document)

在 microsoft.aspnetcore.razor.language.defaultrazorprojectengine.processcore(razorcodedo

解決方案:

修改: sd_game.web.host.csproj

新增:

true

修改: sd_game.report.web.core.csproj

true

true

ok,完成專案剝離。

SQ專案 MM功能增強業務說明書

mm 功能增強說明。在mm業務中,增強開發眾多,分別有功能增強 系統開發 程式開發 報表查詢等 業務描述 採購訂單建立時,改變訂單型別後,清空所有行專案資料,避免使用者變相的可以修改訂單 功能操作 採購訂單建立時 增強程式 me process po cust process header 業務描述...

專案總結 如何上手乙個業務系統

作為乙個已經上線執行已久的業務系統,它的功能相對完備,若以乙個新手的姿態去上手,肯定都需要花些功夫,但我覺得可以從以下幾點去入手 當然,即便作為乙個老的團隊成員,對專案到底掌握到什麼程度,我覺得仍然可以通過以下幾點來衡量。只不過新手從以下幾點入手,每一點都只處在乙個較淺的層面,老的團隊成員,需要在每...

專案經理如何服務好業務人員

專案經理如何服務好業務人員 我個人所理解的業務主要工作就是拿單 使得產品達到客戶滿意度 收款,當然這一簡單的過程需要很多前提條件,做為專案經理,結合目前此產品現狀以及自己平時工作接觸到業務部分,我認為專案經理可以為業務人員服務的內容如下 1.充分理解產品 最終目標 與業務人員針對產品的一些溝通,沒有...