介绍:
这个示例演示了如何使用代理,与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