【问题标题】:Call a WCF Operation from Windows Service WCF Host从 Windows 服务 WCF 主机调用 WCF 操作
【发布时间】:2014-01-16 11:12:39
【问题描述】:

我是 WCF 编程的新手。 这是我需要的:

  1. 托管 WCF 服务的 Windows 服务。 (完成)
  2. 可以从正在运行的 Windows 服务调用 WCF 服务操作(例如 GetValue())的客户端应用程序(完成)
  3. Windows 服务启动时,需要从 WCF 服务调用 Start() 操作。 (2) 中的应用程序在没有 Windows 服务首先调用 Start() 操作的情况下无法检索数据。 (未完成)

PC 启动后,Windows 服务需要启动。然后它应该开始记录一些数据。用户可以随时运行客户端应用程序来检索记录的数据。

但是,我无法执行自动日志记录部分,因为客户端是调用 WCF 服务构造函数的人。这不能在 Windows 服务的 OnStart() 方法中完成。

有没有办法从 Windows 服务的 Onstart() 方法调用 WCF 操作?

【问题讨论】:

    标签: c# .net wcf service


    【解决方案1】:

    因为 - 如果您没有另外配置它​​ - WCF 服务类的新实例会在客户端每次调用时创建,您也可以自己创建该类的新实例并调用您的方法。从您的服务的角度来看,它只是一个普通的类。

    如果您能详细说明Start 中所做的事情,这将非常有帮助。

    【讨论】:

    • 我想我不明白。我想如果我创建一个 WCF 服务实例,2 个不同的客户端会访问同一个实例。
    • 没有。甚至不能保证同一个客户端在执行两个不同的函数调用时会访问同一个实例。您可以将 WCF 配置为像这样(会话/单例模式),但默认情况下并非如此。
    • 好的,我用不同的客户试过了,你说得对。也许我没有将 WCF 用于其目的。我需要运行不同的客户端应用程序才能从服务中访问相同的数据。
    • 如果不能保证访问同一个实例,那么 WCF 只对辅助函数有用?不适用于活体?也许我应该使用 TCPListener 和 TCPClient 来实现我的目标?
    • 好的,抱歉,我将它配置为单例。看起来它按预期工作,并且在创建服务主机时调用了服务构造函数。如果这解决了我的问题,我会尝试查看更多。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2013-07-28
    • 2010-10-19
    • 1970-01-01
    相关资源
    最近更新 更多