如何在WCF服务中提供回调SOAP方法合同?
我有一个WCF服务,将某些请求路由到中央处理应用程序。 WCF服务使用基本的HTTP/S绑定;这是为了与各种客户端技术兼容(Java,Python等)。如何在WCF服务中提供回调SOAP方法合同?
我一直负责向服务添加通知,以便客户端应用程序(服务本身)可以调用其中一个带有URI的WCF方法作为参数,以便在原始请求中发送的项目发生状态更改时进行通知。基本上,他们调用该服务并为其添加一个URI字符串以及其他数据。如果/当数据的状态发生变化(可能会在几天后或永远不会发生),他们应该在他们提供的URI处得到一个响应DTO,通知它该变化。
我遇到的问题是实现正确的发布 - 订阅模式显然是not possible in WCF using the basic bindings。我可以手动创建一个SOAP信封并向通过的URI发出呼叫,但我不知道如何通过服务本身实现返回服务应实现的回调方法合约(以便他们可以从WSDL获取它)。
我可以手动将客户端的要求规范放在一起,但我更愿意以消费者服务可以通过编程方式获得的方式提供它,以便它始终与WCF服务本身1:1。
- 有没有更好的方法来做到这一点,牢记我只限于基本的HTTP绑定?
- 如果不是,有没有办法以编程方式公开回调服务方法应该看起来像什么?
您可以使用Duplex绑定,但对于客户端,除.Net之外的其他设备无法使用。
对于您的UseCase,我会考虑检查SignalR的使用情况。它可以托管在你的wcf服务中,并且能够通知你的客户。
另请参阅:SignalR as WCF web socket service。
而且,我还检查的WebSocket使用的可能性
使用XSockets.NET到博斯特我的WCF到实时看到
http://www.codeproject.com/Articles/338789/What-s-new-in-WCF-4-5-WebSocket-support-Part-1-ofhttp://www.codeproject.com/Articles/341413/What-s-new-in-WCF-4-5-WebSocket-support-Part-2-of
谢谢,我正在检查此方法。 – 2013-05-01 15:31:52
这是一个非常有用的答案,但我无法与我们已有的项目合作。接受它虽然我想在这个方向上移动项目。 我们最终为接收者服务发布了XSD。 – 2013-06-19 18:38:17
I'm。您可以使用几行代码从WCF与任何客户端进行通信。 https://github.com/codeplanner/XSocketsWCF上的示例 – Uffe 2013-05-04 07:51:36