2008-08-27 11 views
8

Próbuję zaimplementować serwer COM "out of proc" napisany w języku C#. Jak mam to zrobic?Co muszę zrobić, aby zaimplementować serwer COM "out of proc" w języku C#?

Potrzebuję kod C# do "out of proc" z mojej głównej aplikacji C++, ponieważ nie mogę załadować środowiska wykonawczego .NET do mojej głównej przestrzeni procesowej (DLACZEGO ?: Mój kod C++ jest w bibliotece DLL, która jest ładowana do wiele różnych EXE klienta, z których niektóre używają różnych wersji środowiska wykonawczego .NET Ponieważ istnieje tylko jedno środowisko uruchomieniowe załadowane do jednego procesu, moim najlepszym rozwiązaniem wydaje się być umieszczenie mojego kodu C# w innym procesie.)

Odpowiedz

5

Można tworzyć komponenty COM + przy użyciu System.EnterpriseServices.ServicedComponent. W związku z tym będziesz mógł tworzyć aktywację komponentu out-of-proc i in-proc (klienta), a także wszystkie korzyści COM + związane z łączeniem, zdalnym uruchamianiem, uruchamianiem jako usługa Windows itp.

0

Nie mogę tego polecić jako w stylu, ale możesz utworzyć wrapper do tworzenia COM dla biblioteki C#, następnie utworzyć projekt exe VB6 ActiveX, który deleguje połączenia do twojej biblioteki C#.

1

Here Możemy przeczytać, że jest to możliwe, ale plik exe zostanie załadowany jako biblioteka i nie zostanie uruchomiony w swoim procesie, tak jak w przypadku exe. Nie wiem, czy to dla ciebie problem? Zawiera również kilka możliwych rozwiązań, jeśli chcesz sprawić, aby działał jak prawdziwy serwer procesów. Ale może lepiej wykorzystać inny sposób komunikacji między procesami. Podobnie jak .Net Remoting.

0

Dlaczego nie możesz załadować środowiska wykonawczego .net do swojego obszaru roboczego? Możliwe jest hostowanie środowiska .net i wywoływanie w .net przy użyciu COM.

+1

Mój produkt jest biblioteką DLL, która jest używany przez inne firmy. Mogą pisać swoją aplikację przy użyciu różnych wersji środowiska wykonawczego .NET (lub jakiegoś narzędzia innego niż .NET). Tylko jedna wersja runtiem .NET może być załadowana do procesu na raz, więc chcę uniknąć oddzielnej wersji mojej biblioteki DLL dla każdego środowiska wykonawczego .NET –

Powiązane problemy