国产成人a-国产成人99久久亚洲综合精品-国产成人99精品免费视频麻豆-国产成人99精品免-国产成人91一区二区三区-国产成人91亚洲精品无码观看

目錄
目錄X

動易SiteFactory新特性體驗之旅——支持多數據庫

  動易CMS 2007的新特性中有這樣一個非常重要的特性:

以下是引用片段:
支持多數據庫
動易CMS 2007采用了抽象工廠模式將各個不同數據庫的實現方式分離,理論上可以支持任意的數據庫,目前測試的版本只支持MS SQL 2000/2005。
不同數據庫的實現分離,就不用象原動易CMS 2006版那樣為了兼容AC和SQL兩種數據庫,必須使用標準SQL語句,并要注意兩種數據庫語句中的細小差異。分離后,各數據庫實現獨立出來,就可以靈活的利用各數據庫的優點(如:AC中可以使用SQL語句,而SQL中就可以靈活使用存儲過程、自定義函數、觸發器等特性),并且互相之間沒有干擾,可通過配置文件來實現快速切換。

  這個新特性,我在上篇講N層架構設計的文章中已經附帶了講了一下。今天我們再來詳細的講一講,動易是如何實現這個特性的。

  實現這個特性的前提是系統采用分層架構設計,然后在數據訪問層采用數據庫抽象工廠模式,將不同數據庫的實現抽象出來,然后通過修改配置文件,即可在不同數據庫類型間切換。

  可能有些人迷糊了:動易CMS2006不也支持ACCESS和SQL兩種數據庫嗎?還有其他的系統不也是這樣嗎?這怎么能稱得上是動易CMS 2007的新特性呢?呵呵,大家別急,且聽我慢慢講來。

  動易CMS2006是支持ACCESS和SQL兩種數據庫,并且也是簡單的修改Conn.asp中的數據庫類型即可在ACCESS和SQL中切換。但是動易CMS2006的多數據庫實現方式與動易CMS2007是完全不同的。

  我們先來看看動易CMS2006的多數據庫實現方式。我們來看一段動易CMS2006的源代碼:

If SystemDatabaseType = "SQL" Then
Conn.Execute ("alter table PE_Admin add AdminPurview_" & rsChannel("ChannelDir") & " Int null")
Else
Conn.Execute ("alter table PE_Admin add COLUMN AdminPurview_" & rsChannel("ChannelDir") & " INTEGER")
End If

  因為ACCESS和SQL在語法上稍微有些區別,并不能完全通用,所以在寫程序時就要特別注意兩者的區別,一不小心,就會出現錯誤。而且這種方式,在寫代碼時,要考慮到每一種數據庫的不同語法之處。每增加一種數據庫,就要重新修改幾千處查詢語句,工作量可想而知,而且在修改時極易出錯。

  動易CMS2007則采用了全新的模式——數據庫抽象工廠模式。在數據訪問層(DAL)中,采用DAL Interface抽象出數據訪問邏輯,并以DAL Factory作為數據訪問層對象的工廠模塊。對于DAL Interface而言,分別有支持MS-SQL的SQL Server DAL和支持Oracle的Oracle DAL具體實現。而Model模塊則包含了數據實體對象。其詳細的模塊結構圖如下所示:

圖片點擊可在新窗口打開查看
數據訪問層的模塊結構圖

  在數據訪問層中,完全采用了“面向接口編程”思想。抽象出來的IDAL模塊,脫離了與具體數據庫的依賴,從而使得整個數據訪問層利于數據庫遷移。DALFactory模塊專門管理DAL對象的創建,便于業務邏輯層訪問。SQLServerDAL和OracleDAL模塊均實現IDAL模塊的接口,其中包含的邏輯就是對數據庫的Select,Insert,Update和Delete操作。因為數據庫類型的不同,對數據庫的操作也有所不同,代碼也會因此有所區別。

  此外,抽象出來的IDAL模塊,除了解除了向下的依賴之外,對于其上的業務邏輯層,同樣僅存在弱依賴關系,如下圖所示:

圖片點擊可在新窗口打開查看
業務邏輯層的模塊結構圖

  上圖中BLL是業務邏輯層的核心模塊,它包含了整個系統的核心業務。在業務邏輯層中,不能直接訪問數據庫,而必須通過數據訪問層。注意圖中對數據訪問業務的調用,是通過接口模塊IDAL來完成的。既然與具體的數據訪問邏輯無關,則層與層之間的關系就是松散耦合的。如果此時需要修改數據訪問層的具體實現,只要不涉及到IDAL的接口定義,那么業務邏輯層就不會受到任何影響。畢竟,具體實現的SQLServerDAL和OracalDAL根本就與業務邏輯層沒有半點關系。

  上述的三個模塊分別使用了三個獨立的項目來進行管理,編譯后就生成了三個相應的DLL,如下圖所示:


圖片點擊可在新窗口打開查看

  注意,在測試版中,因為還沒有提供對ACCESS和Oracle的數據庫支持,所以在上圖中我們沒有看到對應的Powereasy.AccessDal.dll和PowerEasy.OracleDal.dll。

【打印正文】 發布時間:2007-08-20 09:45:04 瀏覽次數: 作者:webboy 來源:本站原創
×

用戶登錄

主站蜘蛛池模板: 麻豆国产在线精品欧美日韩电影| 亚洲丁香色婷婷综合欲色啪| 亚洲日本免费| 日本边添边摸边做边爱60分钟| 麻豆入口进入在线| 国产手机视频在线| 东北寡妇特级毛片免费免费漫画你懂得啦啦啦免费视频在线 | 欧美亚洲另类久久综合二区| 精品国精品国产自在久国产应用男| 国产爆操美女五月天| 中国另类丰满熟妇乱xxxxx| 日本午夜视频在| 精品国产片一区二区三区| 高潮毛片无遮挡高清免费视频| 亚洲视频在线一区二区三区| 欧美日韩国产精品视频一区二区| 国产一区二区三区成人久久片| 成人av中文字幕精品久久| 亚洲成v人片在线观看天| 久久伊人少妇熟女大香线蕉| 国产一区二区三区四区五区六区| 成人av无码| 无码射肉在线| 美国一级毛片免费看| 国内精品久久久久久久影视麻豆| 成人免费视频一区二区三区| 亚洲自偷自拍sm另类在线观看| 欧美亚洲国产精品一区| 国产亚洲欧美日韩在线一区| 成人性视频欧美一区二区三区| 艳妇荡岳丰满交换做爰| 日本超A大片在线观看| 国内自拍视频在线观看| 丰满少妇bbwbbw| 亚洲国产日韩欧美一区二区三| 欧美日韩精品免费| 国产欧色美视频综合二区| 成人国产三级免费观看| 亚洲精品无码在线观看夜色| 欧美日韩精品一区二区在线播放 | 中文字幕在线观看国产|