【问题标题】:Consuming a WCF Duplex service inside of a RESTful service在 RESTful 服务中使用 WCF Duplex 服务
【发布时间】:2011-10-25 21:09:30
【问题描述】:

假设我想创建一个 WCF WebHTTP 服务(“ServiceREST”),它引用了一个双工服务(“ServiceDuplex”)。 ServiceDuplex 需要实现某些回调成员来传递从它请求的数据。例如,对 ServiceDuplex 上的 GetCustomers 的调用会触发该服务上的一个方法,该方法通过回调“ReceiveCustomers”将客户服务回客户端。

话虽如此,假设我想要一个 ServiceREST 上的方法“GetSingleCustomer”。假设所有数据都是按需检索的(而不是在启动后缓存),我必须首先从 ServiceDuplex 调用“GetCustomers”并等待我的集合填充到我实现的回调中,然后才能搜索单个客户我需要。

由于 webHttp 不支持对客户端的回调,我不得不在我的 GET (GetSingleCustomer) 调用中使用 AutoResetEvent 之类的东西,直到双工的回调填满集合。

对于我正在尝试做的事情是否有“最佳实践”,或者我正在尝试做的事情是错误的以至于没有创建这样的实践?!

感谢您的帮助。

【问题讨论】:

    标签: wcf rest duplex webhttpbinding wcf-callbacks


    【解决方案1】:

    保持简单,ServiceDuplex 没有做应该做的事情,比如使调用异步,那么为什么要首先使用它...只坚持只使用 REST。

    【讨论】:

    • 我真的没有选择只坚持 REST。 ServiceDuplex 已经存在,我需要它的数据。另外,为什么 ServiceDuplex “没有做它应该做的事情”?
    • 在我们的方法中创建了一个双工通道以获取异步行为,将其与 REST 服务链接起来确实是一个重载,它增加了获取响应的时间并根据您的需要取消异步调用为了使它们与 REST 服务同步,我只会将其作为最后一个资源,但这只是我的意见。
    • 我使用双工或 REST 已经有一段时间了,在我的公司我们有一个使用双工的大项目,我的任务是制作一个小型 iOS 客户端,我们有两个选择,将两者集成系统,或者从零开始创建业务逻辑的 REST,最后一个是我们的选择,它工作得非常好,但它是一个小客户端,如果我们必须重写 100% 的双工服务,那就不同了。我的 2 美分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多