2009-06-18 9 views
17

Est-il possible de créer un service C# EXE ou Windows pouvant traiter les demandes de service Web? De toute évidence, une sorte de serveur web intégré, probablement limité, devrait faire partie du service EXE/service. Le service EXE/ne devrait pas compter sur IIS en cours d'installation. De préférence, le service Web intégré peut gérer les connexions de type HTTPS/SSL. Le scénario est le suivant: le client souhaite installer un petit agent (un service Windows) sur ses machines d'entreprise. L'agent aurait deux tâches principales: 1) surveiller le système au fil du temps et rassembler certaines données et 2) répondre aux demandes de service Web (SOAP -v- REST est encore négocié) à des fins de collecte de données ou de changement de système. Le client aime l'idée des API de service Web, de sorte que n'importe quel nombre de clients (dans n'importe quelle langue) peut être écrit pour exploiter les différents agents qui s'exécutent sur les machines de l'entreprise. Ils veulent que l'installation soit relativement indolore (installer .NET, certains assemblages, un service, modifier le pare-feu Windows, démarrer le service) sans nécessiter l'installation et la configuration d'IIS. Je sais que je peux le faire avec Delphi. Mais le client préférerait que cela soit fait en C# si possible.Est-il possible de créer un service Web C# autonome, déployé en tant que service EXE ou Windows?

Des suggestions?

Répondre

13

Oui, il est possible, vous pouvez jeter un oeil à WCF et Self Hosting.

+2

Cela semble très prometteur. Le chapitre de l'auto-hébergement en particulier répond à ma question de EXE/service autonome. Merci. –

6

Oui, c'est possible (et assez facile).

Voici un CodeProject article montrant comment créer un serveur HTTP de base en C#. Cela pourrait facilement être mis dans un EXE autonome ou un service, et utilisé comme un service Web.

+1

Cet exemple montre clairement comment intégrer un serveur Web, mais rien sur la façon de transformer une demande entrante en un appel de méthode de service Web. Je pourrais écrire un analyseur de paquets SOAP qui crée l'objet nécessaire, localise la méthode et l'appelle avec les différentes propriétés, mais je suppose que quelque part dans .NET, tout cela pourrait être fait. –

3

Une technologie que vous pourriez vouloir vérifier est WCF. La WCF peut être un peu pénible, mais Keith Elder, de DNRTV, nous montre comment se familiariser avec la WCF de façon très simple.

http://www.dnrtv.com/default.aspx?showNum=135

+1

En fait, Antonio, WCF est encore moins douloureux que les services Web. –

+0

WCF _is_ services Web. Vous pensez peut-être à l'ancienne façon de faire des services Web. –

1

Vous pouvez jeter un oeil à HttpListener dans le framework .Net.

+2

Cela me donne un serveur web simple - mais rien pour gérer les demandes de service Web. –

1

Je recommande fortement WCF. Cela irait très bien dans un produit comme vous le décrivez. Il y a un bon nombre de books disponible.

1

Bien sûr, vous pouvez le faire. Assurez-vous de changer le type de sortie du projet en application de la console. Ensuite, dans votre fonction Main, ajoutez un paramètre string []. Désactivé par un commutateur que vous recevez sur la ligne de commande, vous pouvez vous connecter à ServiceBase.Run pour l'exécuter en tant que service Windows ou vous connecter à un autre code pour exécuter une application de console.

Questions connexes