Nous avons une bibliothèque .net développée en C#. Il doit être exposé à un client C++ non géré disponible sur une machine distante. Par quels moyens pourrions-nous résoudre cela?Comment exposer l'objet .net au client C++ distant
Répondre
Cela dépend vraiment de l'OS sur lequel vous travaillez. Si c'est Windows 7/Windows Server 2008 (ou plus tard, pour une correction future), vous devriez rechercher WWSAPI car c'est l'implémentation de code natif de WCF par Microsoft. Les systèmes d'exploitation Windows antérieurs peuvent nécessiter l'utilisation de bibliothèques SOAP tierces conçues pour interagir avec WCF. Je ne suis pas sûr du statut de ces derniers ces jours. Une autre option, en supposant que ce qui précède n'est pas viable, consisterait à écrire un proxy C# ou C++/CLI sur la machine distante avec laquelle le client non géré peut parler en utilisant des communications inter-processus standard telles que RPC, mémoire partagée, COM ou d'autres technologies. Le proxy gère ensuite les appels WCF au serveur C#. Cela devrait être réalisable dans la plupart des scénarios. Edit: Je suppose l'utilisation de WCF pour les communications à distance utilisant le code .Net. Pour les réponses concernant d'autres éléments potentiels, quelqu'un d'autre devra répondre parce que mes connaissances dans ces domaines sont beaucoup plus sommaires.
Merci beaucoup! Je voudrais ajouter plus de clarté sur le problème: 1. Du côté serveur, nous avons un service Windows utilisé pour héberger l'objet .net remoting. 2. Une bibliothèque de wrappers C# est utilisée pour accéder à cet objet distant. 3. J'ai besoin d'exposer cette bibliothèque wrapper à une machine distante si nous n'avions pas de framework .net installé. C'est une machine Windows XP. 4. L'ordinateur distant a un client C++ win32/ATL/MFC qui doit effectuer des appels à cette bibliothèque d'encapsuleur qui ne réside pas localement. Pourriez-vous l'obtenir? – karthik
Si la machine distante n'a pas le framework .Net, vous devrez soit regarder dans des bibliothèques tierces qui peuvent interagir avec WCF ou utiliser une autre technologie de communication inter-machine. – dlanod
Un code non géré accède à la fonctionnalité .NET via COM. Vous pouvez faire ce côté client et utiliser l'accès distant non géré (par exemple DCOM, RPC de base ou même Corba). Ou vous pouvez le faire sur la machine distante et utiliser .NET remoting. Je n'ai aucune expérience avec ce dernier. Au début, il était basé sur SOAP, il a probablement été développé et appelé quelque chose de plus sophistiqué maintenant. Mais c'est la grande image. Vérifiez les documents pour plus de détails (ou, comme nous disions autrefois, RTFM, comme le MIT a encore le site web RTFM, mais politiquement incorrect maintenant ...). Cheers, –
Ou, que voulez-vous dire par "exposé"? –
Merci beaucoup! Je voudrais ajouter plus de clarté sur le problème: 1. Du côté serveur, nous avons un service Windows utilisé pour héberger l'objet .net remoting. 2. Une bibliothèque de wrappers C# est utilisée pour accéder à cet objet distant. 3. J'ai besoin d'exposer cette bibliothèque wrapper à une machine distante si nous n'avions pas de framework .net installé. C'est une machine Windows XP. 4. L'ordinateur distant a un client C++ win32/ATL/MFC qui doit effectuer des appels à cette bibliothèque d'encapsuleur qui ne réside pas localement. Pourriez-vous l'obtenir? – karthik