姜瀟 王汝剛 程軍芝 范慶爽 何雅昆 海洋石油工程股份有限公司
通過(guò).NET所提供的強(qiáng)大數(shù)據(jù)庫(kù)開(kāi)發(fā)平臺(tái),能夠更好的滿足廣大客戶(hù)的數(shù)據(jù)應(yīng)用需求,在高效率的工作下還可以提供更為強(qiáng)大的系統(tǒng)功能。為了能夠更好的發(fā)揮數(shù)據(jù)庫(kù)的功用,發(fā)揮出.NET 技術(shù)的優(yōu)勢(shì),就要對(duì)兩者進(jìn)行綜合性的分析,更好的應(yīng)用到數(shù)據(jù)庫(kù)的開(kāi)發(fā)與使用當(dāng)中,為信息化的發(fā)展提供有益的幫助。
.NET技術(shù)是微軟重要的戰(zhàn)略部署。微軟于2000年發(fā)布了.NET平臺(tái)(Beta版本),提出了.NET架構(gòu),經(jīng)過(guò)多年的版本升級(jí),進(jìn)一步擴(kuò)展與完善了框架類(lèi)庫(kù),補(bǔ)充了移動(dòng)、云等適應(yīng)新環(huán)境的框架應(yīng)用。
.NET架構(gòu)在技術(shù)上適用于跨系統(tǒng)平臺(tái)的應(yīng)用,實(shí)際的應(yīng)用上與微軟的Windows平臺(tái)有更好的結(jié)合。其架構(gòu)在Windows平臺(tái)之上提供了CLR(公共語(yǔ)言運(yùn)行時(shí))和FCL(框架類(lèi)庫(kù))兩層結(jié)構(gòu)。CLR提供了程序執(zhí)行的環(huán)境, FCL則包括了基類(lèi)庫(kù),數(shù)據(jù)類(lèi)庫(kù)(數(shù)據(jù)及XML類(lèi)等),以及Web Services、Web Forms、Windows Forms等應(yīng)用層面類(lèi)庫(kù)。
.NET技術(shù)支持C#、VB.NET等多種開(kāi)發(fā)語(yǔ)言,實(shí)現(xiàn)了語(yǔ)言的無(wú)關(guān)性和集成性,支持跨語(yǔ)言的繼承、異常處理、多態(tài)等應(yīng)用。其技術(shù)特點(diǎn)使得其在功能性、兼容性、實(shí)施效率、開(kāi)發(fā)體驗(yàn)上都有出色的表現(xiàn),也使得許多系統(tǒng)的應(yīng)用與開(kāi)發(fā)都指定了.NET 平臺(tái)作為環(huán)境,成為現(xiàn)在主流的系統(tǒng)應(yīng)用平臺(tái)。
.NET技術(shù)通過(guò)標(biāo)準(zhǔn)的SQL接口實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)訪問(wèn)和進(jìn)行持久性數(shù)據(jù)存儲(chǔ)管理,封裝于FCL中SQL類(lèi),F(xiàn)CL中同時(shí)提供了ADO.NET的一組類(lèi),用于操作持久性數(shù)據(jù),也提供了XML數(shù)據(jù)操作、Azure數(shù)據(jù)庫(kù)連接的類(lèi)以適應(yīng)發(fā)展中的數(shù)據(jù)庫(kù)應(yīng)用。而對(duì)于第三方的數(shù)據(jù)庫(kù)系統(tǒng)(如Oracle),在提供現(xiàn)有標(biāo)準(zhǔn)連接的同時(shí),也提供了對(duì)現(xiàn)在架構(gòu)的擴(kuò)展接口,用于特定的需求應(yīng)用。.NET技術(shù)中主要應(yīng)用ADO.NET技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)訪問(wèn)與應(yīng)用。
ADO.NET屬于.NET架構(gòu)中FCL中的類(lèi)庫(kù),同.NET框架同步升級(jí),新的版本中增加了LINQ(語(yǔ)言集成查詢(xún))的支持,以及在新的ADO.NET Entity框架中提供對(duì)象關(guān)系解決方案。
ADO.NET封裝了標(biāo)準(zhǔn)SQL訪問(wèn)數(shù)據(jù)庫(kù)的細(xì)節(jié),使得開(kāi)發(fā)人員更易于發(fā)揮設(shè)計(jì)能力。ADO.NET與其前身ADO很像,但兩者存在本質(zhì)區(qū)別。不同于ADO,ADO.NET是非連接型的數(shù)據(jù)架構(gòu),在與數(shù)據(jù)庫(kù)連接后,一次性讀取所需數(shù)據(jù),然后在本地進(jìn)行數(shù)據(jù)處理。只有數(shù)據(jù)發(fā)生改變,或是需獲取新數(shù)據(jù)時(shí),才會(huì)再次與數(shù)據(jù)庫(kù)連接。這種非連接型的特性更適合于現(xiàn)代數(shù)據(jù)庫(kù)的應(yīng)用系統(tǒng)。本身數(shù)據(jù)庫(kù)連接是資源密集型的,且大部分系統(tǒng)支持多用戶(hù)的訪問(wèn),會(huì)涉及成千上萬(wàn)的數(shù)據(jù)連接。而使用持續(xù)連接將大量消耗數(shù)據(jù)庫(kù)服務(wù)資源,導(dǎo)致性能問(wèn)題,而非連接型的模式則從根本上解決了資源上的問(wèn)題。
不同的數(shù)據(jù)庫(kù)會(huì)選擇不同的連接驅(qū)動(dòng),同一數(shù)據(jù)庫(kù)也會(huì)有多種連接方式。如何選擇連接方式并非是固定模式,需要設(shè)計(jì)人員根據(jù)應(yīng)用情況綜合考慮。
對(duì)SQL Server的連接,首選是使用SQL供應(yīng)器,它提供了針對(duì)SQL Server的優(yōu)化。如從適應(yīng)多類(lèi)數(shù)據(jù)庫(kù)的連接應(yīng)用考慮,也可選擇OLE DB的連接方式,在失去一些性能優(yōu)勢(shì)的情況下,使得更換到其它的數(shù)據(jù)庫(kù)應(yīng)用更為靈活。ADO.NET的設(shè)計(jì)并未將數(shù)據(jù)集(DataSet)與數(shù)據(jù)架構(gòu)結(jié)合的緊密,這讓信息系統(tǒng)可使用不同的數(shù)據(jù)庫(kù)服務(wù)。
對(duì)于非微軟的數(shù)據(jù)庫(kù)產(chǎn)品,如Oracle數(shù)據(jù)庫(kù),同樣有著多種連接方式的選擇,使用Oracle提供的驅(qū)動(dòng)直接連接,性能上更占優(yōu),而使用OLE DB的方式(連接實(shí)際上調(diào)用Oracle提供的OLE DB驅(qū)動(dòng))在靈活上占優(yōu)。
對(duì)于文件型的數(shù)據(jù)庫(kù)或是非SQL的數(shù)據(jù)庫(kù),OLE DB可能是唯一的選擇(ODBC的方式從原理上要認(rèn)為是OLE DB的一種,不單獨(dú)討論)。這類(lèi)的連接通常是實(shí)時(shí)連接,并不適用多用戶(hù)訪問(wèn)的系統(tǒng)。如存在性能問(wèn)題,且在數(shù)據(jù)庫(kù)上又無(wú)法解決(如無(wú)法將文件型數(shù)據(jù)庫(kù)更換為關(guān)系型數(shù)據(jù)庫(kù)),就需要在設(shè)計(jì)上構(gòu)建一層對(duì)外服務(wù)的接口,用于處理多用戶(hù)的訪問(wèn)。
無(wú)論是Windows應(yīng)用、Web應(yīng)用,以及移動(dòng)應(yīng)用,ADO.NET都提供了豐富的數(shù)據(jù)操作組件。在設(shè)計(jì)時(shí),分離界面層與服務(wù)層是理想的模式,這使得你的系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)庫(kù)無(wú)關(guān)性,你可以借助Windows應(yīng)用提供更為強(qiáng)大的功能,借助ASP.NET提供靈活的Web訪問(wèn),也可以輕松遷移到移動(dòng)端應(yīng)用。ADO.NET在其中提供了連接不同數(shù)據(jù)庫(kù)和向不同客戶(hù)端提供標(biāo)準(zhǔn)的數(shù)據(jù)信息的作用。而在界面層,不同的環(huán)境下使用不同的數(shù)據(jù)組件,實(shí)現(xiàn)對(duì)相同的數(shù)據(jù)信息訪問(wèn),從而保障了系統(tǒng)的靈活性。
隨著我國(guó)網(wǎng)絡(luò)的普及程度越來(lái)越高,各種各樣的網(wǎng)絡(luò)信息技術(shù)應(yīng)用已經(jīng)改變或是正在改變著人們的生產(chǎn)和生活。其中數(shù)據(jù)庫(kù)作為網(wǎng)絡(luò)信息技術(shù)存儲(chǔ)和使用的核心,得到了更加廣泛的應(yīng)用。而基于.NET技術(shù)進(jìn)行開(kāi)發(fā)的數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)應(yīng)用,降低了數(shù)據(jù)庫(kù)應(yīng)用的難點(diǎn),使數(shù)據(jù)庫(kù)在更加廣泛的應(yīng)用中能夠發(fā)揮更大的作用。
[1] 成孝俊.基于ADO.NET的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)研究與應(yīng)用[J]. 電腦知識(shí)與技術(shù), 2016, 12(16):1-2.
[2] 曹盟.基于.NET技術(shù)的數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用研究[J]. 無(wú)線互聯(lián)科技,2016(2):139-141.