【发布时间】:2013-05-23 08:09:40
【问题描述】:
什么是返回的最佳方式
List<object>
返回服务器?以下解决方案要求服务器已经知道该对象。我想知道是否可以在客户端声明对象并在返回列表时让服务器写入结果。
- 使用必要的字段和
[DataMember]和[DataContract]属性在服务器中声明类。通过添加服务参考在客户端中使用它。
【问题讨论】:
-
选项号 1,是的。
-
@GrantThomas 客户端代码是否可以只包含类声明?
-
嗯,是的,但是为什么?这种类型违背了强类型、可重用、符合客户端的 Web 服务。您可以在客户端中定义一个类型,使其可序列化,然后通过网络发送字节,但同样,目的是什么?你可能有一个可以理解的理由,但如果没有它,这似乎是一件很奇怪的事情。
-
@HansRudel,这是我的理解。
[DataMember]、[DataContract]属性被指定为服务器和客户端提供如何(反)序列化数据的线索。如果您想跳过使用这些属性 - 那么您需要不像往常一样传递数据(通过通道发送 .net 对象),而是通过 xml 或 json 传递数据,并根据需要在服务器上反序列化它们。 -
只有当服务器知道正在接收什么时才有意义......我不确定它是否可以反序列化它一无所知的对象。我能看到您管理的唯一方法是将其序列化为字符串(json 或 xml)并返回。但是,我一生都看不到这样做的意义。