【发布时间】:2013-05-12 14:56:31
【问题描述】:
我有一个适用于 Windows 窗体应用程序的 Visual Studio 解决方案,其中包含一些作为我的应用程序模块的类库。我的应用程序在“任何 CPU”下运行,并且无法更改为“x86”,因为它使用了大量 64 位 dll 引用。
我有一个本地 C++ 32 位 dll,我需要在其中一个应用程序模块中使用它,但这是完全不可能的并且不想使用 Wrappers,所以我读过最简单的方法是使用自托管 WCF 服务。
我正在考虑的方法是创建一个控制台应用程序(32 位)项目,该项目将在我的解决方案中引用本机 C++ 32 位 dll,并将托管 WCF 服务,然后当用户打开应用程序时模块,我将调用 Process.Start(自托管 wcf 控制台 app.exe) 以便我的 WCF 服务启动,然后从我的 Windows 窗体应用程序中我可以访问方法等。然后我将能够使用本机 32 位 dll 方法。
我认为这被称为进程外应用程序。
有没有人认为有更好的方法来做到这一点?我真的不喜欢 .EXE 应用程序(主应用程序 exe 和自托管 wcf.exe),我可以将自托管 wcf 32 位项目放在我的主 app.exe 64 位项目中吗?如果可能的话,我该怎么称呼它?
提前致谢
【问题讨论】:
-
与进程内调用相比,在进程外调用此调用会导致巨大的性能损失。这是分布式对象设计第一定律的基础:martinfowler.com/bliki/FirstLaw.html