天天看點

.NET實作之(WebService資料提供程式)

說起資料提供程式大家都不陌生,資料提供程式的作用就是以統一的接口去通路不同的資料源,如OledbProvider、SqlServerProvider、OrcaleProvider等等;不同資料源的通路其實是不一樣的,微軟資料源的通路方式從ODBC到ADO.NET經曆了很多路程,各大資料源提供商,都在不斷的生産不同結構的資料庫,為了以統一的接口去通路各種不同的資料源,微軟的.NET為我們提供了ADO.NET,我們通過ADO.NET可以很友善的通路不同廠商生産的不同資料庫,ADO.NET也為後期自定義資料提供程式規定了一套接口,隻要我們自己去實作它就可以用同一種方式,通路我們自己的資料源,我們可以通過封裝通路我們的XML資料源、文本資料源、二進制資料源、WebService資料源、對應用程式員來說,可能有很少一部分人去關注背景的具體實作的細節;對于剛畢業的學生來說,大部分的知識還沒有轉變成對技術的主觀思考,剛剛接觸資料提供程式可能有點陌生,是以我們盡可能的将複雜的東西進行簡單化,讓不需要接觸背景代碼的程式員就不要接觸,減少思考的時間;

今天我要向大家介紹的是WebService資料提供程式,是建立在ADO.NET一套規範接口上的,為什麼我會有這樣的想法去寫這個提供程式,主要來源于我在一段工作時間中不斷遇到企業使用我們的分布式系統遇到的種種問題,因為我們的分布式系統是采用.NETRemoting實作的,端口是用的8085,走的是TCP協定;給企業部署項目的時候,由于企業的網絡結構比較複雜,在加上我們不了解企業的網絡結構,是以在很大程式上增加了我們的維護工作量,也給企業帶來了很大的維護時間開銷,我們的.NETRemoting是用Windows服務作為宿主,部署在應用伺服器上,通過路由器的端口映射來處理用戶端的TCP請求;很少一部分企業的網絡結構簡單,沒有複雜的安全防線,由于我們公司做的項目相對而言還是比較大的,都是一些大中型企業;他們的網絡的系數很高,防火牆的設定基本上是不允許使用TCP協定的,而且除了常用的協定端口如HTTP的80、FTP的21等,其餘的一律封閉,是以我們的系統很難部署使用,但是後來這個問題也解決的了,将.NETRemoting部署到IIS上了,也通過80端口進來再由.NETRemoting子系統去處理;但是過了一段時間,我感覺通過WebService也能很好的實作,是以就寫出來與大家分享一下,可能有人覺得WebService沒有.NETRemoting效率高,對于大資料量可能會有問題,還有WebService的安全認證怎麼控制,這些問題如果需要可以上網參考相關資料,對于安全認證可以在C/S系統加上Session的相應機制,這裡就不多說了;

1:

該圖給出一般分布式系統的網絡拓撲圖,企業和伺服器各自在内網,企業通過WebService資料提供程式通路我們的資料源;

2:

在下已經實作一個基本的原型,在HZ.DataProvider.WebServiceDBManager伺服器項目中,可以實作很多種資料源,在WebService與資料庫伺服器之間可以架設ORM很寬松的實作資料通路,可以随意切換資料庫類型;這樣層層隔離,也是一種好的開發方式;

3:

<a href="http://blog.51cto.com/attachment/201105/143521968.jpg" target="_blank"></a>

通過提供程式擷取DataReader對象,前台完全和以前我們所熟悉的一樣開發,對于剛進公司開發的程式員來說,也是一中解脫,不需要關注背景複雜的實作,隻需要按照一貫的方式開發就行;

4:

<a href="http://blog.51cto.com/attachment/201105/143539151.jpg" target="_blank"></a>

5:

<a href="http://blog.51cto.com/attachment/201105/143555878.jpg" target="_blank"></a>

圖5是伺服器端的實作代碼,這部分代碼就是連接配接資料庫伺服器的代碼,将用戶端傳遞過來的SQL去執行,并傳回資料庫傳回的結果給用戶端;

 本文轉自 王清培 51CTO部落格,原文連結:http://blog.51cto.com/wangqingpei557/567769,如需轉載請自行聯系原作者