我有一个使用WCF服务(NetTcpBinding
)实现的客户端/服务器设置。设置是这样的,客户端基本上向服务器发送一些命令和指令(主要是单向呼叫)。但是,服务器可能处于需要非常迅速地将大量数据发送回客户端的情况。我已经实现了目前在主WCF服务上使用回调(服务器非常频繁地进行回调)。下面使用两个WCF服务而不是一个回调?
但我有一段时间让它正常工作。它大多数似乎归结为客户端在服务器正在向客户端发送大量数据的过程中调用服务器时发生的异常/挂起(大部分挂起)。我已经尝试了几乎所有的事情,比如将我的大部分电话设置为[OperationContract(IsOneWay=true)]
,并将ConcurrencyMode=ConcurrencyMode.Multiple
设置为ServiceBehavior
。这减少了挂起的次数,但没有阻止它们。
所以,因为对我来说,迅速得到一个可行的解决方案是最重要的(最后期限将至),我考虑重构有两个WCF服务。第一个就像所有客户端服务器现在使用这些命令一样。第二个方向相反,并且在客户端连接到服务器之后进行设置。该服务将用于将数据发送回客户端。
这种方法有什么缺点吗? WCF服务在两个方向都有问题吗?任何其他提示或技巧?或者我完全不在这个基地?
是否有可能将您的响应分解为多个页面,然后客户端将使后续请求检索?我不知道通过一次服务呼叫发送大量数据是一个好主意。 – Kekoa
@Kekoa - 不是真的......这不符合要求。该服务的重点是以近似实时的方式监控数据馈送。我可以在某种程度上“分块”数据......或者我想我可以让客户端以某个间隔(“GetLastData”类型的呼叫)请求数据。人力资源管理... – Tim