通過前面兩篇文章(已于2006-07-03修正)的介紹,我們已經大致明白了系統的目標的總體結構,從這篇文章開始,我們將逐漸深入到系統內部。
本文講述數據管道,數據管道是用于在數據源/數據目標與DataTable之間進行數據傳遞的組件,它是與數據庫類型和文件類型相關的,數據從數據源經過數據管道后,就變成與數據源類型無關的數據了,這樣映射編輯和數據引擎便能對它們進行一致的處理。
數據管道接口定義的類圖如下:
數據管道接口IDataPipe從另外兩個接口繼承:數據導入器(IDataImporter)和數據導出器(IDataExporter)。數據導入器用于從數據源讀取指定頁的大小的數據到DataTable中。為何要分頁讀取數據,那是因為當數據源中的記錄非常多時,一次讀取并傳遞所有的數據是不合適了,這時可以采用分頁進行分批數據處理。數據導出器用于將數據導出到數據目標。
目前,我們的數據源/數據目標可以分為兩大類:文件和數據庫。所以,從IDataPipe派生了兩個接口--IFileDataPipe和IDbDataPipe,用來分別對應連接到文件的數據管道和連接到數據庫的數據管道。
為了根據文件或數據庫的類型來創建合適的數據管道,所以我們需要一個工廠IDataPipeFactory來完成這件事:
可以預見,在以后的應用中會有更多的數據庫類型和文件類型加入進來,為了避免每次加入一個新的數據庫類型或文件類型時都需要改動系統源碼并重新編譯發布,我們將數據管道做成插件(Addin),這樣當我們需要支持一種新的文件類型或數據庫類型時,只需要添加一個插件即可,原來的系統不用修改和重新編譯。
于是,我們可以借助插件管理器IAddinManager(參見 ESFramework 插件部分)來實現數據管道工廠IDataPipeFactory。
許多朋友一定覺得這篇文章講的太粗,這是我刻意為之的。很抱歉!因為這畢竟不是一個開源項目,它的所有權也不屬于我個人(盡管它完全是我個人一手設計的),而是屬于我現在所在的公司,所以我只能點到為止,介紹一些原理性的東西,供后來者參考。
轉到: DTS開發記錄(序)
本文講述數據管道,數據管道是用于在數據源/數據目標與DataTable之間進行數據傳遞的組件,它是與數據庫類型和文件類型相關的,數據從數據源經過數據管道后,就變成與數據源類型無關的數據了,這樣映射編輯和數據引擎便能對它們進行一致的處理。
數據管道接口定義的類圖如下:

數據管道接口IDataPipe從另外兩個接口繼承:數據導入器(IDataImporter)和數據導出器(IDataExporter)。數據導入器用于從數據源讀取指定頁的大小的數據到DataTable中。為何要分頁讀取數據,那是因為當數據源中的記錄非常多時,一次讀取并傳遞所有的數據是不合適了,這時可以采用分頁進行分批數據處理。數據導出器用于將數據導出到數據目標。
目前,我們的數據源/數據目標可以分為兩大類:文件和數據庫。所以,從IDataPipe派生了兩個接口--IFileDataPipe和IDbDataPipe,用來分別對應連接到文件的數據管道和連接到數據庫的數據管道。
為了根據文件或數據庫的類型來創建合適的數據管道,所以我們需要一個工廠IDataPipeFactory來完成這件事:

可以預見,在以后的應用中會有更多的數據庫類型和文件類型加入進來,為了避免每次加入一個新的數據庫類型或文件類型時都需要改動系統源碼并重新編譯發布,我們將數據管道做成插件(Addin),這樣當我們需要支持一種新的文件類型或數據庫類型時,只需要添加一個插件即可,原來的系統不用修改和重新編譯。

于是,我們可以借助插件管理器IAddinManager(參見 ESFramework 插件部分)來實現數據管道工廠IDataPipeFactory。
許多朋友一定覺得這篇文章講的太粗,這是我刻意為之的。很抱歉!因為這畢竟不是一個開源項目,它的所有權也不屬于我個人(盡管它完全是我個人一手設計的),而是屬于我現在所在的公司,所以我只能點到為止,介紹一些原理性的東西,供后來者參考。
轉到: DTS開發記錄(序)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
