日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
架構(gòu)設(shè)計(jì)中服務(wù)層的簡(jiǎn)單理解

在ddd設(shè)計(jì)中我們經(jīng)常會(huì)提到服務(wù)層,服務(wù)層是什么?職責(zé)是什么?有什么好處?。

成都創(chuàng)新互聯(lián)客戶(hù)idc服務(wù)中心,提供四川聯(lián)通機(jī)房服務(wù)器托管、成都服務(wù)器、成都主機(jī)托管、成都雙線(xiàn)服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過(guò)各地的服務(wù)中心,我們向成都用戶(hù)提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開(kāi)放、透明、穩(wěn)定、高性?xún)r(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。

先看簡(jiǎn)單的層次圖(注:這里并沒(méi)有考慮其他多余的領(lǐng)域邏輯數(shù)據(jù)層存儲(chǔ),或者UOW這些細(xì)節(jié))

我的理解是服務(wù)層是處于我的應(yīng)用程序業(yè)務(wù)層和表現(xiàn)層之間的應(yīng)用程序邊界,邊界可能是很薄的一層類(lèi)設(shè)計(jì)或者是分布式服務(wù)網(wǎng)絡(luò)躍點(diǎn)。它是一個(gè)與技術(shù)無(wú)關(guān)的名詞。由表現(xiàn)層直接調(diào)用,契約,執(zhí)行命令(修改狀態(tài)(CUD))或者是查詢(xún)返回dto(數(shù)據(jù)遷移對(duì)象)(cms,命令-查詢(xún)分離)。他對(duì)業(yè)務(wù)邏輯層接口很清楚,組織業(yè)務(wù)邏輯 微服務(wù)形成宏服務(wù),適配表現(xiàn)層。

這里談到宏服務(wù)和微服務(wù),宏服務(wù)有一些列粗粒度的服務(wù)組成。用戶(hù)的一次操作usecase,比如電子商務(wù)下單,CreateOrder就是一個(gè)宏服務(wù),而不是下單中的細(xì)粒度的商品庫(kù)存檢查,訂單合法性等。而與之對(duì)應(yīng)的微服務(wù)(有時(shí)也叫應(yīng)用程序服務(wù)),則表現(xiàn)為問(wèn)題領(lǐng)域邏輯細(xì)節(jié),就如上面的庫(kù)存檢查和合法性檢查這些細(xì)粒度的服務(wù)。宏服務(wù)是由一個(gè)或者多個(gè)微服務(wù)組成,有時(shí)我們的usecase邏輯很簡(jiǎn)單服務(wù)層僅由單一微服務(wù)組成,變現(xiàn)為很簡(jiǎn)單的幾句微服務(wù)調(diào)用。

服務(wù)層的職責(zé):

1:在面軟件開(kāi)發(fā)不管是結(jié)構(gòu)化編程(sp)還是面向?qū)ο缶幊蹋╫op)我們一直都強(qiáng)調(diào)高內(nèi)聚低耦合,分離關(guān)注點(diǎn)(soc)。服務(wù)層處于應(yīng)用程序和業(yè)務(wù)層之間,應(yīng)用邊界,使得兩次直接解耦,利用第三個(gè)對(duì)象破壞兩對(duì)象直接的依賴(lài),并轉(zhuǎn)化適配領(lǐng)域?qū)ο螅╠o)和試圖對(duì)象(vo)的差異。

2:服務(wù)層隱藏了業(yè)務(wù)邏輯層的細(xì)節(jié),其內(nèi)部需要組織業(yè)務(wù)微服務(wù),提供更宏觀,面向表現(xiàn)層的服務(wù)邏輯,利用契約接口暴露,包裝。系統(tǒng)所有的交互都是從表現(xiàn)層進(jìn)入。

目前流行SOA架構(gòu),提供了一種分布式服務(wù)架構(gòu),以服務(wù)為關(guān)注點(diǎn),提高服務(wù)和業(yè)務(wù)邏輯的重用,但是這里說(shuō)的服務(wù)并不是特定的技術(shù)wcf或者 webservice,服務(wù)同時(shí)候可能是一次規(guī)定契約的一些列粗粒度組織的類(lèi)組成。但是利用SOA或者M(jìn)TS建立服務(wù)會(huì)讓我們的服務(wù)得到跟多的附加優(yōu)勢(shì),例如安全,事物,日志,擴(kuò)展性的提升。

