2

我用 C# 编写了一个 Windows 服务,它收集性能、磁盘和内存信息并将其写入 EventLog。它作为网络服务启用。我想做的是能够从远程位置收集这些信息。该服务将在各种客户端机器上运行,我想定期(每天一次)检索此信息并将它们存储在数据库表中。我对如何通过网络查询 Windows 服务感到困惑。换句话说,究竟是什么使服务成为“网络服务”?

我不希望该服务直接连接到我的数据库并写入此信息。但我想从远程机器启动它,检索信息,然后将该信息写入我的数据库表。

我找不到任何说明联网 Windows 服务的教程。他们中的大多数都涉及写入事件日志,而我几乎被困在那里。

这是可行的,有什么关于如何完成这类事情的建议吗?

4

3 回答 3

2

如果转移到 WCF Web 服务的其他建议不是一个选项,您可以在 Windows 服务中使用自定义命令进行分配,而不必求助于远程处理。

实际上,您可以发送一个介于 128 和 256 之间的整数,然后让您的服务在收到该命令时执行您需要的任何代码,例如将所有信息发送到您的数据库或 Web 服务。

当服务在客户端机器上愉快地运行时,您将能够在需要时从您身边启动它。

请查看此代码项目文章以获取示例:在 C# 中创建基本 Windows 服务

看一下OnCustomCammand方法。

这是 Microsoft 的另一篇示例文章:与 Windows 服务通信

于 2009-05-14T09:01:18.770 回答
1

使用WCF启用某种形式的RESTful Web 服务

请参阅MSDN 上的 wcf-getting-started,特别是 A Guide to Designing and Building RESTful Web Services with WCF

于 2009-05-14T07:27:14.473 回答
1

AFAIK“网络服务”只是意味着它在“网络服务”帐户下运行,该帐户具有与“本地服务”或“系统”帐户不同的权限集。

但是,要将服务公开给网络上的另一台机器(除了通过服务管理单元 - services.msc获得的标准 STOP、START、RESTART 功能),您需要使用 Remoting、Webservices 或最理想的是 gimel 提到的WCF

于 2009-05-14T08:24:36.393 回答