我是否必须使用WCF序列化/反序列化Silverlight应用程序中的对象?

时间:2017-02-03 15:11:53

标签: c# .net wcf silverlight

我想在Silverlight中创建和使用WCF服务。我创建了一个从数据库中返回此模型的服务:

self.click = function()
{
    $scope.Message = "2";        
}

服务如下:

namespace SilverlightWithWCFService.Web
{
    [DataContract]
    public class Customer
    {
        [DataMember]
        public string CustomerName { get; set; }
        [DataMember]
        public string CompanyName { get; set; }
        [DataMember]
        public string ContactName { get; set; }
    }
}

在我的Silverlight应用程序中,我添加了一个服务引用。此方法调用服务操作:

namespace SilverlightWithWCFService.Web
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode =  AspNetCompatibilityRequirementsMode.Allowed)]
    public class SampleService
    {

        [OperationContract]
        public List<Customer> CustomerList()
        {
            var custList = new List<Customer>();

            // populate custList

            return custList;
            }
        }
    }
}

所以我的问题是:我不知道Silverlight如何与WCF一起工作。我是否必须在WCF端序列化某些内容并在客户端反序列化返回值?如果是这样,缺少什么代码? (在哪儿?)

更新

我认为基于一些在线questions。我应该在已完成的事件代码中反序列化返回的 public Page() { InitializeComponent(); SampleServiceClient client = new SampleServiceClient(); client.CustomerListCompleted += new EventHandler<CustomerListCompletedEventArgs>(client_CustomerListCompleted); client.CustomerListAsync(); } void client_CustomerListCompleted(object sender, CustomerListCompletedEventArgs e) { CustomerGrid.ItemsSource = e.Result; } 吗?

1 个答案:

答案 0 :(得分:1)

  

我是否必须在WCF端序列化某些内容并在客户端反序列化返回值?

不,当您使用Web服务时,底层代码将为您完成所有这些操作。

不要挂断它是Silverlight。只需将Silverlight视为控制台应用程序即可。无论在控制台应用程序中需要做什么来使用Web服务,都必须在Silverlight中进行。唯一的区别是您需要以异步方式处理调用,但这与您的问题所涉及的Web服务的使用是分开的。

请注意,在编译期间,有一个竞争技术可以完成Web服务的所有更新。这被称为RIA服务,这是一个不同的动物。

我建议您使用WCF Web服务,但更新发送/接收缓冲区的大小,以便在任何真正的数据传输上轻松完成。