一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

.NET企業(yè)級(jí)架構(gòu)解決方案:業(yè)務(wù)層

  引言

  Martin Fowler說(shuō)過(guò):“任何人都可以寫出計(jì)算機(jī)才能理解的代碼,只有寫出人能理解的代碼的程序員才是好程序員。”

每一個(gè)復(fù)雜的軟件都應(yīng)該按層來(lái)組織。每一層代表系統(tǒng)的一個(gè)邏輯部件。尤其是,業(yè)務(wù)層的模塊包括了所有使得系統(tǒng)運(yùn)行的時(shí)候和其它層交互所需要的功能算法和計(jì)算,其他層包括數(shù)據(jù)訪問(wèn)層DAL和表現(xiàn)層。

  業(yè)務(wù)層是任何分層系統(tǒng)的神經(jīng)中心,包含了大部分的核心邏輯。因?yàn)檫@個(gè)原因,它也經(jīng)常被叫做:業(yè)務(wù)邏輯層BLL。

  正文

  1、業(yè)務(wù)邏輯層是什么

  抽象的講,業(yè)務(wù)邏輯層是系統(tǒng)的一部分,用來(lái)處理和業(yè)務(wù)相關(guān)的任務(wù)。本質(zhì)上,業(yè)務(wù)邏輯層包括一系列執(zhí)行數(shù)據(jù)的操作。數(shù)據(jù)被模型化為問(wèn)題域的實(shí)體,例如:發(fā)票、用戶、訂單、清單。另一方面,包括一些操作,例如:創(chuàng)建一個(gè)發(fā)票,添加一個(gè)用戶,處理一個(gè)訂單。

  2、剖析業(yè)務(wù)層

  如果你從縱向來(lái)看業(yè)務(wù)邏輯層,你會(huì)發(fā)現(xiàn)一些業(yè)務(wù)模型的實(shí)體,表達(dá)用戶策略和需求的業(yè)務(wù)規(guī)則,實(shí)現(xiàn)自動(dòng)化功能的服務(wù),定義文檔和數(shù)據(jù)從一層流轉(zhuǎn)到一層的工作流。

  安全是一個(gè)在所有層都需要考慮的嚴(yán)重問(wèn)題,但是在業(yè)務(wù)邏輯層,代碼扮演一個(gè)用戶界面層的守門人。在業(yè)務(wù)邏輯層的安全是以角色為基礎(chǔ)的,或者是限制對(duì)業(yè)務(wù)對(duì)象的訪問(wèn),只對(duì)授權(quán)用戶開(kāi)放。

  2.1領(lǐng)域?qū)ο竽P?/p>

  領(lǐng)域?qū)ο竽P透鼉A向于對(duì)整個(gè)系統(tǒng)提供一個(gè)結(jié)構(gòu)化的視圖,包括實(shí)體的功能描述,實(shí)體間的關(guān)系,實(shí)體的職責(zé)。模型產(chǎn)生于用戶需求,使用UML的用例圖和類圖進(jìn)行文檔化。在模型中,你表示出用來(lái)存儲(chǔ)數(shù)據(jù)和暴露操作的真實(shí)世界元素。每一個(gè)實(shí)體代表模型中的一個(gè)角色,提供一些行為。每個(gè)實(shí)體都有自己的職責(zé),依據(jù)領(lǐng)域的關(guān)系進(jìn)行交互。

  很多應(yīng)用被打上復(fù)雜的標(biāo)記,實(shí)際上,如果你看到最終的技術(shù)實(shí)現(xiàn),你會(huì)發(fā)現(xiàn)是相對(duì)簡(jiǎn)單的。但是,整體來(lái)看這個(gè)應(yīng)用是復(fù)雜的,那是因?yàn)轭I(lǐng)域內(nèi)在的復(fù)雜性。通常來(lái)說(shuō),困難在于構(gòu)建一個(gè)適當(dāng)?shù)能浖P停皇亲罱K的實(shí)現(xiàn)。一個(gè)設(shè)計(jì)良好的模型,無(wú)論你運(yùn)行到哪里,可以解決任何難度的復(fù)雜性。

  對(duì)象模型和領(lǐng)域模型

  為了清晰起見(jiàn),讓我們確定一下“對(duì)象模型”和“領(lǐng)域模型”這兩個(gè)詞。盡管我們經(jīng)常會(huì)交替使用,實(shí)際上他們代表不同的事物,就算代表同一個(gè)事物的時(shí)候,他們的抽象級(jí)別也是不同的。我們所謂的“對(duì)象模型”就是簡(jiǎn)單的對(duì)象圖。對(duì)于如何設(shè)計(jì)和實(shí)現(xiàn)模型沒(méi)有限制。如果你有了一些相互關(guān)聯(lián)的類,就有了一個(gè)對(duì)象模型。就像你看到的,描述相當(dāng)通用,適用于大部分的解決方案。

  我們所謂的“領(lǐng)域模型”就是另外一回事了。領(lǐng)域模型是用來(lái)滿足一系列需求的對(duì)象模型。典型的,領(lǐng)域模型中的類沒(méi)有持久層的概念,是一種與其他幫助類庫(kù)中的類沒(méi)有關(guān)系的理想狀態(tài)。另外,領(lǐng)域模型設(shè)計(jì)用來(lái)解決特定的領(lǐng)域問(wèn)題,試圖從實(shí)體和它們之間的關(guān)系來(lái)抽象業(yè)務(wù)流程和數(shù)據(jù)流。

  記住領(lǐng)域模型也是一種特殊的設(shè)計(jì)模式,在后面我們會(huì)討論。

  2.2 領(lǐng)域?qū)嶓w

  從外部來(lái)看,業(yè)務(wù)邏輯層就是對(duì)業(yè)務(wù)對(duì)象的一系列操作。大多數(shù)情況,一個(gè)業(yè)務(wù)對(duì)象就是一個(gè)領(lǐng)域?qū)嶓w的實(shí)現(xiàn),也就是一個(gè)封裝了數(shù)據(jù)和行為的類。也可能是一些實(shí)現(xiàn)特殊計(jì)算的輔助類。業(yè)務(wù)邏輯層決定業(yè)務(wù)對(duì)象之間如何交互。它也為參與交互的模塊、業(yè)務(wù)對(duì)象強(qiáng)加了一些規(guī)則和流程。

  業(yè)務(wù)邏輯層處在一個(gè)分層系統(tǒng)的中間,和表現(xiàn)層、數(shù)據(jù)訪問(wèn)層交換信息。業(yè)務(wù)邏輯層的輸入和輸出不是非要業(yè)務(wù)對(duì)象不可。在大多數(shù)情況,架構(gòu)師更傾向于在跨層之間使用DTO(Data Transfer Objects)進(jìn)行數(shù)據(jù)傳輸。

