Remoting af klasser til COM via interop
Hej.Jeg har lavet en windows service i C#/.NET. Denne service wrapper en database
som bliver skrevet til af andre services.
Når databasebs inhold opdateres skal klienterne notificeres om at der er sket
en ændring. Klienterne kan selvfølgelig også trække data ind og ud fra
databasen.
Klienterne taler med servicen via en proxy klasse som remoter til servicen.
Dette fungere fint så længe klienterne er skrevet i C#/.NET.
Men jeg skal også have servicen til at tale med en C++ klient. Jeg har
forsøgt via. COM interop, således at proxyen og de delte klasser er
registrerede som COM objekter.
Dette går også fint hvis jeg skaber en instans af en af de delte klasser
eller af proxyen på C++ siden.
Men hvis jeg laver et kald som f.eks. "GetUsers()" som returnere en user
collection, via proxyen, kan proxyen ikke returnere denne til C++ klienten.
_UserCollectionPtr pUserCol = pProxy->GetUsers();
IEnumVARIANTPtr pEnum = pUserCol->GetEnumerator();
(C++) klient -> (COM) proxy -> (Remoting) service -> DB
HVis jeg registrer servicen som et COM objekt kan jeg uden problemer få
returneret user collectionen.
_UserCollectionPtr pUserCol = pColSvr->GetUsers();
IEnumVARIANTPtr pEnum = pUserCol->GetEnumerator();
(C++) klient -> (COM) service -> DB
Klasserne som remotes er markeret med serializable attributten. Er der mere som skal gøres for at kunne passe dem som argumenter og retur typer?
Er er nogen som har rodet med noget ligende, eller har gode forslag så modtages de med kyshånd. :)