在.net1.x中,異步WebService異步調(diào)用的一般方式為調(diào)用方法XX對應(yīng)的BeginXX方法來完成,其過程類似于異步委托的使用。詳情請點(diǎn)此了解。
在.net2.0中(準(zhǔn)確的說是vs 2005中),異步WebService異步調(diào)用的方式的例子: void DoSomethingTest()
{ localhost.Service service = new WindowsApp.localhost.Service(); service.HelloWorldCompleted += new WindowsApp.localhost.HelloWorldCompletedEventHandler(service_HelloWorldCompleted); // do Asyn calling here service.HelloWorldAsync(); } void service_HelloWorldCompleted(object sender, WindowsApp.localhost.HelloWorldCompletedEventArgs e) { if (e.Error == null) { MessageBox.Show(e.Result); } else { MessageBox.Show(e.Error.Message); } } 服務(wù)器端代碼 [WebService(Namespace = "http:///")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Service : System.Web.Services.WebService { public Service () { } [WebMethod] public string HelloWorld() { return "Hello World"; } } 很簡單,沒有了AsyncCallback、IAsyncResult 這兩個煩人的東西,調(diào)用的代碼變得簡潔、優(yōu)雅了,而且可以從e.Result得到強(qiáng)類型的返回值(上例為"Hello World")。但是,有興趣的話,可以看看vs 2005生成的Referance.cs文件,那可比2003中的復(fù)雜很多。其中可以看到System.ComponentModel.AsyncCompletedEventArgs 、 System.Threading.SendOrPostCallback(delegate)這兩個在 .net 1.x 中沒有的“怪物”,估計用到的地方還不止WebService客戶端。有時間再研究看看。 分類: ASP.NET/WEB
0
0
(請您對文章做出評價)
發(fā)表評論
|
|
來自: 悟靜 > 《.net和asp.net》