WCF与套接字性能

qquasi 发布于 2019-11-08 c# 最后更新 2019-11-08 22:59 10 浏览

我目前正在阅读WCF和套接字(在这里和MSDN上)。 从我看到的WCF比插座慢,但更容易使用。 有以下情况:

  • 500个客户
  • 客户端向它响应的服务器发送请求
  • 客户还将状态报告发送到服务器
  • 服务器响应的范围可以从收到的消息到传输200 MB数据。
  • 所有通讯均已加密(例如SSL)
我的目标是,尽可能安全地处理所有通信(在诸如例外,超时等问题方面是安全的),并且易于维护该程序。 数据传输量较小的请求/响应也需要很快(因此只传输几KB数据)。 我的问题是,WCF比套接字慢...... WCF仍然能够快速处理如此大的系统/情况,或套接字是更好的方式吗? 编辑: 正如在评论中提到ASP.NET和其他基于Web的解决方案也可以这样做,所以不仅正常的套接字,而且还有websockets在那里是有趣的(网络套接字与wcf不应该比套接字与wcf差别很大)。
已邀请:

uut

赞同来自:

Websockets的工作水平低于WCF,因此在这个意义上它也会“更快”。 但首先我会质疑你是否真的需要这种额外的速度?
这有点像问你是否应该购买法拉利而不是Mini,因为法拉利更快。 是的,但除非你总是需要以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/ 我相信你能找到更多