WCF双工方案 - 通知服务器客户端错误

时间:2012-12-03 11:14:52

标签: wcf asynchronous duplex

在客户端服务器WCF双工方案中,建议让服务器知道客户端发生错误的方法是什么?让我们说服务器通知其中一个客户端它需要执行某个操作,并且在客户端抛出异常。

在回调界面上,我有类似的东西

[OperationContract(IsOneWay = true)]
void Work(...);

最好的方法是什么:

  1. 实施客户端可以调用的NotifyServer(int clientId, string message)消息,让用户知道请求的操作失败,
  2. 如果我在操作合同上设置IsOneWay = false,我是否必须在BackgroundWorker线程上调用每个客户端才能保持UI响应?
  3. 在服务器上实现异步操作?这将如何运作?我可以在客户端上生成异步操作,我是否必须使用相同的模式(BeginWorkEndWork)作为客户端回调方法?
  4. 无法想到其他任何事情,因为当FaultException无效时,在客户端投放IsOneWay = true

    有什么建议吗?

    提前谢谢!

1 个答案:

答案 0 :(得分:0)

广告1.这是这样做的一种方式......如果Work()可能花费不可预测的时间并且您不希望服务器线程挂在该呼叫上,则建议使用。

Ad 2.您应该始终在后台工作程序中执行WCF操作,而不要在UI线程内执行。如果您设置IsOneWay = False,那么显然Work()方法将在服务器上阻塞,直到它在远程客户端上执行完毕并返回结果。但是,即使您设置isOneWay = true,该方法仍将阻止低级别WCF通信。如果WCF连接被丢弃,这可能需要很长时间才能收到通知。

广告3。 模式取决于你。 示例:MSDN: OperationContractAttribute.AsyncPattern Property

没有最佳解决方案。这完全取决于您的设置(类,线程等)。您编写的WCF图层应该简单易用 - 这是主要的指导方针。