2010-07-20 3 views
4

Je cherche le meilleur moyen d'utiliser un service Windows pour gérer un groupe d'objets à utiliser par plusieurs programmes clients différents. Le service doitCommunication avec un service Windows

  1. créer la liste des objets correspondant aux périphériques virtuels ou physiques,
  2. maintenir des informations sur ce processus utilise actuellement un dispositif donné et quels dispositifs sont disponibles pour être utilisés,
  3. gérer les demandes de utiliser un périphérique donné par un processus,
  4. retourner les périphériques à un état inutilisé.

Lorsque je regarde les exemples de service Windows, cependant, il y a des communications très limitées aux services. OnCustomCommand ne renvoie aucune information à l'appelant.

Alors, existe-t-il un moyen recommandé d'établir l'échange d'informations entre un service et différents clients?

Pour l'arrière-plan - Je remplace une application Win32/COM par une application .Net. Le gestionnaire de périphériques actuel est un serveur COM avec les clients étant des clients COM.

Répondre

5

Vous pouvez toujours implémenter un service WCF dans votre service Windows pour communiquer avec le monde extérieur. Il le ferait en utilisant soit HTTP ou Net/TCP (dans un environnement LAN d'entreprise) ou d'autres transports (comme la mise en file d'attente des messages MSMQ, le cas échéant). Lorsque le service Windows est lancé, vous pouvez également afficher un WCF ServiceHost pour gérer ces besoins de communication.

Voir:

+3

Me battre de quelques secondes. En outre, si toutes les communications sont locales à la machine, vous pouvez utiliser des tubes nommés (net.pipe) pour une communication très rapide. – josh3736

+0

Josh, faites votre commentaire une réponse parce que jusqu'à présent, vous avez mon vote –

0

Juste une option - MsgConnect bibliothèque pour les communications transparentes entre les applications sur les systèmes identiques ou différents. Conçu spécifiquement avec votre tâche (communication-service-interface graphique) à l'esprit. Avec MsgConnect vous pouvez envoyer et recevoir des messages (comme vous le faites sous Windows) qui transportent des données personnalisées. Sur les systèmes locaux, les messages peuvent être transférés à l'aide de MMF ou de sockets, pour les communications à distance, les sockets TCP ou HTTP peuvent être utilisés.

+0

Rien à redire avec une solution de tiers. Cependant, étant donné qu'il passe à .NET, WCF est ma recommandation car il est inclus dans le .NET Framework. –

Questions connexes