【问题标题】:There is a big difference to send to WCF service an object or a list with one object?将对象或带有一个对象的列表发送到 WCF 服务有很大的不同吗?
【发布时间】:2012-03-20 19:12:30
【问题描述】:

有一个很大的区别 - 谈论传输速率,对象序列化 - 向 WCF 服务发送一个对象或带有一个对象的列表?

换句话说,如果我必须传输 1k 个对象或 1k 个只有一个对象的列表。

Obs:这个疑问是关于我必须创建的代码,如果有,我将创建两个方法,一个发送对象,另一个发送列表(如果有很多对象要发送) .但如果没有,我将只创建一个发送列表的方法(可以发送一个或多个对象)。

【问题讨论】:

  • 唯一确定的方法是尝试两种方法,然后测量。
  • 不幸的是我现在无法测试它,但我必须现在决定创建代码并继续我的项目的其余部分。 =/

标签: .net wcf data-transfer


【解决方案1】:

不,发送一个对象的列表和发送一个对象的列表并没有那么大的区别。您正在考虑的是微优化。我很肯定,除了发送对象与对象列表之外,代码中还有其他几个地方可以加快应用程序的速度。

原因如下。想想序列化列表需要什么。列表实际上只不过是一个数组,它只是几个相同类型的对象。当然,系统需要做一些额外的工作,“嘿,这是一个列表”,而不仅仅是一个对象,但它微不足道。你可以自己测试一下。数额小得令人难以置信。

现在你需要考虑你在做什么。序列化不是问题。它在代码中。您可以编写代码来快速处理一个对象,但是相同的代码可以处理 1000、10,000 等。当您允许传输列表并且您没有设置上限(比如说抛出异常,不理想,但它确实有效),您正在接受有人可以传递大量数据的可能性。这就是代码中的超时开始出现问题的地方。你永远不能假设有人只会传入一个包含 10 个对象的列表,所以问题是,“你必须让它异步吗?”要使它正确,还需要做更多的工作。所以你应该问自己,是否值得创建第二种方法来处理处理大量数据的可能性? .Net 中的数据序列化非常好。是的,有定制的解决方案可以让它更快,但在许多情况下,这是你最不用担心的。

【讨论】:

  • 为什么? (谈对象序列化)
  • “当你允许一个列表被转移,并且你没有设置一个上限时,你打开了一个可能有人可以大量传递的可能性。” - 在这部分,我将在 app.config 中设置一个上限。
  • 现在你说服了我! =) +25 给你。 ^^ 所以,谢谢凯文!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多