进军ABP第一天:ABP理论知识
1.2.3 領(lǐng)域?qū)?/strong>
領(lǐng)域?qū)泳褪菢I(yè)務(wù)層,是一個(gè)項(xiàng)目的核心,所有業(yè)務(wù)規(guī)則都應(yīng)該在領(lǐng)域?qū)訉?shí)現(xiàn)。
?
( 實(shí)體(Entity )
實(shí)體代表業(yè)務(wù)領(lǐng)域的數(shù)據(jù)和操作,在實(shí)踐中,通過(guò)用來(lái)映射成數(shù)據(jù)庫(kù)表。
( 倉(cāng)儲(chǔ)(Repository )
倉(cāng)儲(chǔ)用來(lái)操作數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存取。倉(cāng)儲(chǔ)接口在領(lǐng)域?qū)佣x,而倉(cāng)儲(chǔ)的實(shí)現(xiàn)類應(yīng)該寫(xiě)在基礎(chǔ)設(shè)施層。
( 領(lǐng)域服務(wù)(Domain service )
當(dāng)處理的業(yè)務(wù)規(guī)則跨越兩個(gè)(及以上)實(shí)體時(shí),應(yīng)該寫(xiě)在領(lǐng)域服務(wù)方法里面。個(gè)人理解就是需要聯(lián)表/同時(shí)多表操作的時(shí)候就在領(lǐng)域服務(wù)寫(xiě)
?
領(lǐng)域事件(Domain Event )
在領(lǐng)域?qū)佑行┨囟ㄇ闆r發(fā)生時(shí)可以觸發(fā)領(lǐng)域事件,并且在相應(yīng)地方捕獲并處理它們。
( 工作單元(Unit of Work )
工作單元是一種設(shè)計(jì)模式,用于維護(hù)一個(gè)由已經(jīng)被修改(如增加、刪除和更新等)的業(yè)務(wù)對(duì)
象組成的列表。它負(fù)責(zé)協(xié)調(diào)這些業(yè)務(wù)對(duì)象的持久化工作及并發(fā)問(wèn)題。
?
1.2.4 應(yīng)用層、
應(yīng)用層提供一些應(yīng)用服務(wù)(Application Services)方法供展現(xiàn)層調(diào)用。
一個(gè)應(yīng)用服務(wù)方法接收一個(gè) DTO(數(shù)據(jù)傳輸對(duì)象)作為輸入?yún)?shù),使用這個(gè)輸入?yún)?shù)執(zhí)行特定的領(lǐng)域?qū)硬僮?#xff0c;并根據(jù)需要可返回另一個(gè) DTO。
在展現(xiàn)層到領(lǐng)域?qū)又g,不應(yīng)該接收或返回實(shí)體(Entity)對(duì)象,應(yīng)該進(jìn)行 DTO 映射。
一個(gè)應(yīng)用服務(wù)方法通常被認(rèn)為是一個(gè)工作單元(Unit of Work)。
用戶輸入?yún)?shù)的驗(yàn)證工作也應(yīng)該在應(yīng)用層實(shí)現(xiàn)。
ABP 提供了一個(gè)基礎(chǔ)架構(gòu)讓我們很容易地實(shí)現(xiàn)輸入?yún)?shù)有效性驗(yàn)證。
建議使用一種像 AutoMapper 這樣的工具來(lái)進(jìn)行實(shí)體與 DTO 之間的映射
?1.2.5 基礎(chǔ)設(shè)施層
當(dāng)在領(lǐng)域?qū)又袨槎x了倉(cāng)儲(chǔ)接口,應(yīng)該在基礎(chǔ)設(shè)施層中實(shí)現(xiàn)這些接口。可以使用 ORM 工
具,例如 EntityFramework 或 NHibernate。ABP 的基類已經(jīng)提供了對(duì)這兩種 ORM 工具的支
持。數(shù)據(jù)庫(kù)遷移也被用于這一層(我使用的是EntityFramework)
1.2.6 WEB 與展現(xiàn)層
Web 層使用 ASP.NET MVC 和 Web API 來(lái)實(shí)現(xiàn)。可分別用于多頁(yè)面應(yīng)用程序(MPA)和單
頁(yè)面應(yīng)用程序(SPA)。
在 SPA 中,所有資源被一次加載到客戶端瀏覽器中(或者先只加載核心資源,其他資源
懶加載),然后通過(guò) AJAX 調(diào)用服務(wù)端 WebApi 接口獲取數(shù)據(jù),再根據(jù)數(shù)據(jù)生成 HTML 代碼。
不會(huì)整個(gè)頁(yè)面刷新。現(xiàn)在已經(jīng)有很多 SPA 的 JS 框架,例如: AngularJs、 DurandalJs、
BackboneJs、EmberJs。 ABP 可以使用任何類似的前端框架,但是 ABP 提供了一些幫助類,
讓我們更方便地使用 AngularJs 和 DurandalJs。(個(gè)人理解就是..前端的一些東西封裝在后端隨時(shí)可以通過(guò)調(diào)用返回給前端展現(xiàn)相關(guān)效果)
以上是由ABP 框架中國(guó)小組(ABPFrameWorkGroup)翻譯的ABP Framework官方文檔當(dāng)中的內(nèi)容,我提取出一些點(diǎn)拿來(lái)記錄,現(xiàn)在開(kāi)始我自己的ABP初次項(xiàng)目。
項(xiàng)目計(jì)劃:
- 1.理解ABP運(yùn)轉(zhuǎn)過(guò)程,
- 2.理解各層之間的作用性
- 3.實(shí)踐體驗(yàn)用ABP的好處
項(xiàng)目文件夾截圖:
??
所使用IDE:VS2017
所使用.net framework版本:4.6.0
期待早日掌握ABP 今天:2017-10-24 09:26:46
轉(zhuǎn)載于:https://www.cnblogs.com/ncellit/p/7721930.html
總結(jié)
以上是生活随笔為你收集整理的进军ABP第一天:ABP理论知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 路虎极光汽车轮胎多少钱一个?
- 下一篇: 关于光耦隔离通讯中限流电阻的选取问题