當下web橫行的年代顽聂,為滿足不同的業(yè)務需求使用不同的技術,甚至語言可謂是屢見不鮮么伯,究其原因還是那句話:沒有最好的技術疟暖,只有最符合的技術,一切都是為了業(yè)務服務田柔。那么在編程語言不同的情況下俐巴,傳遞數據成了一個項目中難以解決的問題,于是SOA技術就此誕生硬爆。
SOA :面向服務編程欣舵,嚴格來講, SOA 應該算的上是一種程序架構的方法摆屯,也可以說的上是一種思想邻遏。究其產生的原因糠亩,主要就是項目中的模塊越來越多,但是模塊和模塊之間存在語言沖突准验,沒有辦法完成很好的交互赎线,于是 SOA 應運而生。
那么在c#中常用的解決交互問題的方法都有什么呢糊饱,當然不僅僅是 Web Service 一種垂寥,除了 Web Service 之外,還有 WCF 以及 WebAPI 另锋。本章就單純的講一講Web Service的使用滞项。
Web Service:既然是存在交互問題,那么肯定就是有個平臺夭坪,那么首先我們先打開兩個 vs2017 文判。并建立程序,命名為 MyWebTest 的 MVC 項目室梅,在 MyWebTest 中新建文件夾 WebService戏仓,我們被調用的方法就要寫在這里邊。并在里邊新建一個web服務項目(asmx)
接下來我們看一下生成的asmx文件里邊到底有什么
很簡潔亡鼠,只有一個叫 [ WebMethod ] 的特性赏殃。接下來我們手動添加一個方法
然后我們嘗試打開這個頁面
可以看到,我們寫在程序的方法在頁面中是有顯示的间涵,我們可以看一下仁热,此時點擊調用會出錯,因為我們能建立的是 MVC 項目勾哩,而 MVC 項目是使用路由控制跳轉地址的抗蠢,所以我們需要在路由里邊進行一下修改
這樣就可以運行并調用成功了。接下來我們打開另一個vs2017平臺思劳,建立一個項目物蝙,我建立的單元測試項目,也可以建立別的項目敢艰。起名為WebServiceTest。
我們可以看到册赛,在自動生成的 UnitTest 中自動填充了部分代碼钠导,其中 [ TestClass ] 特性標記的是類,表示這是一個測試類森瘪, [ TestMethod ] 標記的是方法牡属,值得一提的是如果不使用該特性標記某方法的話,那么在測試調試的時候是找不到那個方法的扼睬。接下來逮栅,就是需要將剛剛寫好的 Web Service 引用到這個測試類中悴势。
然后我們就可以在測試類中使用發(fā)布在服務器上的方法了。
在這里解釋一下斷言措伐,斷言是測試類里邊特有的封裝方法特纤,是為了滿足測試的時候當出現又返回結果但是返回結果與預期不符的時候測試不能成功而出現的方法,比如上圖侥加。在斷言里邊調用add方法傳入1和2捧存,得到的應該是3,此時與后面的結果是一致的担败,那么這個測試方法就是可以通過的昔穴,否則是不能通過的。
最后我們再來說一說 Web Service 的權限認證問題提前,其實一般在 Web Service 中我們是不考慮權限問題的吗货,因為基本都是企業(yè)內部的使用,但是當下的時代狈网,安全是最重要的宙搬,所以為了以防萬一,我們還是說一說權限的問題孙援,在 Web Service 中權限認證是可以通過Soap協(xié)議的Header來實現的害淤。具體實現方式如下:
1.首先建立一個實體類,用來盛放用戶驗證信息的拓售,注意窥摄,這個實體類一定要繼承自SoapHeader
2.接下來我們在代碼里進行一些修改
這下我們在運行一下add方法試試,
可以看到础淤,得到的結果并不是3而是-1崭放,這說明用戶權限的校驗已經生效了。接下來我們試一試遠程調用的時候用戶權限校驗是否可用
我們直接看斷言的結果:
從結果上看鸽凶,我們已經成功了币砂,i 得到了想要的3,用戶驗證的權限問題也完成了玻侥。
以上就是對 Web Service 的基本應用决摧,學到新東西之后會持續(xù)更新。