Comment implémenter la mémoire partagée dans .NET?
J'ai un C++.NET application et un C#.NET app. Je tiens à communiquer via la mémoire partagée.
Comment est-il possible dans le .NET version 2.0 ?
Surtout envie de partager un objet file.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Mise à jour: Hey, voici une page je viens de trouver un compleate de mise en oeuvre.
À l'aide de C++/CLI, il est très facile d'installation de la mémoire partagée, comme la normale API C++ C++/CLI être en mesure d'interagir avec les natifs et gérés TAS/références de mémoire). Le UnmanagedMemoryStream peut ensuite être utilisé pour exposer un objet de Flux de données en C#.
Je n'ai pas joindre les .h de fichier, mais vous pouvez en déduire le tracé de la pmapped natif typedef assez easially ;). Vous pouvez également évaluer la possibilité de l'utilisation d'un BufferedStream en fonction de votre lecteur/graveur de cas d'utilisation. Et le code est à partir d'un projet que je n'utilise plus donc je ne me souviens pas le statut de c'est un bogue de régression.
Voici le C++/CLI classe qui établit un fichier de mappage et expose une UnmanagedMemoryStream;
Voici CLoseMap au moins... je viens de le trouver... il n'a pas été compilé avec /CLR
Il y a plusieurs options pour vos applications de communiquer. Les plus populaires sont l'accès distant et de Tuyaux. Il y a plusieurs exemples pour les deux et avant de choisir, vous devez considérer les avantages et les inconvénients tels que la portabilité. Voici quelques liens utiles:
Communication Inter-Processus .NET en Utilisant des canaux Nommés, Partie 1
Communication Inter-Processus .NET en Utilisant des canaux Nommés, Partie 2
.NET Remoting dans un anglais Simple
.NET Remoting avec un exemple simple
Est la mémoire partagée la seule option? Il existe de nombreuses façons pour les deux .NET aux processus de communiquer. Certains d'entre eux sont:
Vous avez également une alternative à la C++/CLI que l'importation des fonctions win32 dans votre application en C#:
Je suppose .NET v2.0 n'a pas de prise en charge intégrée de la mémoire partagée.
Tout au plus pouvons nous PInvoke la CreateFileMapping et MapViewOfFile Api.
Dans mon scénario, l'IPC doit avoir lieu sur une seule machine. Donc, pipes est l'option la plus rapide à partir de maintenant.
Merci pour les réponses
Prendre un coup d'oeil à ce [lien]:
http://www.albahari.com/nutshell/ch22.aspx
dans la mémoire Partagée wrapper vous pouvez trouver votre réponse.