我在C#中编写了一个Windows服务,它收集性能,磁盘和内存信息并将其写入EventLog。它作为网络服务启用。我想做的是能够从远程位置收集这些信息。此服务将在各种客户端计算机上运行,我希望定期(每天一次)检索此信息并将它们存储在数据库表中。我很困惑如何通过网络查询Windows服务。换句话说,究竟是什么使服务成为“网络服务”?
我不希望服务直接连接到我的数据库并写入此信息。但我想从远程计算机启动它,检索信息,然后将该信息写入我的数据库表。
我无法找到任何说明网络Windows服务的教程。他们中的大多数都涉及写入事件日志,我几乎被困在那里。
这是可行的,有没有关于如何完成这类工作的建议?
答案 0 :(得分:2)
如果无法选择转移到WCF Web服务的其他建议,则可以在Windows服务中使用自定义命令进行分配,而无需使用远程处理。
实际上你可以发送一个介于128和128之间的整数。 256,然后让您的服务在收到该命令时执行您需要的任何代码,例如将所有信息发送到您的数据库或Web服务。
当服务愉快地在客户端计算机上滚动时,您将能够在需要时从您身边启动它。
请查看此代码项目文章中的示例:Creating a Basic Windows Service in C#
查看 OnCustomCammand 方法。
以下是Microsoft的另一篇示例文章:Communicate With Windows Services
答案 1 :(得分:1)
使用WCF启用某种形式的RESTful Web Service。
请参阅MSDN上的wcf-getting-started,特别是A Guide to Designing and Building RESTful Web Services with WCF。
答案 2 :(得分:1)
AFAIK'网络服务'只是意味着它在“网络服务”帐户下运行,该帐户拥有与“本地服务”或“系统”帐户不同的权限集。
要将服务公开给网络上的另一台计算机(除了通过服务管理单元获得的标准STOP,START,RESTART功能 - services.msc ),您需要使用Remoting,Webservices或最理想的gimel提到的WCF来创建您的服务。