
Web service出自于一個引入注目的概念,并如暴風(fēng)雨一樣被行業(yè)界所引用。雖然這一技術(shù)的進(jìn)步比較緩慢,但其勢頭毫無下降的趨勢。微軟很快認(rèn)識到Web service的強大潛力,并將其應(yīng)用在各種產(chǎn)品的開發(fā)中。
開發(fā)人員經(jīng)常轟擊行業(yè)內(nèi)使用的縮寫詞,比如WSDL,COM,DCOM, HTML,RSS以及HTTP。你可能很難確定哪些縮與詞值得注意。SOA(service-oriented architecture)是微軟一項項目,它可謂是縮與詞應(yīng)用的一個例子。
SOA通常會與Web service相關(guān)聯(lián)。當(dāng)這一關(guān)聯(lián)不正確時,Web service將無需執(zhí)行SOA。SOA產(chǎn)生一個系統(tǒng)的“弱耦合”,此時系統(tǒng)將不能被看成獨立的實體,它們被開放與其它系統(tǒng)相互聯(lián)系。一個系統(tǒng)可以被另一系統(tǒng)調(diào)用并執(zhí)行一個任務(wù),并且后一系統(tǒng)不需要知道前一系統(tǒng)的內(nèi)部工作過程。
這一過程與DCOM技術(shù)有些不太相同。DCOM或其它同類技術(shù)的問題在于系統(tǒng)建立和所有權(quán)技術(shù)。XML的出現(xiàn)提供了有效封裝數(shù)據(jù)的方式,而比如SOAP的傳遞標(biāo)準(zhǔn)也將使得在網(wǎng)絡(luò)上發(fā)送XML成為可能。
然而,Web service很快被IT業(yè)認(rèn)為是執(zhí)行基于SOA方案的一個關(guān)鍵組成部分。而在這一點上微軟可謂有當(dāng)其沖。微軟將SOA應(yīng)用在其系列產(chǎn)品開發(fā)中。我們范例的解決方案將利用微軟的不同產(chǎn)品成員說明從軟件開發(fā)的開始到使用的過程。在開發(fā)一個解決方案之前讓我們看看假定范例程序的概貌。
在范例中,我們將利用到可用于任何SQL Server安裝版本的流行Northwind數(shù)據(jù)庫。Northwind公司能夠通過容易使用的接口來提供產(chǎn)品信息,而這一過程無需與Northwind工作人員聯(lián)系。
與Northwind工作人員的交談得到,該公司很多用戶都可以使用計算機系統(tǒng)獲得Northwind公司W(wǎng)eb站點上的信息。其中一種簡單的方法是通過Web接口來獲得Northwind站點上的信息。而更為恰當(dāng)?shù)姆椒ㄊ情_發(fā)Web service來處理獲得信息的請求過程。因此,這些服務(wù)可以通過一個Web接口而實現(xiàn),即直接通過用戶程序或者其它客戶程序而得到實現(xiàn)。
由于并非所有的用戶都會使用計算機或者Web連接,由此這一方法無法完全脫離與Northwind工作人員的聯(lián)系。然而,這可以使得公司的用戶相互聯(lián)系。現(xiàn)在讓我們將注意力集中在解決方案的設(shè)計上。
既然我們已經(jīng)決定執(zhí)行一個解決方案,我們必須弄清楚后臺的數(shù)據(jù)結(jié)構(gòu),因為這有助于了解需要的數(shù)據(jù)類型。我們可以使用多張數(shù)據(jù)表格,并且將使用存儲程序處理信息請求。存儲程序的使用可以提高處理性能,因為它們通過數(shù)據(jù)庫服務(wù)器編譯,并將部分工作放置在數(shù)據(jù)庫服務(wù)器中。對數(shù)據(jù)結(jié)構(gòu)的熟悉可以掌握以下的信息:
Products table:包含產(chǎn)品ID的信息。用戶能夠通過產(chǎn)品ID、產(chǎn)品名稱、提供商ID、提供商名稱、類別名稱、以及類型ID等搜索產(chǎn)品。
Suppliers table:用于通過產(chǎn)品請求返回或搜索提供商的信息,常與Products table聯(lián)合使用。
Categories table:用于通過產(chǎn)品請求返回或搜索產(chǎn)品類別的信息,常與Products table聯(lián)合使用。
現(xiàn)在我們已經(jīng)了解了涉及到我們開發(fā)和測試的存儲程序相關(guān)的數(shù)據(jù)結(jié)構(gòu)。我們將使用到六種存儲程序:
sp_GetProductByID: 返回與產(chǎn)品ID參數(shù)相匹配的所有產(chǎn)品。.
sp_GetProductByName: 返回與產(chǎn)品名稱參數(shù)相匹配的所有產(chǎn)品。
sp_GetProductByCategoryID: 返回與類別ID參數(shù)相匹配的所有產(chǎn)品。
sp_GetProductByCategoryName: 返回與類別名稱參數(shù)相匹配的所有產(chǎn)品。
sp_GetProductBySupplierID: 返回帶有提供商ID參數(shù)的所有產(chǎn)品。
sp_GetProductBySupplierName: 返回帶有提供商名稱參數(shù)的所有產(chǎn)品。
存儲程序相對比較簡單。每一存儲程序接收一個獨立的參數(shù),并使用一個基本SELECT語句根據(jù)使用的表格和數(shù)值返回相匹配的記錄。你可以在Listing A中找到每一存儲程序的源代碼。
一旦我們建立和保存存儲程序,我們可以使用SQL Server Query Analyzer客戶程序測試它們。假設(shè)在運行這些存儲程序過程中沒有出現(xiàn)問題,我們就可以進(jìn)入下階段的開發(fā)。
隨著數(shù)據(jù)庫的建立,我們可以建立數(shù)據(jù)庫接口Web Service。Web Service將提供數(shù)據(jù)庫的接口,而這一過程可以隱藏從客戶端連接和返回數(shù)據(jù)的繁瑣細(xì)節(jié)。Web Service代碼將利用Microsoft Data Access Application Block (DAAB)與SQL Server相互連接。
CIO頻道人物視窗
CIO頻道方案案例庫
大數(shù)據(jù)建設(shè)方案案例庫
電子政務(wù)建設(shè)方案案例庫
互聯(lián)集成系統(tǒng)構(gòu)建方案案例庫
商務(wù)智能建設(shè)方案案例庫
系統(tǒng)集成類軟件信息研發(fā)企業(yè)名錄