jm.
jm.

Reputation: 23714

What do I need to do to implement an "out of proc" COM server in C#?

I am trying to implement an "out of proc" COM server written in C#. How do I do this?

I need the C# code to be "out of proc" from my main C++ application, because I cannot load the .NET runtime into my main process space

WHY?:
My C++ code is in a DLL that is loaded into many different customer EXE's, some of which use different versions of the .NET runtime. Since there can only be one runtime loaded into a single process, my best bet seems to be to put my C# code into another process.

Upvotes: 11

Views: 6527

Answers (4)

Erick Sgarbi
Erick Sgarbi

Reputation: 1222

You can create COM+ components using System.EnterpriseServices.ServicedComponent. Consequently, you'll be able to create out-of-proc and in-proc (client) component activation as well as all COM+ benefits of pooling, remoting, run as a windows service etc.

Upvotes: 7

Joel Lucsy
Joel Lucsy

Reputation: 8706

Why can't you load the .net runtime into you process space? It is possible to host the .net runtime and call into .net using COM.

Upvotes: 0

Lars Truijens
Lars Truijens

Reputation: 43595

Here we can read that it is possible, but the exe will be loaded as an library and not started in it's own process like an exe. I don't know if that is a problem for you? It also contains some possible solutions if you do want to make it act like a real out of process com server. But maybe using another way of inter process communication is better. Like .Net Remoting.

Upvotes: 1

Chris Farmer
Chris Farmer

Reputation: 25396

I cannot recommend this as the way, but you could create a COM-callable wrapper for your C# library, then create a VB6 ActiveX exe project that delegates calls to your C# library.

Upvotes: 0

Related Questions