duwamish
是microsoft
提供乙個企業級的分布式系統架構,如果開發企業級的分布式系統,可以模仿這種架構,如果是開發一些簡單的系統,則完全可以簡化。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
以前也學習過
duwamish
範例,只是發現不同時間,不同經歷,有不同的體會。正如盧彥所說的一樣:通過研究
duwamish
示例,高手能夠領悟到
.net
應用架構的設計思想,低手能夠學習到
.net
的程式設計技巧,實在是老少皆宜。
因此,這裡再次學習並體驗一次
duwamish
範例。
1,duwamish 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部署方案篇》將分析這個問題)。
3,summary
在開發基於
.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 ...