首页 新闻 搜索 专区 学院

请问WCF如何得到客户端序列化过来的实体对象,希望有代码提示一下。

0
悬赏园豆:30 [已关闭问题]

我做Silverlight和WCF的项目,实体层位于客户端那边,WCF里面操作数据库,返回泛型集合,里面是实体类型,WCF无法直接饮用,不晓得是怎样通过序列化得到客户端实体对象,完成操作。

 

最高给个demo或代码

Jeremy Ding的主页 Jeremy Ding | 初学一级 | 园豆:0
提问于:2009-07-28 14:24
< >
分享
其他回答(1)
0

Hi,Jiecy

   你的情况满特别的,数据契约的实现由客户端决定。通常情况都是WCF服务为主,服务定义操作契约和数据契约。这个也是面向服务应用程序的原则之一。(如果能改变的话,建议定义数据契约,是在没办法就放弃了。这个方式会导致很多问题)。

  就针对你的问题,一起讨论一下,我确实没有遇到你这样的情况,看看能不能给你一些有帮助的建议~。

1.如果客户端的实体类已经确定,而且是List<T>泛型集合。

你只有让WCF服务来往客户端需要的服务上靠拢了。服务端定义一个和客户端实体类接近的数据契约,然后返回或者参数是你要使用的类型。

2.WCF里List<T>泛型集合结果在传输过程里会转化为数组,也就是客户端实际添加服务引用,调用服务的话,返回的结果为数组。而不是List集合。你在使用的时候,可以再做转化,或者客户端直接使用数组集合。

3.为了实现你的要求,建议你现实现一个简单的返回结果集合的操作。添加服务引用,查看一下客户端代码,reference.cs里有相关客户端饭序列化契约的本地定义,你看看List<T>结果集合和客户端如何处理的,找出对应的转换关系。然后仿照一下代码,写出你客户端要实现的操作。

   WCF分布式开发步步为赢(8):使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据给出了代码,使用List<User>传递数据,User是数据契约,客户端对应生成的也有一个User类(客户端就不叫契约了),作用很想实体类了,仅仅是为了承载数据了。最后有可执行的代码,你可以参考一下。

   如果你非要这样做的话,基本就是一个WCF开发流程倒序的过程。需要服务来配合客户端开发。

希望对你有帮助,有问题可以继续讨论。~

 

 

Frank Xu Lei | 园豆:1860 (小虾三级) | 2009-07-28 18:47
0
GWPBrian | 园豆:428 (菜鸟二级) | 2009-08-12 13:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册