【问题标题】:WCF vs. Sockets performanceWCF 与套接字性能
【发布时间】:2017-11-24 10:20:20
【问题描述】:

我目前正在阅读 WCF 和 Sockets(此处和 MSDN 上)。

据我所见,WCF 比套接字慢,但更易于使用。

有以下情况:

  • 500 位客户
  • 客户端向它响应的服务器发送请求
  • 客户端还会向服务器发送状态报告
  • 服务器响应的范围可以从收到消息到向它们传输 200 MB 数据。

  • 所有通信都经过加密(例如 SSL)

我的目标是尽可能安全地处理所有通信(就异常、超时等问题而言是安全的),并且易于维护程序。

还有较少的数据传输密集的请求/响应需要快速(因此只需传输几 KB 的数据)。

我的问题是,WCF 比套接字慢.....WCF 是否仍然足够快以处理如此大的系统/情况,或者套接字会是更好的方式吗?

编辑: 正如 cmets 中提到的 ASP.NET 和其他基于 web 的解决方案也可以做到这些,因此不仅普通的套接字而且 websockets 也很有趣(web sockets vs. wcf 应该与 sockets vs. wcf 没有太大区别)。

【问题讨论】:

  • 你所说的sockets是指websockets吗?
  • SSL 不编码 数据,SSL 加密 数据。那里有很大的不同。套接字(如果您指的是 Socket 类)是 .NET 上最低的网络类型,所以是的,它始终是编程速度最快但速度最慢的。 WCF 几乎不再使用,基本上只用于网络内应用程序。对于 HTTP/HTTPS,请查看 ASP.NET Web API 或 ASP.NET Core。也就是说,500 个客户是一个相当低的数字。
  • @CamiloTerevinto tnx 我知道除了编码之外还有另一个词,但谷歌只提出了编码。将尽快在文本中更正。到目前为止,我们使用 asp.net 并且只有问题(IIS 挂起,....),这就是为什么我们现在正在讨论以不同的方式做它(并且套接字和 wcf 出现了)
  • @evk 不,我指的是套接字
  • 使用原始套接字,您将花费大量精力而毫无用处。 500 个客户端并不多,任何东西都可以处理这样的数量,无需寻求最终的性能优化。鉴于您的描述 - 我只会使用 asp.net(不是 WCF 的粉丝)。

标签: c# sockets wcf


【解决方案1】:

Websockets 在比 WCF 更低的级别上工作,因此在这个意义上它也会“更快”。

但首先我会问你是否真的需要这种额外的速度?
这有点像问你是否应该买法拉利而不是迷你,因为法拉利更快。

是的,但除非您总是需要以 200 公里/小时以上的速度比赛,否则您不会获得任何好处,尤其是在限速 50 公里/小时的道路上!

您需要首先确定您的真正需求。客户的数量(500)和偶尔的大响应的规模不会有太大的不同。您需要确定每秒需要处理多少个请求。这些请求的平均大小。然后根据您需要的带宽。

请记住,无论您使用何种技术,物理电缆(或 wifi 网络)的运行速度都完全相同。所以实际上“速度”不是问题,而是带宽或延迟可能是问题。

这些问题可以通过使用正确的架构来处理您的请求来解决。这意味着能够扩展您的应用程序以满足您的需求。

因此,您需要确定应用程序中的瓶颈是什么。 例如:您的服务器将不得不对其接收到的数据做一些事情,也许将其写入数据库。这可能是您的瓶颈,因此 Websockets 或 WCF 对您每秒可以处理的操作数没有影响。

同样,如果您的服务器是单线程的,那么它就无法扩展,所以再次使用的技术没有区别,这不是您的问题。

也许您过于关注某一方面,而不是大局。我想你可能在这里有点XY problem

我确实也发现了这些,这可能很有趣; https://msdn.microsoft.com/en-us/library/bb310550.aspx

WCF performance, latency and scalability

http://www.ganshani.com/blog/2014/02/optimizing-performance-of-your-wcf-services/

http://theburningmonk.com/2010/05/wcf-improve-performance-with-greater-concurrency/

我相信你可以找到更多

【讨论】:

  • OP 谈论的是sockets 而不是网络套接字。注意问题中的标签。否则很好的答案:)
  • @MickyD。不幸的是,该标签是在我回答之后发布的,我做了一个(错误的)假设!
  • @jason.kaisersmith 我认为虽然 websockets 和套接字之间没有足够的区别,但关于“只是”套接字的答案会有很大不同。我将在那里稍微调整一下这个问题。
猜你喜欢
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 2010-12-25
  • 2021-09-21
  • 2010-11-17
  • 2013-02-05
  • 1970-01-01
  • 2012-03-05
相关资源
最近更新 更多