Web服務數據庫訪問中間件的實現

發表于:2008-04-24來源:作者:點擊數: 標簽:數據庫中間件
關鍵字: 中間件 1 引言 隨著Intr .net /Internet 網絡 的迅猛發展,面向網絡的分布式 數據庫 成為支持Internet服務的關鍵,傳統的數據庫訪問技術已漸漸不能滿足分布式應用集成的需要。 【1】利用新技術,研究和 開發 新的數據庫訪問中間件成為數據庫研究領域
關鍵字:中間件1  引言
隨著Intr.net/Internet網絡的迅猛發展,面向網絡的分布式數據庫成為支持Internet服務的關鍵,傳統的數據庫訪問技術已漸漸不能滿足分布式應用集成的需要。
【1】利用新技術,研究和開發新的數據庫訪問中間件成為數據庫研究領域的主要方向之一。
        Web服務是一種嶄新的分布式計算模型,基于一系列開放的技術標準,其松散耦合、語言中立、平臺無關性、開放性使得它將成為下一代電子商務的架構,成為下一代的WWW。
【2】Microsoft.Net提供了基于“.Net框架”的綜合開發平臺,它提供了涉及客戶端、服務器和服務的單獨、統一的編程模型。
       “.Net框架”和Visual Studio.Net一起,給我們提供了一個完整的應用程序開發平臺。
        本文主要的工作就是在Visual Studio.Net平臺上,利用Web服務將現有的數據庫訪問方式的封裝成中間件,使得封裝后的中間件可以滿足分布式應用的需要。
 
2  Web服務中間件接口的定義
        現有通用的數據庫訪問方式,它的主要操作有:設置數據庫連接,打開和關閉數據庫, 執行查詢和執行其他的Sql語句,實現事務管理和緩沖池管理。比較先進的數據庫訪問方式還支持實時數據庫連接。因此,為了實現對傳統數據庫訪問方式的封裝,我們首先要定義一個Web服務,這個Web服務至少應該擁有以上所列的Web方法(屬性為WebMethod的public函數成員)。這些方法就組成了這個Web服務的接口。
        .Net下,Web服務的實現都封裝在System.Web.Services.WebService這個類中。為了實現對數據庫訪問方式的Web服務的封裝,我們必須定義一個新的類,它繼承于WebService或是它的子類。對于相對簡單的Web服務,我們直接讓這個類繼承于WebService。這個生成的類就成了一個具體的Web服務。
        .NET中新的關系型數據管理類都是基于類庫中System.Data的一系列的名稱空間,通常稱這些名稱空間集合為ADO.NET。System . Data包含用來訪問和存儲關系型數據的基礎對象。Visual Studio.Net直接給我們提供了System.Data.SqlClient和OleDBClient兩個命名空間,這兩個命名空間分別包含有用來訪問Sql Server關系數據庫和其他關系數據庫所需的基本對象。其中以Transaction結尾的類提供了事務管理的功能,以Connection結尾的類用于連接具體的數據庫。以Command結尾的類定義了對數據庫表的操作。
 
3  Web服務中間件的實現
3.1實現框架
       下面是一個簡單的Web服務中間件來實現(采用Microsoft推薦的c #語言來編寫)。為了實現中間件的可擴展性,我們決定不在中間件的WebMethod(Web方法)中直接實現對數據庫的操作。我們先定義一個虛類DBOperator,在這個虛類中定義了對數據庫操作的接口,包括數據庫的打開(Open)和關閉(Close),事務的開始(BeginTrans)、事務的遞交(CommitTrans)和回滾(RollbackTrans),沒有返回值的Sql語句的執行(void ExecSql)和返回數據集的Sql語句的執行(DataSet ExecSql)。這樣,我們的Web服務中間件的每個WebMethod就僅僅是調用了DBOperator對象的相應的成員函數。比如Web服務中間件中的Open方法就是直接調用DBOperator對象的Open方法。
3 .2具體數據庫操作的實現
       為了具體實現對數據庫的操作,我們需要定義DBOperator類的子類,我們以SqlDBOperator為例,顯然SqlDBOperator具體實現了對Sql Server數據庫的操作。

首先定義一個SqlDBOperator類,它繼承于DBOperator,并導入名稱空間System . Data . SqlClient。
using System.Data.SqlClient;
class SqlDBOperator:DBOperator


其次添加私有的數據成員conn,trans,inTransaction,comm
private SqlConnection conn;        //數據庫連接
private SqlTransaction trans;     //事務處理類
private bool inTransaction=false; //指示當前是否正處于事務中
private SqlCommand comm;     //數據庫操作命令處理類

然后我們開始編寫從DBOperator繼承下來的Open操作的實現語句。
public override void Open(string connStr)
{
//如果連接是空的,就先通過connStr構造一個連接
if(conn==null)
conn=SqlConnection(connStr);
//如果這個連接沒有打開,就打開這個連接
if(conn.State.ToString().ToUpper()!="OPEN")
          this.conn.Open();
}


在實現了Open(打開數據庫)操作的編寫之后,我們開始編寫Close(關閉數據庫)操作。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97