Comment faire de la communication intra-application dans .NET

Quelle est la meilleure façon de transmettre des données d’une application Windows Forms (un plugin Office) à une autre (exe écrite en C #) en C #?

Je vais prendre un coup de fouet à ce sujet et dire que vous voulez probablement que l’application bureautique à la maison à votre exe? Dans ce contexte, le “exe” est le serveur et l’application bureautique est le client.

Si vous utilisez .NET 3.0, WCF est probablement votre meilleur pari. Je structurerais la solution en trois parties:

  1. “Contrats partagés”. Ce sont des interfaces qui décrivent vos services. Si vous avez des objects de données personnalisés qui seront transmis entre les applications, ils doivent également être définis dans cet assembly. Cet assemblage est partagé entre le client et le serveur. Voir ” Conception de contrats de service ” pour plus d’informations.
  2. “Un service”. Ce assembly est votre “exe” et il référencera les contrats et définira les classes en fonction de vos contrats de service. Votre application hébergera également un ServiceClient pour votre service. Le fichier de configuration de cette application définira comment votre ServiceClient sera exposé au client (disponible en tant que service Web, tcp, etc.). Voir ” Implémentation de contrats de service ” pour plus d’informations.
  3. “Client”. Votre plugin référencera l’assembly “Shared Contracts” et contiendra les clients de service basés sur les contrats. Le client peut être généré automatiquement à l’aide de l’outil svcutil.exe.

Tant le “exe” que le “plugin” nécessiteront des fichiers de configuration définissant les liaisons.

Lorsque vous souhaitez transmettre des données entre client et serveur, votre client crée un object à partir de l’assembly “Contrats partagés” et le transmet au client du service. Le fichier de configuration du client déterminera où envoyer les données.

Pour un didacticiel détaillé sur la création d’un service WCF de base, consultez ce didacticiel .

Communication interprocessus dans .NET

Ouaip. WCF est la voie à suivre. Je recommande de vérifier iDesign.net pour utiliser la classe InProcFactory. Vous pouvez modifier votre classe de bureau en un service et appeler votre autre application hébergeant un service. L’autre service peut alors rappeler le service basé sur le bureau.

Vous pouvez utiliser un sharepoint terminaison IPC pour rendre la communication dynamic.

-Scott

WCF est l’un des moyens les plus simples pour y parvenir. Vous pouvez enregistrer un sharepoint terminaison de service dans chaque application ou, si l’un est le service et un autre le client, vous pouvez simplement utiliser un seul hôte de service.

Consultez les didacticiels pour commencer.

Il y a de nombreuses façons d’y parvenir. J’ai utilisé des pipes nommées dans le passé. La prise en charge des canaux nommés est désormais intégrée dans .NET (conformément à la version 3.0?), Elle est donc assez simple.

old-school mais ça marche – utiliser WM_COPYDATA pour envoyer des messages entre les applications Windows