Duwamish架構分析篇

2021-09-05 13:31:57 字數 4049 閱讀 7294

duwamish

是microsoft

提供乙個企業級的分布式系統架構,如果開發企業級的分布式系統,可以模仿這種架構,如果是開發一些簡單的系統,則完全可以簡化。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

以前也學習過

duwamish

範例,只是發現不同時間,不同經歷,有不同的體會。正如盧彥所說的一樣:通過研究

duwamish

示例,高手能夠領悟到

.net

應用架構的設計思想,低手能夠學習到

.net

的程式設計技巧,實在是老少皆宜。

因此,這裡再次學習並體驗一次

duwamish

範例。

1duwamish 7.0結構分為四個邏輯層(from msdn):

web 層-

presentation

web

層為客戶端提供對應用程式的訪問。這一層是作為

duwamish.sln

解決方案檔案中的

web

專案實現的。

web

層由asp.net web

窗體和**隱藏檔案組成。

web

窗體只是用

html

提供使用者操作,而**隱藏檔案實現各種控制項的事件處理。

業務外觀層

-business facade

業務外觀層為

web

層提供處理帳戶、類別瀏覽和購書的介面。這一層是作為

duwamish.sln

解決方案檔案中的

businessfacade

專案實現的。業務外觀層用作隔離層,它將使用者介面與各種業務功能的實現隔離開來。除了低階系統和支援功能之外,對資料庫伺服器的所有呼叫都是通過此程式集進行的。

業務規則層

-business rules

業務規則層是作為

duwamish.sln

解決方案檔案中的

businessrules

專案實現的,它包含各種業務規則和邏輯的實現。業務規則完成如客戶帳戶和書籍訂單的驗證這樣的任務。

資料訪問層

-data access

資料訪問層為業務規則層提供資料服務。這一層是作為

duwamish.sln

解決方案檔案中的

dataaccess

專案實現的。

除了上述四個邏輯層外,

duwamish 7.0

還包含封裝在

duwamish.sln

解決方案檔案中的

common

專案內的共享函式。「通用」

(common)

層包含用於在各層間傳遞資訊的資料集。

common

專案還包含

duwamish.sln

解決方案檔案中的

systemframework

專案內的應用程式配置和跟蹤類。

2,各個邏輯層之間的關係圖(from msdn)及其呼叫sequeance圖示例:

下面是categories.aspx web

頁面獲取

category

的description

的整個呼叫過程。 (

1)例項化

productsystem物件

(2)呼叫productsystem

的getcategories()方法

(3)檢測引數的合法性 (

4)建立

categories::dataaccess

物件例項 (

5)返回上述物件 (

6)呼叫

categories::dataaccess

物件的getcategories()方法

(7)建立categorydata::common

物件例項 (

8)返回上述物件 (

9)返回

categorydata::common

物件例項,該例項中已經包含了需要的資料 (

10)返回

categorydata::common

物件例項給

web/client端

(11)檢測資料的合法性 (

12)讀取並顯示結果:

category

的description

專案包含一些

需要的配置引數,

日誌類和

引數校驗類。

systemframework

專案為所有其他的專案所引用。

common

專案包含了用於在各層間傳遞資訊的資料集,如上述的

categorydata

繼承system.data.dataset

,既不是所謂的

typed dataset

,也不是一般的

dataset

,不過簡單實用,這是基於

.net remoting

開發分布式系統用來

tier

與tier

之間互動資料的一種方法。

common

專案也被其他的專案引用,

systemframework

專案除外。

businessfacade

專案中所有的

classes

繼承marshalbyrefobject

class

,顯然是讓準備將

businessfacade tier

部署為remote objects

。不過,實際上預設這裡並沒有將其部署為

remote objects

,web

層仍然呼叫本地物件(《duwamish部署方案篇》將分析這個問題)。

3summary

在開發基於

.net framework

企業級分布式系統時,上述架構值得推薦,但也並非完美無暇,實際上存在一些值得改進的地方。顯然,不可能乙個範例適合所有的實際情況麼,要求太苛刻了。其實,

enterprise samples

中的另外乙個範例

fitch and mather 7.0

,其架構和

duwamish

就有些不同了。

如果是開發本地的系統,就不要模仿

duwamish

架構(看看上面獲取

category

的description

呼叫過程就知道了,太費勁。),如

business facade

和business rules

中classes

應採用fine-grained inte***ce

設計,層與層之間的互動引數也不必全部採用

dataset

,適當的時候採用

setter/getter

就可以了,這樣不僅可以提高開發效率,而且有助於提高

performance, maintainability and

reusability。

references:

1,

盧彥, duwamish

深入剖析

-結構篇

, 2, msdn, duwamish

Duwamish7架構分層分析

duwamish7架構分層分析 1.總的感覺 使用的不是一種純粹的oo的實現方法,基本上可以看作一種組合良好的事務指令碼的寫法。但是這種寫法我個人不是很推薦,關鍵有下面幾點遺憾 1 沒有用oo的寫法,而將實體的資料部分放在了common,而將它的方法又散落到了businessrules busine...

MySQL(架構) 先導篇

評價網際網路產品,通常會有一項重要指標,那就是使用者量,隨著物聯網的發展,越來越多的資訊被記錄到網路中。這對資料庫的效能就有了更高的要求,不論哪種資料庫,都不可能無限量的儲存資料,對於 mysql 來說,一張表的資料量最好控制在 3000 萬以下。如果資料量達到了億級,增刪改查都會變得很慢。如果說 ...

Nacos介紹篇 架構

官網文件很清晰 服務是指乙個或一組軟體功能 例如特定資訊的檢索或一組操作的執行 其目的是不同的客戶端可以為不同的目的重用 例如通過跨程序的網路呼叫 nacos 支援主流的服務生態,如 kubernetes service grpc dubbo rpc service 或者 spring cloud ...