服務(wù)層帶來(lái)的優(yōu)勢(shì):如上所述服務(wù)層為表現(xiàn)層提供的同一的接口契約和入口。讓我們的業(yè)務(wù)層可以關(guān)注與實(shí)現(xiàn)問(wèn)題領(lǐng)域邏輯,問(wèn)題領(lǐng)域?qū)嶋H需求。組織微服務(wù)避免太多的細(xì)粒度服務(wù)的調(diào)用充斥在我們的項(xiàng)目表現(xiàn)層和問(wèn)題領(lǐng)域中,過(guò)多的交互。如果采用soa等服務(wù)領(lǐng)域可以讓我們的應(yīng)用程序輕易的跨過(guò)應(yīng)用程序邊界和網(wǎng)絡(luò)躍點(diǎn)。但是需要付出一點(diǎn)的性能代價(jià)。

數(shù)據(jù)遷移對(duì)象(dto)就是攜帶數(shù)據(jù)穿過(guò)應(yīng)用程序邊界的對(duì)象,減少數(shù)據(jù)的交互次數(shù),常常我們將其作為值對(duì)象,只是一組簡(jiǎn)單的get,set屬性組成,不存在行為操作,僅僅為數(shù)據(jù)的載體。在領(lǐng)域設(shè)計(jì)中dto是一個(gè)很重要的模式,不是我們所有的領(lǐng)域?qū)ο蠖寄茌p松的到達(dá)表現(xiàn)層,僅僅表現(xiàn)層和領(lǐng)域?qū)硬渴鹪谕晃锢砦恢?。如果需要穿過(guò)網(wǎng)絡(luò)躍點(diǎn)或者進(jìn)程邊界,因?yàn)轭I(lǐng)域?qū)ο笫刮覀兊臉I(yè)務(wù)的核心存在很多的自然世界的關(guān)系,依賴(lài),甚至可能存在循環(huán)依賴(lài)比如電商用戶(hù)和訂單,用戶(hù)用戶(hù)一組訂單的集合,而每個(gè)訂單都指向一個(gè)特定的用戶(hù),我們就必須破換掉這種循環(huán)依賴(lài),才可能使其可序列化,穿過(guò)躍點(diǎn)。其次我們的領(lǐng)域?qū)ο笸际且欢杨I(lǐng)域富對(duì)象,存在大量數(shù)據(jù),很多時(shí)候我們的場(chǎng)景并不需要全部的數(shù)據(jù)信息。有了dto的存在就能很好的解決這些問(wèn)題,是的我們的項(xiàng)目變得 simple(keep it simple,Stupid。 KISS原則)。

但是與此同時(shí)dto存在會(huì)為我們帶來(lái)一些額外的復(fù)雜度,我們必須有一層do到dto的映射適配層。

理論上***的設(shè)計(jì)我們需要為每一個(gè)應(yīng)用定義一個(gè)dto,但是在一個(gè)復(fù)雜的系統(tǒng)中我們可能存在很多的領(lǐng)域?qū)ο?,加?00個(gè)do,每個(gè)do一般都會(huì)存在多個(gè) dto,這將一個(gè)增加一個(gè)龐大的集合和mapping邏輯,對(duì)于維護(hù)也存在不小的挑戰(zhàn)。在軟件領(lǐng)域存在一句話(huà)就是bug的數(shù)量隨著代碼量增加,代碼量增加需要測(cè)試點(diǎn)也隨著增加。除非我們必須跨越應(yīng)用程序網(wǎng)絡(luò)躍點(diǎn)邊界,我覺(jué)得否則我們也可以存在一些簡(jiǎn)單do的直接使用。根據(jù)世界項(xiàng)目,情形由我們的架構(gòu)師決定。


新聞標(biāo)題:架構(gòu)設(shè)計(jì)中服務(wù)層的簡(jiǎn)單理解
鏈接分享:http://m.5511xx.com/article/cdgogcs.html