成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

系統(tǒng)邊界設(shè)計

開發(fā) 架構(gòu)
做軟件架構(gòu)設(shè)計的時候,三層式體系結(jié)構(gòu)是一個很常套用的分層模式。三層式體系結(jié)構(gòu)中會將系統(tǒng)切割成為:PL(Presentation Layer)、BLL(Business Logic Layer)、DAL(Data Access Layer)。在這其中BLL是整個系統(tǒng)的系統(tǒng)核心,而DAL則是數(shù)據(jù)對象進出系統(tǒng)的系統(tǒng)邊界。

做軟件架構(gòu)設(shè)計的時候,三層式體系結(jié)構(gòu)是一個很常套用的分層模式。三層式體系結(jié)構(gòu)中會將系統(tǒng)切割成為:PL(Presentation Layer)、BLL(Business Logic Layer)、DAL(Data Access Layer)。在這其中BLL是整個系統(tǒng)的系統(tǒng)核心,而DAL則是數(shù)據(jù)對象進出系統(tǒng)的系統(tǒng)邊界。本篇文章討論實作系統(tǒng)時,系統(tǒng)核心與系統(tǒng)邊界之間的架構(gòu)如何設(shè)計,才能提高內(nèi)聚、減少耦合。

我們先假設(shè)系統(tǒng)設(shè)計時,將BLL、DAL各自獨立為一個DLL。而BLL里有Control對象操作Object對象、ObjectReposository對象用來提供功能給PL使用、DAL里則有ObjectReposository對象來封裝Object對象進出系統(tǒng)邊界的職責。這樣的系統(tǒng)架構(gòu)下,會發(fā)現(xiàn)Object對象,同時被BLL及DAL所使用。這個共享的Object對象,在系統(tǒng)里該如何存在是一件很有趣的問題。

思考Object對象在系統(tǒng)里該如何存在這件事,以最直覺方式來思考的話,會認為BLL層是「使用」Object對象,而DAL只是讓Object對象「通過」。那Object對象歸類進BLL里,應(yīng)該是可以接受的設(shè)計。

實作上卻會發(fā)現(xiàn),BLL里的Control對象要操作ObjectReposository對象,所以BLL層相依DAL層。而將Object對象歸類進BLL里,ObjectReposository對象要操作Object對象,又必須DAL相依BLL。這兩個相依,造成了設(shè)計上的循環(huán)相依。

Object對象放進BLL會有循環(huán)相依的問題,那將Object對象放進DAL也是會有同樣的問題發(fā)生。那干脆就將Object對象封裝成一個獨立DLL,這樣的設(shè)計避免BLL、DAL之間的循環(huán)相依,也提供了彈性讓DAL、Object對象的組合可以重用。

實作上這個設(shè)計可以正常工作,但這是架構(gòu)在「Object對象為貧血對象」這個前提上。假設(shè)Object對象不是貧血對象實作了部分系統(tǒng)功能,而BLL實作其他系統(tǒng)功能,當Object對象要重用BLL的系統(tǒng)功能時,就會造成循環(huán)相依的問題。而Object對象如果實作了所有系統(tǒng)功能,那BLL的存在就顯得多余。

在網(wǎng)絡(luò)上或設(shè)計架構(gòu)書籍里可以看到,將BLL要使用的邊界對象設(shè)計為接口封裝成一個獨立DLL,并且BLL相依于這個接口、DAL實作這個界面。這樣的設(shè)計避免BLL、DAL之間的循環(huán)相依,也提供了彈性讓BLL可以抽換DAL實作。

實作上這個設(shè)計可以正常工作,但還是架構(gòu)在「Object對象為貧血對象」這個前提上,無法解決這個前提造成的種種問題。

問題的解決方案其實沒那么困難,回到最直覺的設(shè)計,將Object對象歸類進BLL里,并且在BLL與DAL之間套用IoC,反轉(zhuǎn)Control對象與ObjectReposository對象之間的相依性。這樣的設(shè)計避免BLL、DAL之間的循環(huán)相依、提供了彈性讓BLL可以抽換DAL實作,并且加強了BLL的內(nèi)聚、減少BLL的耦合、……。。

但是這樣的設(shè)計在遇到重用Object對象的情景,例如:使用WCF來傳遞Object對象時,則必須要去考慮不同上下文(Context)關(guān)系來做設(shè)計。而「上下文關(guān)系」是另外一個有趣的議題,并且包含很多技術(shù)內(nèi)容。限于篇幅的關(guān)系,這部分內(nèi)容另外開主題再來討論。

本篇文章討論實作系統(tǒng)時,系統(tǒng)核心與系統(tǒng)邊界之間的架構(gòu)如何設(shè)計,并介紹提高內(nèi)聚、減少耦合的解決方案。這些基礎(chǔ)面向?qū)ο笤O(shè)計概念,閱讀起來會比較無趣,并且實作時也會遇到很多的困難。但仍希望開發(fā)人員能夠花點時間投資,畢竟現(xiàn)在很多新技術(shù),都是靠這些面向?qū)ο蟮脑O(shè)計去堆砌出來的。

原文鏈接:http://www.cnblogs.com/clark159/archive/2012/07/30/2616080.html

責任編輯:林師授 來源: 博客園
相關(guān)推薦

2022-04-20 15:55:29

容器架構(gòu)設(shè)計

2011-05-16 14:38:53

測試用例

2017-12-17 17:01:23

限界上下文系統(tǒng)模型

2024-02-26 10:44:29

2024-07-17 08:12:06

2010-12-21 17:39:59

2020-11-06 18:55:56

人臉識別刷臉安全

2011-11-21 13:59:24

BGP網(wǎng)關(guān)協(xié)議

2021-06-25 18:08:45

零信任

2010-12-24 13:05:22

2011-03-07 16:21:17

2021-12-09 08:50:35

Kubernetes增強功能版本更新

2024-06-28 09:59:35

2023-11-24 12:27:46

2024-06-25 15:21:57

2012-05-08 14:39:13

虛擬系統(tǒng)

2017-01-20 09:32:19

AB測試

2017-03-07 14:23:28

ITILDevOps交付

2022-08-26 08:18:04

軟件開發(fā)高級系統(tǒng)設(shè)計低級系統(tǒng)設(shè)計
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 天天曰天天曰 | 亚洲成人一区二区 | 国产免费拔擦拔擦8x高清 | 毛片一级片 | 一区二区手机在线 | 久久男人天堂 | 久草99| 天堂一区在线观看 | 99欧美精品 | 免费一级片| 国产99久久精品 | 国产精品福利视频 | 亚洲精品专区 | 国产探花在线精品一区二区 | 国产精品久久久久久久久免费丝袜 | 欧美成人精品一区二区男人看 | 日本午夜精品 | 国产成人99久久亚洲综合精品 | 国产精品久久久久久久久免费桃花 | 好好的日在线视频 | 亚洲成人毛片 | 亚洲高清视频在线观看 | 亚洲精品久久久久久宅男 | 国产一区二区在线免费观看 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 九九伦理片 | 美女高潮网站 | 久久精品91久久久久久再现 | 亚洲精品99久久久久久 | 亚洲 一区| 亚洲大片一区 | 久久国产精品一区二区 | 中文天堂网 | 亚洲男人的天堂网站 | 久久久精彩视频 | 天天爽夜夜操 | 久久久久国产精品 | 亚洲视频国产视频 | 黄色网络在线观看 | 亚洲第一黄色网 | 精品久久国产 |