Pergunta

É possível criar um serviço C# EXE ou Windows que possa processar solicitações de serviço da Web? Obviamente, algum tipo de servidor web incorporado, provavelmente limitado, teria que fazer parte do exe/serviço. O exe/serviço não teria que confiar no IIS sendo instalado. De preferência, o serviço da Web incorporado pode lidar com conexões do tipo HTTPS/SSL.

O cenário é o seguinte: o cliente deseja instalar um pequeno agente (um serviço do Windows) em suas máquinas corporativas. O agente teria duas tarefas primárias: 1) monitorar o sistema ao longo do tempo e reunir certas peças de dados e 2) responder às solicitações de serviço da Web (o SOAP -V- REST ainda é interrompido) para coleta de dados ou fins de mudança do sistema. O cliente gosta da idéia de APIs de serviço da Web para que qualquer número de clientes (em qualquer idioma) possa ser escrito para explorar os vários agentes que executam as máquinas corporativas. Eles querem que a instalação seja relativamente indolor (instale .NET, alguns conjuntos, um serviço, modifique o firewall do Windows, inicie o serviço) sem exigir que o IIS seja instalado e configurado.

Eu sei que posso fazer isso com Delphi. Mas o cliente prefere fazer isso em C#, se possível.

Alguma sugestão?

Foi útil?

Solução

Sim, é possível, você pode querer dar uma olhada WCF e Auto -hospedagem.

Outras dicas

Sim, é possível (e bastante fácil).

Aqui está um Artigo do CodeProject mostrando como fazer um servidor HTTP básico em C#. Isso pode ser facilmente colocado em um exe ou serviço independente e usado como um serviço da Web.

Uma tecnologia que você pode querer conferir é o WCF. O WCF pode ser um pouco doloroso, mas há um ótimo screencast no DNRTV por Keith Elder que mostra como começar com o WCF de uma maneira muito simples.

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

Você poderia dar uma olhada em Httplistener Na estrutura .NET.

Eu recomendo o WCF. Ele se encaixaria muito bem em um produto como você está descrevendo. Há um bom número de livros acessível.

Claro, você pode fazer isso. Certifique -se de alterar o tipo de saída do projeto para o aplicativo de console. Em seguida, na sua função principal, adicione um parâmetro String []. Fora de algum switch que você recebe na linha de comando, você pode ramificar para o ServiceBase.run para executar como um serviço ou ramificação do Windows para outro código para executar um aplicativo de console.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top