【问题标题】:What should be the return type of WCF Service for large amount of data and wth different clients?对于大量数据和不同客户端,WCF 服务的返回类型应该是什么?
【发布时间】:2015-09-03 05:10:17
【问题描述】:

我创建了一个 WCF 服务,它的返回类型是 Dataset,它是 .NET 框架兼容的客户端。但现在我的要求发生了变化,客户端可以独立于平台,即服务可以被 JAVA、Android 手机和 .NET 应用程序使用。

我的问题是:

  1. 我应该使用哪种数据类型与所有客户端兼容?即 JAVA 没有数据集作为类型(对 JAVA 了解不多)

  2. 我创建的服务是 .NET 框架提供的默认服务(不是 REST,不手动使用 SOAP)

  3. 数据将有千行,哪种返回类型会更好?

  4. 我必须使用 REST、SOAP 处理大量数据吗?

  5. 我怎样才能做到这一点?

请不要将此问题标记为重复!

【问题讨论】:

  • 如果它是重复的,我们为什么不把它标记为这样呢?
  • @MartinKonecny 除了流行语 fanatistm "lolol REZTT LOL",为什么要避免使用 SOAP?
  • @ThorstenDittmar 你可以,但我的问题并不复杂
  • @MartinKonecny 通过使用 REST 我可以发送表格数据?(即目前我正在将数据集发送到 .NET 客户端)但是如何发送到 JAVA 客户端和 ANDROID ?我的意思是,如果我不将返回类型更改为数据集,它们将如何消费?我想提供任何客户都可以使用的服务
  • 打断腿很痛。在习惯于 C#/.net 时使用 Java 只是一个愿意学习新东西的问题。语言战争没有帮助。您的要求是将数据传递给非 .net 客户端,因此请处理它。 Martin 为您提供了一些关于如何做到这一点的好资源。这并不是要冒犯 - 只是厌倦了旧的“语言 XY 很痛苦” - 获胜。

标签: java c# android wcf wcf-binding


【解决方案1】:

对于大量数据,您应该考虑以下几点:

  1. 尝试使用某种压缩。我通常使用 7zip 的开源压缩来减少数据传输。
  2. 在服务器和客户端上使用和共享定义明确的 DTO(数据传输对象)。
  3. 使用流传输数据并正确解析它们。
  4. 如果对象中的 DTO 较少且数据较大,则可以使用 SOAP,否则坚持使用 REST。

【讨论】:

  • 感谢您的回复。我现在不能使用压缩和流。考虑我有 1000 个产品数据行(以前我使用 datset 作为返回类型)那么我如何使用 WCF 传输数据呢?返回类型?如果使用 SOAP 那么如何?请任何指点
  • 我认为通过 WCF 发送数据行或数据集并不是一个好主意。这就是我在回答中所解释的,您需要制作正确的 DTO。
  • 我可以使用 List 作为返回类型吗?我已经阅读了一些说使用 list 不好的线程。返回类型是什么?使用默认 WCF 将返回 SOAP,所以我是否需要更改其他内容?
  • @DirtyDeveloper ...当我说您需要制作自己的 DTO 时,请理解。想象一下,如果您在 PHP 上使用此 Web 服务,您将如何转换 List ?最好为 DT 创建自己的列表/数组或对象。
  • 我想支持所有客户端,包括 JAVA、android 和 NET 应用程序。如果我返回强类型 List 会被其他客户使用吗?对于 NET,我相信它会起作用,但对于其他人,我没有太多想法!这就是我提到 List 的原因
猜你喜欢
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多