如何从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中拥有一个中等层次的数据访问方法