如何从ASP服务器获取对象到我的Silverlight 3应用程序?

如何从ASP服务器获取对象到我的Silverlight 3应用程序?

问题描述:

我有一些Silverlight应用程序需要对服务器进行查询,是否有可能将对象返回给Silverlight应用程序,或者我如何与服务器通信?如何从ASP服务器获取对象到我的Silverlight 3应用程序?

使用WCF服务。只要您的对象是可序列化的,运行时就会透明地为您进行编码和解码。

一个简单的Silverlight启用WCF服务看起来是这样的:

using System.ServiceModel; 
using System.ServiceModel.Activation; 

[ServiceContract(Namespace = "")] 
[AspNetCompatibilityRequirements(RequirementsMode = 
    AspNetCompatibilityRequirementsMode.Allowed)] 
public class YourService 
{ 
    [OperationContract] 
    public string DoStuff(string arg) 
    { 
     return arg + "stuff"; 
    } 
} 

您可以通过创建一个[DataContract]与您的数据类型替换“字符串”。

在我看来,最好是使用web服务将任何需要的东西运送到您的Silverlight应用程序。我建议您将WebClient类与URI类结合使用以获取数据。例如:

Uri uri = new Uri(//the url of you webservice, UriKind.RelativeOrAbsolute); 

现在创建WebClient类的实例,并添加回调时,从Web服务读取完成被称为:

WebClient wc = new WebClient(); 
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(CallbackMethod); 
wc.OpenReadAsync(uri); 

当数据从服务器检索, CallbackMethod被调用。该方法有一个EventArgs对象,其中包含一个名为result的属性。您可以使用该属性获取您的数据。

Silverlight并不需要ASP函数,如果你有一个单独的服务器上的数据库检出WCF,然后让Silverlight与WCF服务通信,然后与数据库通信,如果你想要更透明的东西,然后尝试WCF RIA服务,这可以让你在Silverlight中拥有一个中等层次的数据访问方法