GUI和windows服务通信

Posted

技术标签:

【中文标题】GUI和windows服务通信【英文标题】:GUI and windows service communication 【发布时间】:2010-12-18 21:15:42 【问题描述】:

我知道自 Vista 以来,C# 无法将 UI 表单直接挂接到 Windows 服务。这已在 Microsoft 网站上说明。

我在这方面的问题是:“从 UI 到服务的最佳通信模式是什么?”

我听说过远程处理、Web 服务和直接 TCP。还有其他方法吗?他们如何与前面提到的方法进行排名?它们的实现有多复杂?

我的应用程序用于 Intranet,而不是 Internet。微软平台将在双方,所以互操作性不是一个因素,但速度是。我的意思是我想通过网络上可能的最小数据包。

TIA

【问题讨论】:

【参考方案1】:

如果您打算使用 .NET 进行开发,请使用 WCF 进行进程间通信。 WCF 极大地简化了开发,因为与特定通信机制(例如,套接字、管道等)相关的复杂性在统一的编程模型之后被抽象出来。因此,无论您选择使用 http、tcp 还是命名管道作为传输机制,编程模型都是相同的。

我强烈推荐 Juval Lowy 的书 Programming WCF Services 了解 WCF 的所有内容。您也可以访问他的网站IDesign.net,获取免费的 WCF 代码示例。

有关 WCF 的概述,请在 dnrTV 观看免费的video。它涵盖了 WCF 的用途,并通过一些易于理解的示例演示了 WCF 编程。

如果您尚未创建 Windows 服务但计划在 C# 中创建,您可以按照here 的分步操作。

【讨论】:

【参考方案2】:

进程之间有多种通信方式——命名管道、邮槽、内存映射文件、套接字、ActiveX/COM 对象,仅举几例。这真的归结为您熟悉/熟悉哪些技术。

【讨论】:

以上是关于GUI和windows服务通信的主要内容,如果未能解决你的问题,请参考以下文章

C# (.NET 2.0) 中 Windows 的进程间通信

WCF 服务如何成为通信渠道?

有啥方法可以从 Windows 7 上的 Windows 服务启动 GUI 应用程序?

使用网络登录从 Windows 服务创建 GUI

如何在 Windows 服务中启动 GUI 程序?

Windows Server 2012 GUI与Core的切换