Je cherche un moyen d'héberger une interface utilisateur Web dans un service Windows afin que je puisse la configurer et le contrôler dans un navigateur. Je voudrais une solution simple et légère, et je ne veux pas utiliser IIS. p>
Je pourrais probablement rouler à la main la plupart d'entre eux, mais je me demandais s'il y avait quelque chose déjà fait pour alléger le processus. P>
7 Réponses :
Vous pouvez toujours utiliser wcf pour héberger un point de terminaison dans la Service et l'expose de cette façon. p>
Les seules autres options que je peux penser impliqueraient de disposer d'un fichier qu'une application Web pourrait écrire et que le service pourrait lire ou une base de données écrite par le site Web et lire du service. Aucun de ceux-ci n'est aussi élégant que simplement exposant un point d'extrémité de communication via WCF. P>
edit - ajouté em> strong> p>
Spécifiquement, je pensais à l'exposer en tant que point d'extrémité HTTP et à interfacer directement avec le navigateur de la manière dont vous seriez un service Web. p>
Cependant, il n'y a aucune raison pour ne pas avoir une application traditionnelle ASP.NET configurée pour communiquer avec le service tant que le service héberge un point d'extrémité de communication. P>
+1 Je pense que c'est l'approche la plus propre, surtout au-dessus de l'hébergement d'un serveur Web de processus. J'utilise WCF comme ça. Il vous permet de bien archiver la solution en séparant les préoccupations. Le service WCF expose une API mais reste indépendant de l'UI. Nous exposons peut-être comme une page Web aujourd'hui, mais demain, nous proposons également un outil de bureau.
Si vous regardez UI au lieu d'une interface de service Web, vous pouvez faire quelques éléments: P>
1) Il peut être plus que nécessaire, mais vous pouvez héberger ASP.NET dans votre service à l'aide de la base de code Cassini d'origine: http://blogs.msdn.com/dmittryr/archive/ 2005/09/27 / 474534.aspx P>
2) Vous pouvez également simplement ouvrir un port et mettre une simple page HTML sur un (s) thread (s) séparé (s) dans votre service en fonction de votre accès au service à accéder. P>
J'ai fait les deux quelques fois, et l'une quelconque est assez simple tant que vous ne vous souciez pas de la sécurité - par ex. La machine n'est accessible qu'à partir d'un intranet de confiance. Si ce n'est pas le cas, vous feriez mieux d'héberger IIS sur la machine et d'écrire une application Web sécurisée. P>
J'ai voulu faire exactement la même chose avec un service Windows que j'ai créé. J'ai peut-être enfin trouvé un article qui aidera. Je n'ai pas encore essayé cela, mais je pense qu'il a la base de ce que nous avons tous deux besoin - avec une source d'échantillon. P>
L'objectif de l'article est sur la manière d'héberger un service Web (ASMX) à partir de votre code, mais je suppose qu'il pourrait aussi facilement héberger une page ASPX. P>
http://msdn.microsoft.com/en-us/magazine /cc163879.aspx p>
-Derek p>
Merci pour votre réponse. J'ai déjà regardé System.web.Hosting (en fait, j'ai regardé Cassini) et je l'ai trouvé un peu complexe pour mes besoins. Je n'ai pas vraiment besoin d'héberger des pages ASPX, je veux juste pouvoir répondre aux demandes entrantes avec le code. J'ai effectivement commencé à travailler sur un projet qui fait exactement cela, à l'aide de system.net.httplistener. Je prévois de la rendre disponible comme source ouverte lorsque j'ai une première version. Je vais ajouter une réponse à cette question quand je le ferai.
Voici une autre option si vous souhaitez un serveur intégré, mais pas un service ou des fichiers HTML / ASPX externes: P>
webconfig - votre routeur sans fil l'a maintenant, vous pouvez maintenant aussi strong> http://www.codeproject.com/kb/game/webconfig.aspx p>
edit: strong> s'il vous plaît ne pas l'utiliser. C'était une simple preuve de concept et je ne suis jamais allé nulle part avec elle. S'il vous plaît voir mon autre réponse pour Meilleures solutions . P>
Eh bien, mieux vaut tard que jamais. N'a pas eu beaucoup de temps pour y travailler. P>
http://github.com/leddt/simplehtttpserver P>
Ceci est extrêmement fondamental, et non destiné à une utilisation de la production. C'est un petit projet que j'essaye. Je prendrai cependant des commentaires, des suggestions, etc. P>
L'objectif de l'article est sur la manière d'héberger un service Web (ASMX) à partir de votre code, mais je suppose qu'il pourrait aussi facilement héberger une page ASPX. P>
Étant donné que cette question a été publiée à l'origine, de meilleures solutions au problème ont été publiées. P>
Si vous ciblez .NET CORE, il est trivial au noyau ASP.NET ASP.NET Auto-Host à l'aide du WebHostBuilder . P>
Une autre solution est Nancy , qui est également facile à Hôte auto-hôte . P>
J'ai la même exigence. Pourriez-vous aider ici