業(yè)務(wù)對(duì)象和數(shù)據(jù)傳輸對(duì)象有什么不同呢?

  業(yè)務(wù)對(duì)象包含數(shù)據(jù)和行為,在業(yè)務(wù)邏輯中可以看做是充血的活動(dòng)對(duì)象。數(shù)據(jù)傳輸對(duì)象只是一個(gè)值對(duì)象,是包含數(shù)據(jù)沒(méi)有附加的行為。處于序列化的目的,在業(yè)務(wù)對(duì)象中存儲(chǔ)的數(shù)據(jù)需要被序列化到數(shù)據(jù)傳輸對(duì)象中。數(shù)據(jù)傳輸對(duì)象除了setter和getter以外沒(méi)有邏輯行為。在模型中,每一個(gè)領(lǐng)域?qū)嶓w類可能會(huì)對(duì)應(yīng)多個(gè)數(shù)據(jù)傳輸對(duì)象。為什么是多個(gè)數(shù)據(jù)傳輸對(duì)象呢?

  一個(gè)數(shù)據(jù)傳輸對(duì)象不是一個(gè)無(wú)行為的領(lǐng)域?qū)ο蟮暮?jiǎn)單副本。相反,一個(gè)數(shù)據(jù)傳輸對(duì)象代表一個(gè)在特定上下文環(huán)境使用的領(lǐng)域?qū)ο蟮淖蛹@纾涸谝粋€(gè)方法中,你需要一個(gè)只有Name和ID的CustomerDTO;其他地方你可能需要一個(gè)有Name、ID、Country、Contract的CustomerDTO。通常來(lái)說(shuō),一個(gè)領(lǐng)域?qū)ο笫且粋€(gè)包含很多對(duì)象的圖,例如:Customer包含orders,orderdetails,等等。

  重點(diǎn)

  關(guān)于DTO和OB的協(xié)同使用,可以引出一大串的、無(wú)意義的爭(zhēng)論。理論建議在任何情況下都是用DTO來(lái)減少層之間的耦合。實(shí)踐中,經(jīng)常會(huì)提醒我們已經(jīng)夠復(fù)雜的了,盡量避免不必要的附加?xùn)|西。作為一條實(shí)踐的準(zhǔn)則,我們建議在處理少于100個(gè)業(yè)務(wù)對(duì)象的模型的時(shí)候,你不需要這么做。在這些情況下,DTO和OB很可能很相似。

  2.3 業(yè)務(wù)規(guī)則

  在現(xiàn)實(shí)世界中的組織都是基于一系列的業(yè)務(wù)規(guī)則組成的。你可以爭(zhēng)論這些規(guī)則的級(jí)別,但是不可以否認(rèn)這些規(guī)則的存在。每一個(gè)組織都有追求的戰(zhàn)略,規(guī)則是實(shí)現(xiàn)戰(zhàn)略的主要規(guī)范。戰(zhàn)略指明了要達(dá)到的高度,規(guī)則明確了如何達(dá)到這個(gè)高度。

