關於三層架構中各層次的關係與實現模型 (轉)

worldblog發表於2007-12-15
關於三層架構中各層次的關係與實現模型 (轉)[@more@]

??在三層架構體系中,應用表示層(客戶端)和商業邏輯層(中間層)及資料層之間可能位於不同的端,因此他們之間的通訊、排程就會變得很困難,而且在中間層廣泛使用的之間的事務也會變得錯綜複雜,為此,提供瞭解決這些問題的方案,其中具體實現技術/工具主要包括:MS Remote Data Services、MS Transaction Server、COM/DCOM/COM+等。
??在客戶端,透過 RDS 來建立中間層的資料服務元件。
??在中間層的 Transaction Server 執行時環境中執行 RDSServer.DataFactory 或自定義業務時,共享機制產生作用。只使用數百個而不是上千個連線仍然可以支援上千個客戶端。這是 Transaction Server 中 OC 資源分配器的功能。
??在中間層和資料層之間可透過ADO來連線,實現資料讀寫操作。
 
??使用 RDS 可以有三種方式將 Recordset 從返回給客戶端。這三種方式分別為:
??(一)、使用自動 RDSServer.DataFactory 物件的 RDS.DataControl 方法和屬性。
??(二)、手工呼叫 RDSServer.DataFactory 物件。
??(三)、建立資料訪問功能的自定義 DLL。
??在此,我們的客戶端使用自行定義的中間層物件(DCOM/COM+),來處理商業邏輯並訪問資料。
??首先,讓我們來看看基本的 RDS 模型:
??RDS 為在如下環境中存在的應用確定地址:客戶應用程式指定將在伺服器上執行的程式,並指定用來返回相應資訊的引數。伺服器上被呼叫的程式訪問指定的資料來源,檢索資訊,對資料進行相應處理,然後將結果資訊按易於使用的格式返回給客戶應用程式。

??具體的實現模型如下列表。
??(1)、指定在伺服器上被呼叫的程式,並得到從客戶端引用該程式的途徑。(該引用有時稱為“”,它代表遠端伺服器程式。客戶應用程式象呼叫本地程式一樣“呼叫”代理,但實際上呼叫的是遠端伺服器程式。)
??(2)、呼叫伺服器程式。將引數傳送到標識資料來源及所要釋出命令的伺服器程式。(伺服器程式實際上使用 ADO 訪問資料來源。ADO 與所給引數中的一個建立連線,然後釋出在其他引數中指定的命令)。
??(3)、伺服器程式從資料來源獲得了 Recordset 物件。可以選擇在伺服器上處理 Recordset 物件。
??(4)、伺服器程式將最終的 Recordset 物件返回客戶應用程式。
??(5)、在客戶端,Recordset 物件被轉換成為便於視覺化使用的格式。
??(6)、任何對 Recordset 物件所作的修改都將返回給伺服器程式,伺服器程式用這些修改來資料來源。
 
??對應其上的程式設計模型如下(RDS 提供執行以下動作序列的途徑),程式設計模型是指為完成這個目的所必需的活動序列:
??(1)、指定在伺服器上被呼叫的程式,並獲得透過客戶端呼叫該程式的方式(代理)。(RDS.Datace)
??(2)、呼叫伺服器程式。將引數傳遞給標識資料來源及所要釋出的命令的伺服器程式。(代理或 RDS.DataControl)
??(3)、伺服器程式從資料來源獲得 Recordset 物件(一般透過使用 ADO)。可選擇在伺服器上處理 Recordset 物件。(RDSServer.DataFactory)
??(4)、伺服器程式將最終的 Recordset 物件返回客戶端應用程式。(代理)
??(5)、在客戶端,Recordset 物件被轉換成可視控制元件能方便使用的格式。(可視控制元件和 RDS.DataControl)
??(6)、對 Recordset 物件所作的更改被返回伺服器並用於更新資料來源。(RDS.DataControl 或 RDSServer.DataFactory)
??以上是微軟提供的標準三層架構程式設計解決方案,事實上我們可利用自行實現的中間層來替代RDSServer.DataFactory,而自行定製的各種Active Control/DLL則完全可替用RDS.DataControl。合理定製符合我們要求的元件將大大模組化整個系統,並使得客戶端變得邏輯簡單、易於移植。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993772/,如需轉載,請註明出處,否則將追究法律責任。

相關文章