2010-08-24 8 views
2

Je suis en train d'écrire un service Windows pour effectuer un traitement quotidien, et je veux avoir un moyen convivial d'interagir avec ce service. Je vais juste faire des choses de base comme vérifier son statut et afficher les journaux, même si je peux décider que je veux lancer un appel de fonction ou deux aussi bien. Après quelques recherches, il semble que j'ai besoin d'une application distincte pour exécuter ces fonctions, car le service fonctionnera indépendamment de tout utilisateur connecté à la machine hôte. Mon idée est de faire interagir cette application avec le service via une interface, mais je ne sais pas trop par où commencer.Contrôle d'un service via une application distincte

Quelle serait la manière la plus simple de faire communiquer une application avec un service distinct? Est-ce que j'utiliserais COM, WCF, une file d'attente de messages, ou quelque chose d'autre entièrement? Je sais qu'il y a probablement quelques façons de le faire, donc j'aimerais entendre des avantages et des inconvénients si possible.

Modifier: Le service et l'application seront exécutés sur la même machine.

+0

Les deux s'exécutent sur la même machine ou allez-vous vous connecter d'un client à l'hôte exécutant le service? – Jeroen

+0

@Jeroen Même machine - J'ai mis à jour la description. – Jake

Répondre

1

Utilisez WCF avec NetNamedPipeBinding (autorise uniquement IPC sur la même machine) ou .NET Remoting. Si vous voulez le faire rapidement, choisissez la technologie que vous connaissez le mieux. Si vous n'êtes pas familier avec l'une de ces technologies, choisissez WCF parce qu'elle est plus récente et que vous l'utiliserez plus probablement à l'avenir - donc l'expérience sera utile.

+0

Terminé en utilisant ceci. Je suis sûr que je vais devoir utiliser WCF plus dans le futur, et vu que c'est plus dans l'esprit de .NET 4.0, je pense que c'est la meilleure option. – Jake

1

Idéalement, vous devez créer une application distincte et utiliser WCF pour communiquer entre votre service et cette application.

Mais il existe un moyen moins onéreux qui consiste à implémenter votre propre serveur Web en utilisant HttpListener. Voir http://msdn.microsoft.com/en-us/magazine/cc163879.aspx

Ceci facilite l'acceptation de quelques commandes simples et vous pouvez les envoyer en utilisant n'importe quel navigateur Web.

Pour consulter les journaux, pourquoi ne pas simplement mettre en file d'attente les fichiers journaux (en utilisant, par exemple, la barre d'adresse)?

0

Ignorez WCF, et utilisez simplement .NET Remoting. Tellement plus facile. Pourquoi ils l'appellent obsolète, Dieu le sait. Edit: Voyant qu'il fonctionne sur le même PC, le transport serait nommé Pipes, IIRC WCF prend également en charge cette fonctionnalité.

Questions connexes