在 WCF 中编写 Windows 服务

Posted

技术标签:

【中文标题】在 WCF 中编写 Windows 服务【英文标题】:Writing Windows service in WCF 【发布时间】:2009-11-16 12:02:13 【问题描述】:

我想用wcf写windows服务找了好多才发现是wcf写webservice而不是windows服务的教程。

任何人都可以提供任何解释如何的教程的链接

【问题讨论】:

“WCF 中的 Windows 服务”到底是什么意思 - Windows 服务大致是 Windows 操作系统中的后台任务。 WCF 是一个通信框架,因此所写的问题没有多大意义。 Windows 服务!= WCF 服务、Web 服务、SOAP 服务等。完全不同的概念。 Windows 服务是在后台运行的长时间运行的应用程序。 WCF/Web 服务与 SOA 相关,是一种在网络上传输数据甚至在同一台机器(管道)上运行的应用程序之间进行通信的方式。所以..你想完成什么?这才是真正的问题。 【参考方案1】:

Windows 服务是可执行文件。 WCF 应用程序通常是通过 URI 公开的 Web 服务。您可以在 Windows 服务中托管 WCF 应用程序,而不是相反。

【讨论】:

完全正确 - 您不能在“WCF”中编写 Windows 服务 - 可以在 NT 服务中托管 WCF 服务....【参考方案2】:

要在 C# 中创建 Windows 服务,请按照here 的分步操作。要使您的 Windows 服务启用 WCF,请创建 System.ServiceModel.ServiceHost 实例,该实例将在 OnStart() 回调中托管您的 WCF 服务。

【讨论】:

【参考方案3】:

很好的答案。只是一个简短的说明...在类库 (dll) 中实现您的 WCF 服务,这样您就可以在任何您喜欢的位置(IIS、控制台应用程序或 Windows 服务)托管它。 我建议从控制台应用程序开始,在您的服务按预期工作后,创建一个 Windows 服务,添加对您的库的引用并从那里启动服务 (WCF)(Windows 服务)

编辑:我只是假设您的意思是创建一个作为 Windows 服务托管的 WCF 服务,如果不是这样,请忽略我的回答。

【讨论】:

【参考方案4】:

照常创建您的 WCF 服务,创建一个 Windows 服务,然后使用 ServiceHost 在您的 Windows 服务中自托管 WCF 服务。有关自托管 WCF 服务的更多信息,请参阅 this MSDN page。

【讨论】:

以上是关于在 WCF 中编写 Windows 服务的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Windows 服务中托管 WCF 服务吗?

WCF 服务与 Windows 服务

托管在 Windows 服务中的 WCF 服务 - 应该由哪一个来完成所有工作?

客户端在 Windows 服务内找不到 WCF 的端点元素

连接到在另一台计算机上作为 Windows 服务运行的 WCF

C# 编写WCF简单的服务端与客户端