規(guī)范業(yè)務(wù)規(guī)則有各種方式。如果你生活和工作在一個(gè)完美的世界,每一個(gè)組織維護(hù)他自己的規(guī)則數(shù)據(jù)庫(kù),這樣在一個(gè)項(xiàng)目中的各個(gè)團(tuán)隊(duì)中就很容易共享這些規(guī)則。大多數(shù)情況不是這樣的,搜集業(yè)務(wù)規(guī)格的過(guò)程開(kāi)始于開(kāi)發(fā)項(xiàng)目。結(jié)果就是,業(yè)務(wù)規(guī)則在項(xiàng)目快要結(jié)束的時(shí)候才整理出來(lái),而且是在架構(gòu)師之間共享。

NET技術(shù).NET企業(yè)級(jí)架構(gòu)解決方案:業(yè)務(wù)層,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 婷婷激情在线视频 | 亚洲日韩中文字幕 | 国产免费观看视频 | 国产91嫩草精品 | 国产福利小视频在线播放观看 | 欧美激情在线免费 | 精品久久久久香蕉网 | 国产精品免费视频网站 | 国产精品欧美激情在线播放 | 九九这里只有精品视频 | 欧美人与zoxxxx视频 | 四虎影院色 | 色婷婷六月丁香在线观看 | 久久精品国产亚洲婷婷 | 中文在线第一页 | 精品一区二区香蕉 | 久久久久久久蜜桃 | 精品伊人久久久久7777人 | 成人ab片 | 国产欧美精品一区二区色综合 | 三级色网站 | 国产精品久久一区二区三区 | 欧美最猛性xxxxx黑人巨 | 男女牲交一级毛片 | 李雅在线观看一区国产 | 婷婷色在线播放 | 久久国产成人精品麻豆 | 国产黄色小视频在线观看 | 久久精品免费全国观看国产 | 麻豆国内精品久久久久久 | www欧美视频 | 成人国产精品999视频 | 久久综合久久综合久久综合 | 国产极品在线观看视频 | 好吊色在线 | 精品久久久久久久久中文字幕 | 中国美女一级毛片 | 久久精品国产自在一线 | 伊人不卡久久大香线蕉综合影院 | 伊人成人在线 | 日韩在线二区 |