我需要怎么做才能在C#中实现"进程外" COM服务器?
时间:2020-03-05 18:43:58 来源:igfitidea点击:
我正在尝试实现用C#编写的"进程外" COM服务器。我该怎么做呢?
我需要将Ccode从主C ++应用程序中"移出proc",因为我无法将.NET运行时加载到主进程空间中
为什么?:
我的C ++代码位于DLL中,该DLL已加载到许多不同的客户EXE中,其中一些使用.NET运行时的不同版本。由于只能在一个进程中加载一个运行时,所以我最好的选择似乎是将我的Ccode放入另一个进程。
解决方案
回答
我不建议这样做,但是我们可以为Clibrary创建一个可调用COM的包装,然后创建一个VB6 ActiveX exe项目来将调用委派给Clibrary。
回答
在这里,我们可以看到有可能,但是该exe将作为库加载,而不是像exe一样在其自身进程中启动。我不知道这是否对我们有问题?如果我们确实想使其像真正的进程外com服务器一样,它也包含一些可能的解决方案。但是也许使用另一种进程间通信方式会更好。就像.Net Remoting。
回答
为什么不能将.net运行时加载到进程空间中?可以托管.net运行时,并使用COM调用.net。
回答
我们可以使用System.EnterpriseServices.ServicedComponent创建COM +组件。因此,我们将能够创建进程外和进程内(客户端)组件激活以及池,远程处理,作为Windows服务运行等所有COM +好处。