是否可以创建一个部署为EXE或Windows服务的独立C#Web服务?

时间:2009-06-18 16:57:36

标签: c# web-services windows-services embeddedwebserver

是否可以创建可以处理Web服务请求的C#EXE或Windows服务?显然,某种嵌入式,可能有限的Web服务器必须是EXE /服务的一部分。 EXE /服务不必依赖于安装IIS。优选地,嵌入式Web服务可以处理HTTPS / SSL类型连接。

场景是这样的:客户想要在他们的公司机器上安装一个小代理(Windows服务)。代理将有两个主要任务:1)随着时间的推移监视系统并收集某些数据,以及2)响应Web服务请求(SOAP -v-REST仍然被讨价还价)以进行数据收集或系统更改。客户喜欢Web服务API的概念,因此可以编写任意数量的客户端(使用任何语言)来访问企业计算机上运行的各种代理。他们希望安装相对轻松(安装.NET,某些程序集,服务,修改Windows防火墙,启动服务),而无需安装和配置IIS。

我知道我可以用Delphi做到这一点。但是如果可能的话,客户更愿意在C#中完成这项工作。

有什么建议吗?

7 个答案:

答案 0 :(得分:13)

是的,您可能需要查看WCFSelf Hosting

答案 1 :(得分:5)

是的,这是可能的(并且非常简单)。

这是一个CodeProject article,展示了如何在C#中创建基本的HTTP服务器。这可以很容易地放在独立的EXE或服务中,并用作Web服务。

答案 2 :(得分:3)

您可能想要查看的一项技术是WCF。 WCF可能会有点痛苦,但是Keith Elder在DNRTV上进行了一次精彩的截屏,展示了如何以非常简单的方式开始使用WCF。

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

答案 3 :(得分:1)

您可以查看.Net框架中的HttpListener

答案 4 :(得分:1)

我强烈推荐WCF。它非常适合您所描述的产品。有很多books可用。

答案 5 :(得分:1)

当然,你可以做到。务必将项目的输出类型更改为控制台应用程序。然后,在Main函数中,添加一个string []参数。关闭在命令行上收到的某些开关,您可以分支到ServiceBase.Run以作为Windows服务运行或分支到其他代码以运行控制台应用程序。

答案 6 :(得分:1)

这个问题有些老了,但是由于我前一段时间需要类似的东西,所以感觉这个问题仍然很重要。

我用NancyFx和OWIN编写了一个小的Rest-API。 OWIN是.Net应用程序和Web服务器之间的标准接口。使用OWIN,可以创建self-hosted WEB-API。另一方面,南希是

用于构建基于HTTP的轻量级,低礼仪的框架 .NET ¹

上的服务

这两个的结合使创建自托管的C#Web服务成为可能。 我很确定,到现在为止,创建这样的东西还有更多的可能性,但是由于我这样使用它,所以我认为信息可能对某人有用。