.net 托管WCF服务还是要求消费者托管WCF服务?
我需要在.NET中实现一个桥接应用程序,在较高的层次上.net 托管WCF服务还是要求消费者托管WCF服务?,.net,wcf,web-services,soa,.net,Wcf,Web Services,Soa,我需要在.NET中实现一个桥接应用程序,在较高的层次上 在背面,与OCR系统对话,向他们发送图像并以可读格式从图像中获取数据 在前端,应用程序将使用网桥的服务(WCF或其他)提交图像并期望可读数据作为响应 整个操作将处于异步模式 使用网桥服务的应用程序可以是基于.NET或Java的。(将来也有可能出现现有的大型机应用程序) 我的问题是关于将可读数据发送回消费应用程序的解决方案。由于WCF回调无法与Java互操作,因此我无法使用wsDualHttpBinding。因此,我目前看到的两个备选方案
- 在背面,与OCR系统对话,向他们发送图像并以可读格式从图像中获取数据
- 在前端,应用程序将使用网桥的服务(WCF或其他)提交图像并期望可读数据作为响应
- a) 将另一个web服务托管在消费 应用程序可以轮询李>
- b) 让每个使用者应用程序基于 桥接器以自己的技术提供标准化的wsdl。 然后,当应用程序的Web服务 数据准备就绪
- 对于a),轮询总是资源密集型的,但是消费者 应用程序只需要使用此Web服务(生成自己的Web服务) 代理类)李>
- 对于b,对于每个需要注册的应用程序 有了网桥,他们需要创建自己的Web服务。这 似乎不像SOA架构建议的那样松散耦合
有没有其他方法来实现这一点 在这种情况下,我会选择解决方案a),尽管这可能意味着轮询。。。但是解决方案b)如果中间有安全措施(网络/防火墙/代理…),可能会导致您的服务无法调用其服务,则可能会出现问题。。。或者他们可以以某种不兼容的方式实现WSDL 即使您实施了解决方案b)IMHO,您也必须提供解决方案a)作为备用方案 解决方案a)工作正常的概率最高,因为客户端必须已经实现一些Webeervice调用来发送图像数据 您可以使解决方案a)服务器端相当高效,因为操作(OCR)相对而言是“长期运行”的,因此当前状态可以大量缓存在Web服务中-也许每隔10秒左右更新一次状态就足够了 编辑:
解决方案b)的另一个问题是:当您尝试调用他们的Web服务时,如果他们的Web服务关闭了一段时间,会发生什么?您必须实现某种排序(持久?)队列等,以使其可靠…我将使用pub-sub实现它的方法如下: 创建两条消息: GenerateOCRDataRequest-包含ClientID,图像字节[] OCRProcessCompleted-包含ClientID,ProcessedData字节[] 客户端应用程序将订阅OCRProcessCompleted,并将其各种clientID作为筛选器。他们还将发布GenerateOCRDataRequest并包含他们的clientID,这样当响应返回时,他们将只获得自己的请求 桥接应用程序将订阅GenerateOCRDataRequest -当它收到它时,它将处理它,然后发布OCRProcessCompleted和必要的数据 在这个场景中,我假设客户机和网桥都将有一个队列,其中将放置已发布的消息,并且它们将根据需要从队列中弹出消息 如果您想实现关于所述的场景,可以使用提供Java和.NET api的应用程序进行发布。这里还有一些关于如何使用它的示例: 希望这有帮助我在拉皮条:)它是免费的,所以没有钱从中获得