正常情況下,每次調(diào)用 WebMethod,服務(wù)器都會創(chuàng)建一個新的 WebService 對象,即便客戶端使用同一個代理對象多次調(diào)用 WebMethod。而我們一旦調(diào)用了有緩存標(biāo)記的 WebMethod,只要未超出緩存期,WebServ " /> 性人久久久久,免费网站在线观看人,伊人久久综合影院

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

簡單的web WebService安全

1. 有關(guān)生存期的補充
正常情況下,每次調(diào)用 WebMethod,服務(wù)器都會創(chuàng)建一個新的 WebService 對象,即便客戶端使用同一個代理對象多次調(diào)用 WebMethod。而我們一旦調(diào)用了有緩存標(biāo)記的 WebMethod,只要未超出緩存期,WebService 對象都不會被重新創(chuàng)建。在緩存期內(nèi)調(diào)用沒有緩存標(biāo)記的 WebMethod,也會繼續(xù)使用該 WebService 對象。有太多因素讓這個緩存機(jī)制變得不那么可靠,因此我們不能奢望用緩存標(biāo)記來維持特定的對象狀態(tài),況且緩存機(jī)制的設(shè)計初衷也只是為了快速輸出那些比較穩(wěn)定非常大的數(shù)據(jù)。
基于多用戶并發(fā)調(diào)用這個環(huán)境,WebService 本身最好設(shè)計成無狀態(tài)對象,我們可以使用 Session 和 Application 來保持特定的狀態(tài)信息。
2. 異步調(diào)用
網(wǎng)上很多人在寫有關(guān) .NET 2.0 的文章時,都喜歡用“優(yōu)雅”這個詞。的確,在 2.0 中編譯器和代碼生成器為我們封裝了很多羅嗦的東西,諸如匿名方法、委托推斷等等,當(dāng)然還有這 WebService 的異步調(diào)用。我們不用再寫那些個 BeginXXX、EndXXX 了,基于事件驅(qū)動的異步機(jī)制會自動為每個 WebMethod 生成一個 XXXAsync 的異步方法和 XXXCompleted 事件,我們只需調(diào)用該方法,并處理該事件即可完成異步操作,當(dāng)真是優(yōu)雅了不少。不要小看 2.0 的這些封裝,我們編寫的代碼越少意味著出錯的幾率越小。
下面的示例中,我們使用了匿名方法來處理事件,看上去更簡潔了些。

代碼
WebServices.cs

[WebService(Namespace
= "http://www.rainsts.NET/", Description="我的Web服務(wù)")]
[WebServiceBinding(ConformsTo
= WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World!";
}
}

Client.cs

WebService ws
= new WebService();
ws.HelloWorldCompleted
+= delegate(object sender, HelloWorldCompletedEventArgs e)
{
Console.WriteLine(e.Result);
};

ws.HelloWorldAsync(
"xxx");

it知識庫簡單的web WebService安全,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 重庆市| 平果县| 公主岭市| 遂平县| 新野县| 沂源县| 雷山县| 封开县| 辽阳市| 潜江市| 南昌市| 尼玛县| 和顺县| 弥勒县| 庄浪县| 三门县| 平罗县| 绥滨县| 仙桃市| 灵武市| 龙川县| 成武县| 鄂伦春自治旗| 教育| 重庆市| 宁国市| 常德市| 垫江县| 平潭县| 浏阳市| 宕昌县| 伊宁县| 卢龙县| 保德县| 遵义市| 肥东县| 伊宁县| 东源县| 大冶市| 陵川县| 仁怀市|