【问题标题】:Access the same running code from a Windows Service and a console application?从 Windows 服务和控制台应用程序访问相同的运行代码?
【发布时间】:2010-10-10 03:49:58
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 优秀的答案。不过,我应该提到我正在使用 VS .net2.0。
    【解决方案2】:

    我在过去应用过的选项:

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

    【讨论】:

    • 那么为什么要投反对票——所有可行的方法。嘘。如果有错误,请务必投票否决答案,并在评论中解释原因;但没有任何理由,它只会伤害更多的知识。
    • 这可能是忍者的反对意见。看起来回答这个问题的每个人都得到了一个。肯定不是我写的。
    • 我以前的公司有一个类似的服务/UI 应用程序架构。效果很好。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        .net 中进程间通信的方式是通过远程处理(即使两个进程都在同一台机器上)。其他响应建议了不需要远程处理的进程间通信的替代方案。

        【讨论】:

          【解决方案6】:

          +1 仅用于让服务在查询时提供该(以及任何其他数据)(简单的 tcp、RPC、Web 服务或其他)

          我会让它变得非常通用 - 就像

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

          【讨论】:

            猜你喜欢
            • 2010-11-25
            • 1970-01-01
            • 2017-06-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多