Wildfish架構之資料訪問篇

來源:互聯網
上載者:User

這一篇,其實很上一篇有比較緊密的關聯。
我們把資料關聯和定義儲存在Data層
所以,我們需要從這個Data層裡面擷取我們想要的資訊,然後把資料當作參數傳入。
目前,完整測試過的是SQLServer  , 而Oracle/ISeries還沒有完整的測試過,所以想接下來把架構公開了。
廢話少說,接著講如何?這個層。
首先,我們要支援三種資料庫,那麼我們當然期望能夠在今後的使用中,通過內建的設定檔設定,然後只需要依據名字既可擷取資料訪問器


So ,第一步,我們得有一個架構內部的設定檔,一個內嵌資源,編譯後存入dll中。
我叫它Wildfish.config.xml
結構是
<configuration>
   <DataAccessSection>
 <DataAccessProviders>
       <DataAccessProvider>
         <Name>FishSky</Name> 
         <DataAccessNameSpace>FishSky.DataAccess.Base.MsSql</DataAccessNameSpace>
         <DataSource>(local)</DataSource>
         <Category>FishSky</Category>
         <UserID>sa</UserID>
         <Password>fishsky</Password>
         <TestingCategory>FishSky</TestingCategory>
         <IsTesting>false</IsTesting>
       </DataAccessProvider>

而你所要做的就是,copy一個,然後修改 name namespace datasource category userid password testingcategory istesting的值
name就是到時候用來建立資料訪問源的
namespace就是資料訪問器所在的命名空間,如果用sqlserver就用MsSql 否則 Oracle ISeries
datasource一般用於標註database server ip/name
category用於表示資料庫的名字,Iseries的時候是一個資料庫的library list。--istesting=false的時候 
userid password就不用說了
testingcategory 表示istesting=true的時候,指向那個資料庫,Iseries的時候是指向一個測試的庫列表,only for sqlserver iseries
                 oracle需要在這裡重新寫測試的database server ip/name
istesting 表示是否屬於測試的時候用的dll.

第二步:
由於我們把配置資訊存入一個嵌入資源,那麼我們就需要dll運行時擷取它,
通過一個抽象基類的singleton方法來擷取,在AbstractConnectionBuilder.cs檔案中。
然後我們定義了一些操作的介面,為每一個資料庫類型都做一份,
這裡我承認我沒做太多的重構,所以存在蠻多可改的地方。
還有,還得說明的就是為什麼只作了sqlserver iseries oracle的資料訪問器,因為這些sql的參數表達都是類似的,除了oracle需要用:,
當然了,我們還是按照@來寫,只是提交的時候替換成: 。只有這樣才能做到比較平滑的切換。
資料訪問器區分為三種,操作資料 唯讀訪問資料 單行訪問資料
具體的實現就是 訪問我們在data定義的元資訊,然後產生SQL 組合參數,說白了也就是那樣。

第三步
如果增加一種資料類型,就必須事先那些介面,同時還必須修改commoninfo.cs updateobject deleteobject的方法,耦合度比較大
這也是目前比較鬱悶的地方。
還有就是如果介面的方法的增加,就必須修改三個命名空間下所有涉及到的東西,煩,亦是無可奈何的事情

第四步:
如果使用的話,我們都是需要用DataAccessFactory.CreateDataAccess等等方法來返回那些介面
一切都是依據介面,對於程式的可遷移性會好很多。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.