【问题标题】:WCF, returning results back to serverWCF,将结果返回到服务器
【发布时间】:2013-05-23 08:09:40
【问题描述】:

什么是返回的最佳方式

List<object>

返回服务器?以下解决方案要求服务器已经知道该对象。我想知道是否可以在客户端声明对象并在返回列表时让服务器写入结果。

  1. 使用必要的字段和[DataMember][DataContract] 属性在服务器中声明类。通过添加服务参考在客户端中使用它。

【问题讨论】:

  • 选项号 1,是的。
  • @GrantThomas 客户端代码是否可以只包含类声明?
  • 嗯,是的,但是为什么?这种类型违背了强类型、可重用、符合客户端的 Web 服务。您可以在客户端中定义一个类型,使其可序列化,然后通过网络发送字节,但同样,目的是什么?你可能有一个可以理解的理由,但如果没有它,这似乎是一件很奇怪的事情。
  • @HansRudel,这是我的理解。 [DataMember][DataContract] 属性被指定为服务器和客户端提供如何(反)序列化数据的线索。如果您想跳过使用这些属性 - 那么您需要不像往常一样传递数据(通过通道发送 .net 对象),而是通过 xml 或 json 传递数据,并根据需要在服务器上反序列化它们。
  • 只有当服务器知道正在接收什么时才有意义......我不确定它是否可以反序列化它一无所知的对象。我能看到您管理的唯一方法是将其序列化为字符串(json 或 xml)并返回。但是,我一生都看不到这样做的意义。

标签: c# wcf c#-4.0


【解决方案1】:

这是我的理解。
[DataMember][DataContract] 属性被指定为服务器和客户端提供如何(反)序列化数据的线索。
因此,如果您想跳过使用这些属性 - 那么您需要不像往常一样传递数据(通过通道发送 doNet 对象),而是通过 xml 或 json 传递数据,并根据需要在服务器上反序列化它们。

【讨论】:

    【解决方案2】:

    客户端代码是否可以只包含类声明?

    是的,如果它是服务器端的已知类型。因此,您可以将输入作为 Json 或 XML 发送,您可以将其转换回服务器端的对象列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多