■數(shù)據(jù)訪問服務(wù) 幾乎所有的網(wǎng)絡(luò)服務(wù)都需要查詢和更新永久性數(shù)據(jù),不論是以簡單文件,還是以相關(guān)數(shù)據(jù)庫,或是以其它的存儲(chǔ)類型存在。為了提供對(duì)數(shù)據(jù)的訪問,服務(wù)框架包括activex data objects+ (ado+)類庫。如同名字所暗示的那樣,ado+由ado發(fā)展而來。ado+為基于網(wǎng)絡(luò)的應(yīng)用程序和服務(wù)提供數(shù)據(jù)訪問服務(wù)。圖1闡明了ado+的體系結(jié)構(gòu),表明任何數(shù)據(jù),不論這些數(shù)據(jù)實(shí)際上如何存儲(chǔ)的,都以xml或相關(guān)數(shù)據(jù)的格式被操作。
ado+定義了那些鏈接數(shù)據(jù)倉庫、對(duì)數(shù)據(jù)倉庫發(fā)送命令及從中獲取結(jié)果的類。這些類由受控?cái)?shù)據(jù)提供者(managed data provider)實(shí)現(xiàn)。ado+中鏈接和命令對(duì)象看上去和ado中的是一樣的,并且一個(gè)名為datareader的新類提供了通過高性能api流獲取結(jié)果的能力。datareader在功能上與ado的記錄集(recordset)是相似的,但是datareader被設(shè)計(jì)用來最小化內(nèi)存中生成的對(duì)象的數(shù)量,用以提高性能、避免垃圾積累。在.net framework中包含了針對(duì)microsoft sql server的受控?cái)?shù)據(jù)提供者以及可通過ole db訪問的任何數(shù)據(jù)倉庫。
就像datareaders顯示了對(duì)于相關(guān)數(shù)據(jù)的有效的流訪問一樣,xmlreaders顯示了對(duì)xml數(shù)據(jù)的流訪問。開發(fā)人員使用datanavigator可以滾動(dòng)和編輯內(nèi)存中的xml文檔。datanavigator在功能上和document object model (dom)是一樣的,但它更有效,并提供了能很好映射關(guān)系數(shù)據(jù)表的對(duì)象模板。ado+為那些希望繼續(xù)使用dom作為xml對(duì)象模板而不是使用更有效的datanavigator模板的開發(fā)人員提供了一個(gè)xmldocument類。
■網(wǎng)絡(luò)應(yīng)用程序模板 建立在microsft.net框架上網(wǎng)絡(luò)應(yīng)用程序共享一個(gè)通用應(yīng)用程序模板。包含用于生成在瀏覽器中觀看的網(wǎng)頁的網(wǎng)絡(luò)應(yīng)用程序和網(wǎng)絡(luò)服務(wù)。下面,筆者將詳細(xì)介紹active server pages+ (asp+)的網(wǎng)絡(luò)應(yīng)用程序可編程模板,如圖2所示。
asp+是由活動(dòng)服務(wù)器頁面(asp)發(fā)展而來。asp+利用common language runtime和服務(wù)框架網(wǎng)絡(luò)應(yīng)用程序提供了一個(gè)可靠的、自動(dòng)化的、可擴(kuò)展的主機(jī)環(huán)境。asp+也受益于common language runtime集成模板,簡化了應(yīng)用程序的配制。另外,它提供簡化應(yīng)用程序開發(fā)的服務(wù)(如狀態(tài)管理服務(wù))以及高水平的編程模板(如asp+網(wǎng)絡(luò)表單和asp+網(wǎng)絡(luò)服務(wù))。
asp+的核心是http運(yùn)行語言,一個(gè)高性能的用于處理基于低級(jí)結(jié)構(gòu)的http請(qǐng)求的運(yùn)行語言,而基于的結(jié)構(gòu)與microsoft internet information services (iis)所提供的isapi結(jié)構(gòu)相似。由圖2可知,http運(yùn)行語言(http runtime)負(fù)責(zé)處理引入的所有http請(qǐng)求,并對(duì)每個(gè)請(qǐng)求應(yīng)用程序的url進(jìn)行解析,然后把請(qǐng)求分配到應(yīng)用程序以進(jìn)行進(jìn)一步的處理。http 運(yùn)行語言是多線程的,并異步處理請(qǐng)求,因此劣質(zhì)的應(yīng)用程序代碼阻礙不了它對(duì)新請(qǐng)求的處理。而且http運(yùn)行語言假定失敗必會(huì)發(fā)生,因此它通常可以自動(dòng)地從訪問沖突、內(nèi)存泄漏、死鎖等事故中恢復(fù)過來。