Web服務小姐的嫁衣 (四)
下班時間到了,Web Service小姐的座位空著,可能已經走了。WCF先生悠哉游哉的出了公司大門。
高挑的身材,長發(fā)披肩,WCF先生看著前面的美女,不禁快走幾步,想看看是否是"背影殺手"。由于走的太急了,沒注意腳下的臺階,感覺腳下一空,從美女的身邊跌落,胳膊擦到了她的后背,人重重地摔在了臺階上,如同一只趴在地上的青蛙。
胳膊很痛,筆記本甩出了很遠,周圍的東西好像是在另一個世界。WCF先生趴了幾分鐘,經過的人一邊用疑惑的眼光看著他一邊快步的走過。突然覺得眼前一暗,抬頭一看,竟然是Web Service小姐,趕緊窘迫的站起來。
"痛嗎?", Web Service小姐用手拍著WCF先生身上的土問道。
"有點。", WCF先生皺著眉頭回答道。
"怎么這么不小心。", Web Service小姐臉上露出同情。
"著急去趕公司的班車,沒注意臺階", WCF先生不好意思的回答。
剛走了幾步,WCF先生發(fā)現自己的腳扭了,一走路疼的受不了。
"我扶你去那里坐一會吧。",Web Service小姐扶著WCF先生進了公司旁邊的快餐店。晚風吹來,雖然腳很痛,WCF先生還是趕緊很清爽。
快餐店不大,但是窗明幾凈,橙黃色的桌面讓人很有食欲,保潔人員隨時清理著產生的垃圾。Web Service小姐點了兩份飯,又特意點了一份脆骨,說是給他補補鈣,這樣傷好的快些。
感覺有些不好意思,吃完東西,兩人要了兩杯果汁。WCF先生打開了筆記本,"我們繼續(xù)昨天的話題吧。"。
"不用了,你的腳受傷了。", Web Service小姐關切的說。
"沒事,不疼了"。 WCF先生忍著疼痛,裝出一臉輕松的樣子。
"那好吧。", Web Service小姐略帶歉意的說,同時將桌上的餐具拿到了一邊。
"上次我們只是實現了獲取數據的接口,但是很多時候用戶需要增刪改的操作?,F在我們就將上次那個Delete方法完善一下"。 WCF先生打開IBookService.cs,為DeleteBook方法增加了參數,并更改了返回值的類型。
然后又打開BookService.svc.cs,改了對應的實現方法。
"現在這個例子是在內存中操作的,所以我用了這樣的代碼模擬了一下效果,在實際應用中可以增刪改真正的數據庫或其他資源。", WCF先生一邊噼里啪啦的敲著鍵盤,一邊解說著。
"現在我們看一下運行效果。首先用一個不存在的ISBN做參數,看,三條數據都返回來了。"
"現在我們用一個實際存在的ISBN做參數。", WCF先生將參數改成了"ISBN 001"。果然有一條結果被刪掉了。
"可是...",Web Service小姐咬著嘴唇想了一下,"這個恐怕有問題,如果有些惡意客戶通過輸入URL來刪除別人的數據怎么辦?"。
"嗯,有道理,你不提這個我倒是忘了說了,這個就是GET和POST的區(qū)別"。
WCF先生向后靠在椅背上說道:
"其實當初設計HTTP請求的時候,定義了很多種方法,每種方法都是應用于不同的場景: GET方法用來從服務器上獲取資源; HEAD方法用來獲取資源的一些信息而不是資源本身; POST方法用來從客戶端向服務器端發(fā)送信息,比如在線填寫表單,發(fā)送大量復雜的數據到服務器等等; PUT方法用來上傳文檔或者更新文檔到服務器,DELETE方法用來刪除服務器上的資源; TRACE方法用來給客戶查看他發(fā)出的請求都經過了哪些代理或者中轉服務器; OPTIONS方法用戶知道有哪些方法可以用來處理服務器的資源; CONNECT方法用來為用戶建立一個對遠程主機的透明連接,通常是通過一個HTTP代理來實現HTTPS通信。"
"回頭我會把這些區(qū)別發(fā)到你的郵箱里的。", WCF先生看到Web Service小姐有些迷茫,就善解人意的說道。
"謝謝。", Web Service小姐露出甜甜的一笑。
"但是現存的Web框架中,并沒有完全支持這些方法,或者支持的不好。所以現在常用的就是GET和POST方法。", WCF先生繼續(xù)說道,"實際上大部分情況下,POST方法就已經足夠用。用POST方法,用戶就不能通過URL來刪除資源了?,F在我們來試一下"。
WCF先生打開IBookService.cs,改動了DeleteBook方法的定義。
"看,把HTTP方法從GET改成POST就這么簡單。我們再通過URL方法訪問一下。", WCF又在IE中進行了剛才的Delete操作。
"嗯,果然無法通過URL訪問了,這樣安全多了。",Web Service小姐點點頭,烏黑的劉海也隨著上下搖動。
"現在就來用POST方法來訪問它。", WCF先生新建了一個Web Form,放了兩個輸入框,第一個用來輸入要請求的地址,第二個用來顯示返回的結果。
"這里是HTML代碼。", WCF先生打開代碼視圖,讓Web Service小姐看了一眼。
- <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="WebForm1.aspx.cs"Inherits="WcfService1.WebForm1"%>
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <headrunat="server">
- <title></title>
- </head>
- <body>
- <formid="form1"runat="server">
- <div>
- Please input service address:<br/>
- <asp:TextBoxID="txtServiceAddress"runat="server"Width="363px"></asp:TextBox>
- <asp:ButtonID="btnGo"runat="server"onclick="btnGo_Click"Text="Go"/>
- <br/>
- Result:
- <br/>
- <asp:TextBoxID="txtResult"runat="server"Height="98px"TextMode="MultiLine"
- Width="496px"></asp:TextBox>
- <br/>
- </div>
- </form>
- </body>
- </html>
"現在我們來寫C#代碼。",WCF先生打開WebForm1.aspx.cs。編程破萬行,下筆如有神。不到兩分鐘,代碼就寫完了。
Web Service小姐看得有點傻眼,直到WCF先生說"現在我們看一下結果吧。"才回過神來。
WCF先生在IE中打開WebForm1.aspx,在第一個框里輸入剛才在URL中無法直接使用的DeleteBook的請求。
"Let's go.", Web Service小姐條件反射般的拿起包向外走,走到門口感覺有些奇怪,還沒弄完怎么就走了?回頭一看,WCF先生還坐在那里,奇怪的看著她。返回桌前,才明白,原來WCF先生點了Go按鈕,并不是要走。
WCF先生指著電腦屏幕讓她看,Web Service小姐看到了如下的一幕。
"不錯,如果我們把POST改成GET會如何", Web Service小姐的提問讓WCF先生對美女無腦這句話產生了深深的懷疑。非常熟練的將POST方法改成了GET方法。
"Let's Go", WCF先生編譯了一下,打開網頁,輸入剛才DeleteBook的地址,然后點擊了Go按鈕。這次Web Service小姐沒走。
輸入框里顯示了和剛才直接輸入URL時一樣的錯誤信息。
兩人都很滿意的靠在椅背上喝了口果汁。夕陽馬上就要落下,染得天邊一片紅霞。馬尾辮,白色T恤,淡藍色短裙,Web Service小姐在這紅色背景的映襯下顯得更加嫵媚了。WCF先生低頭一看,發(fā)現鞋帶松了,忍不住俯身去系...
原文鏈接:http://www.cnblogs.com/time-is-life/archive/2012/09/13/2683911.html


2010-08-03 21:59:56
2018-06-04 11:23:05




