介绍:

这个示例演示了如何使用代理,与asp.net web 服务进行通信,这个服务必须是一个基于JSON格式的asp.net ajax 服务。(JSON简介:javascript object notation,轻量级的脚本数据交换格式,比xml格式少不少累赘,并且在客户端脚本编程极其简单,使得它非常流行,详细了解可以登录JSON官网。以及一篇很好的介绍文章

JSON不仅仅是应用在asp.net ajax 服务的数据交换上,它也能用于其他的需要以文本形式进行数据交换的应用场景当中。这篇文章将使用JSON来从asp.net ajax 服务中获取数据。

 

注意:

目前的BrowserHttpWebRequest 类版本不支持跨域,只有基于silverlight的程序和asp.net ajax 服务部署在同一服务器上才行。

 

使用silverlight程序通过JSON格式调用服务的步骤:

创建一个asp.net ajax web 服务。

创建一个银光项目。

创建一个代理来与刚才创建的服务进行通信。

加入托管代码来使用代理接收和传输数据。

 

先决条件:

*    Microsoft Silverlight 1.1 Alpha.

*       Microsoft Visual Studio Code Name "Orcas" Beta 1.

*       Microsoft Silverlight Tools Alpha for Visual Studio Code Name "Orcas" Beta 1.

 

 

 

 

1       创建一个web服务。可以参看这里

2      创建一个silverlight程序。可以参看:这里

3      创建一个代理。可以使用slwsdl.exe工具来创建:C:\SDtree\SilverlightW2>slwsdl.exe /silverlightClient "http://webdocs/uepreview/Samples/Silverlight.net.webservice/cs/WebService.asmx"

当然如果你使用的是orcas创建的程序的话,那么可以直接使用“添加服务引用”,省掉了使用slwsdl.exe工具创建的代码。

4      使用代理调用web服务。

4.1    如果你使用的slwsdl工具来创建代理的话,需要将这份生成的代理类加入到程序中。当然如果你使用的ide工具直接加入的web引用,那么这步就可以省略。

4.2    使用代理调用服务:

1.                                 string symbol = _tickerTextBox.GetAttribute("value");

2.                               _stockService = new WebService();

3.                               _status.Text = string.Format("Calling {0}\r\n", _stockService.Url);

4.                               // Include the proxy object as the asyncState parameter in the call.

5.                               IAsyncResult iar = _stockService.BeginGetQuotes(symbol,

6.                                      new AsyncCallback(OnJsonStockDownload), _stockService);

if (!iar.IsCompleted) _status.Text += "Waiting for response from server";

 

4.3             处理响应:

5          public void OnJsonStockDownload(IAsyncResult iar)

6          {

7          try

8          {

9            // Use the WebService object in AsyncState to obtain the results.

10          StockQuote[] quotes = ((WebService)iar.AsyncState).EndGetQuotes(iar);

11           for (int i = 0; i < quotes.Length; i++)

12           {

13              _result.Text += String.Format("Date {0} Open {1} Closed {2}\r\n",

14              quotes[i].Date,

15              quotes[i].Open,

16              quotes[i].Close);

17           }

18        }

19        

20        catch (Exception ex)

21        {

22           _status.Text = ex.Message;

23        }

24        

25        finally

26        {

27           _requestPending = false;

28           _status.Text = "Done";

29         }

}

 

 

翻译自:http://myspace.silverlight.cn/Quickstart1.1_CH/Remote/UsingJSON.aspx
更多翻译来自:http://myspace.silverlight.cn/Quickstart1.1_CH/default.aspx

posted on 2007-06-17 08:12  silverlightfans  阅读(1310)  评论(0编辑  收藏  举报