在客户端服务器WCF双工方案中,建议让服务器知道客户端发生错误的方法是什么?让我们说服务器通知其中一个客户端它需要执行某个操作,并且在客户端抛出异常。
在回调界面上,我有类似的东西
[OperationContract(IsOneWay = true)]
void Work(...);
最好的方法是什么:
NotifyServer(int clientId, string message)
消息,让用户知道请求的操作失败,IsOneWay = false
,我是否必须在BackgroundWorker
线程上调用每个客户端才能保持UI响应?BeginWork
,EndWork
)作为客户端回调方法?无法想到其他任何事情,因为当FaultException
无效时,在客户端投放IsOneWay = true
。
有什么建议吗?
提前谢谢!
答案 0 :(得分:0)
广告1.这是这样做的一种方式......如果Work()可能花费不可预测的时间并且您不希望服务器线程挂在该呼叫上,则建议使用。
Ad 2.您应该始终在后台工作程序中执行WCF操作,而不要在UI线程内执行。如果您设置IsOneWay = False,那么显然Work()方法将在服务器上阻塞,直到它在远程客户端上执行完毕并返回结果。但是,即使您设置isOneWay = true,该方法仍将阻止低级别WCF通信。如果WCF连接被丢弃,这可能需要很长时间才能收到通知。
广告3。 模式取决于你。 示例:MSDN: OperationContractAttribute.AsyncPattern Property
没有最佳解决方案。这完全取决于您的设置(类,线程等)。您编写的WCF图层应该简单易用 - 这是主要的指导方针。