【问题标题】:Interfacing with a localhost Windows service与 localhost Windows 服务交互
【发布时间】:2012-02-07 03:20:55
【问题描述】:

我有一个用 C# 编写的服务器。我需要与它交互,以便重新配置、清除缓存、断开用户连接、查看运行控制台等。我无法关闭服务器来执行任何这些操作。

两个可用选项,通过 Tcp 连接与服务器接口或使用 Windows 约定(某些 WCF?)。

哪个更可靠或“最佳实践”:

  • Tcp 连接和发出请求(当然只让管理/维护请求来自本地主机)或
  • 使用 WCF 以某种方式访问​​程序集内的管理/维护方法?

提前感谢您几乎总是有用的反馈。

编辑:任何人都可以提供 WCF 的任何替代方案吗?服务器本身实际上是 65kb。它很小。我现在要做的就是向服务器发出一些管理/维护命令。我不是想成为服务器,它已经完成了。我只想从本地主机用户空间应用程序进行交互。

编辑 2:问题解决:我只是使用一个非常小的 Tcp 客户端向我已经构建的协议发出请求。它只有几百行,不需要使用笨重的 WCF。 WCF 似乎……太多了。那就是说我无论如何都需要学习它(现在就是),感谢您的反馈!

【问题讨论】:

  • 你能用custom service commands吗?如果您需要通过命令发送大量参数和/或让服务返回数据,这可能还不够。
  • @Blorgbeard 这是一个很好的起点。至于现在,我确实需要获取返回值(例如连接的客户端列表、缓存大小/计数详细信息等。这可能与您链接到的技术有关吗?再次感谢。
  • 使用 WCF,可以将传输配置为在包括 TCP 和 HTTP 在内的许多选项上运行。由于它在本地运行,因此您还可以使用命名管道,这可能比开发自定义 TCP 套接字协议更简单且可能更快。

标签: c# .net


【解决方案1】:

我肯定会推荐使用 WCF。您定义端点和合同,然后使用绑定配置通信的完成方式(TCP、XML SOAP、命名管道、消息队列...)。

这项技术非常方便:例如,如果您想从 TCP 迁移到 HTTP SOAP,那么您只需更新您的配置文件就可以了; 没有要更新的代码。此外,它是完全可互操作的,因为您可以将 WCF 配置为使用 HTTP(SOAP 消息)并从任何语言/平台使用您的服务。您还可以在网上找到大量教程和示例。

这里是a nice article,关于如何在 Windows 服务中托管 WCF(示例中为 TCP 通信,但您可以通过修改配置来使用其他东西)

【讨论】:

  • 谢谢。如果没有其他原因我可能最终需要了解 WCF,我正在研究这个问题。
【解决方案2】:

您可以在 Windows 服务中托管 Web 服务。它当然是 TCP,但客户端上没有套接字级别的编程。

然后您可以在其之上拥有一个宁静的界面。 WCF 对我来说似乎总是太重了

【讨论】:

  • 感谢您的反馈。除了WPF还有别的吗?服务器已经编写完成。我只是想让用户级应用程序向服务发送命令并获取信息作为回报。
猜你喜欢
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多