我需要在.NET中实现一个桥接应用程序,在高层次上,
整个操作将处于异步模式。
将消耗桥接服务的应用程序可以主要基于.NET或Java。 (未来可能存在大型机应用程序)
我的问题是关于将可读数据发送回消费应用程序的解决方案。由于WCF回调不能与Java互操作,我不能使用wsDualHttpBinding。因此,我目前看到的两个替代方案是:
我对这两个选项的问题是:
我的问题是,哪一个更可取,以保持系统的可扩展性和可扩展性? 有没有其他方法来实现这个?
答案 0 :(得分:2)
我会在这种情况下选择解决方案a)虽然它可能意味着轮询......但是,如果有安全措施(网络/防火墙/代理......)可能导致您的服务,解决方案b)可能有问题无法调用他们的服务......或者他们可以以某种不兼容的方式实现WSDL ......
即使您实施解决方案b)恕我直言,您也必须提供解决方案a)作为后备......
解决方案a)具有最高的工作可能性,因为客户必须已经实施了一些webseervice调用来发送图像数据......
并且你可以使解决方案a)服务器端相当高效,因为操作(OCR)相对“长时间运行”,因此当前状态可以在web服务中大量缓存 - 也许每10秒更新一次状态将是足够...编辑:
解决方案b)的另一个问题是:当你尝试调用它时,如果他们的web服务暂停一段时间会发生什么?你必须实现一些排序(持久?)队列等,以使这个可靠......
答案 1 :(得分:0)
我实现它的方式如下使用pub-sub:
创建两条消息: GenerateOCRDataRequest - 包含ClientID,Image byte [] OCRProcessCompleted - 包含ClientID,ProcessedData byte []
客户端应用程序将使用各种clientID作为过滤器订阅OCRProcessCompleted。他们还将发布GenerateOCRDataRequest并包含他们的clientID,以便在响应返回时,他们只会获得自己的请求。
桥接应用程序将订阅GenerateOCRDataRequest - 当它收到它时,它将处理它,然后发布带有必要数据的OCRProcessCompleted
在这种情况下,我假设客户端和网桥都有一个队列,发布的消息将被放置,他们只需根据需要从队列中弹出消息。
如果要按照描述实现场景,可以使用http://pservicebus.codeplex.com/在Java和.NET中提供api来执行pub-sub。这里还有一些如何使用它的示例:http://pservicebus.codeplex.com/wikipage?title=Samples%2fExamples&referringTitle=Home
希望有所帮助