Avatar billede codecow Nybegynder
06. juli 2005 - 13:56 Der er 1 løsning

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. :)
Avatar billede codecow Nybegynder
14. juli 2005 - 23:34 #1
Fandt løsningen selv.

Asseblies'ne skal ligge i samme dir som den unmanaged exe fil, hvis der er andre som skulle have samme problem.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester