从Windows服务和控制台应用程序访问相同的运行代码?

时间:2009-02-26 18:21:51

标签: c# .net architecture windows-services .net-2.0

我有一个构建为Windows服务和ac#库程序集(.dll。)的应用程序为了管理和维护此服务,我想添加运行命令行应用程序的功能,服务归档文件的最后一次,下次计划的时间,上次运行的状态以及服务创建的文件的位置。

编写可与其他应用程序共享数据的服务和库的最佳架构是什么?我正在使用.net 2.0。

6 个答案:

答案 0 :(得分:2)

最好的架构可能是让您的服务成为一个“服务器”,可以报告它的状态(以及您想要的任何信息)。像ocdecio建议使用WCF会使它非常简单。

答案 1 :(得分:2)

.net之间进程间通信的方式是通过远程处理(即使两个进程都在同一台机器上)。其他答复提出了不需要远程处理的进程间通信的替代方案。

答案 2 :(得分:1)

我使用WCF并为我想要支持的命令/事件创建合约定义。

答案 3 :(得分:1)

让我想起过去曾申请的选项:

  • 将信息保存到数据库 (如果你有一个可以提交)
  • 实施一个 “状态监视器”类型线程上 客户端可以连接的服务 通过TCP / IP等进行查询。

答案 4 :(得分:1)

一种相当简单的方法是将该信息存储在两个应用都可以访问的本地配置/文本文件中。甚至将它放在注册表项中。

答案 5 :(得分:1)

+1只是让服务在查询时提供(和任何其他数据)(简单的tcp,RPC,Web服务或其他)

我会把它变得非常通用 - 比如

QueryInfo(一些标识符) 响应为某些字符串和返回值或其他指示,该服务不知道您在说什么,无法获取信息,或回馈信息