緣起:

承繼之前的系統分層概念(請參考:淺談多層式架構 (Multi Tiers)),在資料存取層中,應該只有資料的存取,沒有商業的邏輯。小喵之前的系統並沒有這一層,以往都是商業邏輯混搭資料存取。這一篇就來嘗試撰寫資料的存取層。順便開始程式撰寫部分的介紹。

方案管理:

為了方便未來程式撰寫不用開好幾個VS,我們透過方案的方式可以將資料層、商業邏輯層、介面層(Web Project)集中在一個方案中。所以目前先介紹怎麼使用方案。

先來看圖說故事:首先要建立一個空的方案

[ASP.NET]COM+多層式程式撰寫(資料存取層初體驗) [ASP.NET]COM+多層式程式撰寫(資料存取層初體驗)

接著在空的方案上新增一個專案

[ASP.NET]COM+多層式程式撰寫(資料存取層初體驗)

此時在方案總館中,小喵只看到專案而沒有看到方案,要加入第二個專案時,需要從功能表中的檔案來做

[ASP.NET]COM+多層式程式撰寫(資料存取層初體驗)

加好第二個專案後,在方案總館裡面就會看到如下圖這樣

[ASP.NET]COM+多層式程式撰寫(資料存取層初體驗)

我們在方案中再增加Web站台,最後就會成這樣

[ASP.NET]COM+多層式程式撰寫(資料存取層初體驗)

未來維護時,就可以直接開啟方案就能夠在此方案中維護各層的程式。

資料存取層設計:

接著開始來設計資料存取層。資料存取層應該只負責資料的存取,不包含任何的商業邏輯。因此小喵回顧一下以前撰寫的程式中,有關資料存取的部分有哪些

  • 讀取:(不支援Transaction)
    • 傳回整批資料:傳回DataTable,DataSet。
      (這裡不用DataReader,由於分散式系統,如果傳回的是連線型的DataReader,那麼關閉Connection的時機不易掌握,而且很可能一不小心就忘了關閉連線。在撰寫ADO.NET的時候,應該要讓Connection用完儘快的釋放)
    • 檢查資料是否存在:傳回True/False
      (檢查資料是否存在,這裡可以用DataReader來檢查。)
  • 維護:(支援Transaction)
    • 傳入SQL語法,進行維護資料,傳回維護的筆數(如果需要的話)。

撰寫COM+元件的方式、步驟,請大家參考一下小喵以前的文章【N-Tiers開發方式(如何使用VB.NET撰寫COM+元件)

連接字串的處理方式

連接當有資料存取層後,連接字串只會存在資料存取層中,在商業邏輯層與展現層將不會用到連接字串。而未了修改方便,小喵會將連接字串使用文字檔的方式將設定檔放在實體硬碟中的某個位置(例如:C:\MyConnStr),並且設定其附檔名為ini,此位置可以授權給某特別的帳號可以存取,然後將此帳號設定為元件的識別帳號。這樣元件就可以透過COM+切換身分的方式,透過此帳號取得連接字串。而這個資料夾沒有網路分享、沒有Web分享,一般的帳號都無法存取,甚至實體切層時,他與商業邏輯層、展現層不同的主機。用這樣的方式來提高連接字串的安全性,也方便未來如果更改設定時,可以直接在Server上變更,不用修改程式。

相關的程式如下:

相关文章: