【问题标题】:WCF duplex scenario - notifying server of client errorsWCF 双工方案 - 通知服务器客户端错误
【发布时间】:2012-12-03 11:14:52
【问题描述】:

在客户端服务器 WCF 双工方案中,推荐的方法是让服务器知道客户端发生了错误吗?假设服务器通知其中一个客户端它需要执行某个操作并且客户端抛出异常。

在回调接口上,我有这样的东西

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

什么是最好的方法:

  1. 实现一个NotifyServer(int clientId, string message) 消息,客户端可以调用该消息让用户知道请求的操作失败,
  2. 如果我在操作合同上设置IsOneWay = false,我是否必须在BackgroundWorker 线程上调用每个客户端以保持 UI 响应?
  3. 在服务器上实现异步操作?这将如何运作?我可以在客户端生成异步操作,客户端回调方法是否必须使用相同的模式(BeginWorkEndWork)?

想不出别的,因为IsOneWay = true时在客户端抛出FaultException是行不通的。

有什么建议吗?

提前谢谢你!

【问题讨论】:

    标签: wcf asynchronous duplex


    【解决方案1】:

    广告 1。这是一种方法...如果 Work() 可能需要不可预测的时间并且您不希望服务器线程在该调用上挂起,建议使用。

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

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

    不存在最佳解决方案。这完全取决于您的设置(类、线程等)。您编写的 WCF 层应该易于使用 - 这是主要指导方针。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多