如何使用代理类库和VB6客户端实现WCF回调

时间:2011-03-09 16:31:42

标签: c# wcf vb6

我们有一个充当触摸屏覆盖的应用程序。它提供自定义触摸屏键盘和数字键盘,它们位于需要键盘输入的其他应用程序的顶部。

它被编写为独立的VB6 ActiveX EXE,并为应用程序提供COM接口,以便在需要时显示键盘等。按下按钮使用SendInput API从触摸服务器反馈到应用程序。

我曾被要求使用WPF来重新处理这个叠加层,同时也要考虑改进叠加层与使用它的应用程序之间的链接。除了单独的按键,我们还希望能够使用代表URL或产品代码的按钮。

新的叠加层将使用WPF用C#编写,将使用它的应用程序都是用VB6编写的。我正在寻找关于如何最好地实现它们之间的双向通信的建议。

我的第一个想法是在叠加层中托管WCF服务并使用回调契约。应用程序将向覆盖图注册,并且接收与覆盖按钮相关的通知将推动回调合同。

客户端都是VB6应用程序,因此需要使用代理dll来包装服务接口。我可以允许客户端通过此接口注册/取消注册,但我不确定如何使用代理实现回调。

客户端应用程序和覆盖可能还会运行一段时间,如何确保通信持久稳定?

我非常感谢您对此方法的任何潜在问题/解决方案的任何意见。或者,如果你认为WCF是错误的选择,我很乐意考虑其他选择吗?

1 个答案:

答案 0 :(得分:0)

您是否设想将COM DLL创建为WCF的包装,然后在VB6中使用此对象?

如果是这样,那么您可以让DLL处理回调,然后像往常一样在COM接口上引发一个事件,使用WithEvents对象在VB6应用程序内处理。

使用WCF对我来说听起来像是一种合理的方法,尤其是当您在多个版本之间进行转换时。