[Architecture] 資料存取層 (一)

[Architecture] : 資料存取層 (一)

 

前言 :

 

一般說到應用程式架構
大家最容易聯想的應該就是「三層式架構」
但筆者所要討論的應用程式架構
抽象邏輯上是架構在三層式架構的上一層
針對軟體設計所規劃的應用程式架構
相關資料可以參考 : 微軟文件「.NET 的應用程式架構:設計應用程式和服務」
本篇將焦點放在「資料存取層」

 

簡介 :

 

所有的程式都離不開資料存取。
「資料存取層」所定義的就是將資料的存取,與應用程式的邏輯分開。

 

動機 :

 

開發應用程式有時會遇到變更資料庫的需求,
例如將資料庫從SQL換到Oracle。

 

遇到這種問題
比較常碰到的解法是,把與SQL資料庫溝通的程式碼跟SQL語句,改成Oracle。
甚至高深一點的會將SQL語法做成設定檔,成是執行的時候再載入。

 

 

這樣的方法可以解決問題
但是如果
今天要把SQL資料庫變成文字檔或是物件導向資料庫呢?

 

 

觀念 :

 

資料存取介面定義了邏輯物件B的資料存取介面。
邏輯物件A使用資料存取介面存取邏輯物件B。

 

將資料存取介面的實作,跟應用程式做切割。
這樣的好處是將應用程式跟資料存取層做分割。
資料要往哪邊存取,是由實做資料存取介面的物件來決定。

 

 

SQL資料存取物件,只需要關注如何使用SQL實作出資料存取介面。
要把SQL資料庫改成物件導向資料庫,也只需要實作一個物件導向資料庫就可以完成。

 

 

實作 :

 

而「資料存取層」實作上
主要分為兩個部分
1. 資料存取介面切割 : 依專案考量來做切割。
2. 資料存取物件生成 : 參考Design Patterns的生成模式(Creational Patterns),或是微軟實作的Provider Pattern。

 

結語 :

 

其實架構的東西,比較著重在觀念。
觀念懂了怎麼實作就只是技巧嚕~

期許自己
能以更簡潔的文字與程式碼,傳達出程式設計背後的精神。
真正做到「以形寫神」的境界。