我们有一个充当触摸屏覆盖的应用程序。它提供自定义触摸屏键盘和数字键盘,它们位于需要键盘输入的其他应用程序的顶部。
它被编写为独立的VB6 ActiveX EXE,并为应用程序提供COM接口,以便在需要时显示键盘等。按下按钮使用SendInput API从触摸服务器反馈到应用程序。
我曾被要求使用WPF来重新处理这个叠加层,同时也要考虑改进叠加层与使用它的应用程序之间的链接。除了单独的按键,我们还希望能够使用代表URL或产品代码的按钮。
新的叠加层将使用WPF用C#编写,将使用它的应用程序都是用VB6编写的。我正在寻找关于如何最好地实现它们之间的双向通信的建议。
我的第一个想法是在叠加层中托管WCF服务并使用回调契约。应用程序将向覆盖图注册,并且接收与覆盖按钮相关的通知将推动回调合同。
客户端都是VB6应用程序,因此需要使用代理dll来包装服务接口。我可以允许客户端通过此接口注册/取消注册,但我不确定如何使用代理实现回调。
客户端应用程序和覆盖可能还会运行一段时间,如何确保通信持久稳定?
我非常感谢您对此方法的任何潜在问题/解决方案的任何意见。或者,如果你认为WCF是错误的选择,我很乐意考虑其他选择吗?
答案 0 :(得分:0)
您是否设想将COM DLL创建为WCF的包装,然后在VB6中使用此对象?
如果是这样,那么您可以让DLL处理回调,然后像往常一样在COM接口上引发一个事件,使用WithEvents对象在VB6应用程序内处理。
使用WCF对我来说听起来像是一种合理的方法,尤其是当您在多个版本之间进行转换时。