【问题标题】:WCF Service Not Returning Current Values?WCF 服务不返回当前值?
【发布时间】:2009-10-04 22:04:47
【问题描述】:

我正在使用 VB.NET,3.5 框架。

我创建了一个作为控制台应用程序运行的 WCF 服务。它正在为我的工作流引擎做事件监听。

我尝试做的第二个应用程序是一个 WinForm,它可以监控服务并将引擎工作人员的当前状态返回给我。

我能够很好地连接到该服务,并且我验证了我的服务在我单步执行时已设置了值...但是当我的监视器调用该服务时,我正在返回值,就好像它是没有被运行? (所以是默认值,而不是当前值)

有什么想法吗?我的 WFE 是多线程的,所以我想知道是否需要将服务接口设为单例模式,但在我这样做之前,我不确定我是否遗漏了其他应该很容易的东西?

如果我通过监视器单步执行对服务的调用,它甚至会跳转到我的服务代码中,但同样,变量和对象并未显示其当前状态。

【问题讨论】:

    标签: vb.net multithreading monitoring wcf


    【解决方案1】:

    您提到第二个应用的任务是“监控服务并将引擎工作人员的当前状态返回给我。”

    您的服务如何保留状态?通常,WCF 服务是按调用提供的,仅在激活时可用,并且在处理请求后将被释放。

    什么是状态,它是如何在调用之间保存的?您使用的是单例服务实例吗?还是在请求时从数据库等持久存储中获取状态?

    我不太清楚你在这里试图做什么,真的。

    马克

    【讨论】:

    • 我没有使用单例服务实例。我猜这是问题所在。我怎么能强迫它?希望这更清楚: - 控制台应用程序使用事件处理运行,事件在设置的基础上触发(心跳)。这是我运行 WCF 服务接口(到跟踪心跳的类)的地方 - 单独的 win 表单应用程序正在尝试与 WCF 服务通信,以便我可以获得当前工作人员的列表(那些触发事件的工作人员)我在上一个问题中询问了执行此模型的最佳方法,而 WCF 是推荐的选项。我应该使用其他东西吗?
    • 不,但我猜你正在尝试做一些不太可能的事情。在 WCF 中,服务类实例仅在短时间内“活动” - 在它们为请求提供服务时。大多数时候,它们甚至都不存在,所以我真的不知道你想在这里监控什么。另外 - 为什么要监控自己? WCF 中有大量的性能计数器,可以监视您想知道的任何内容!使用这些 - 更容易!
    • 我们正在将此添加到一个管理程序中,该程序可以远程监控我们所有程序的状态。那么有没有办法将服务的当前状态传回给调用者呢?
    • 什么是“服务状态”?? 99% 的时间,内存中IS 没有服务! WCF 的整个管理故事现在有点烦人,Windows Server 的“Dublin”插件应该会变得更好,在 .NET 4.0 / VS 2010 之后的某个时间可用,2010 年初(希望如此)
    • 您是自托管的 - 因此您可能会找到一种方法来询问 ServiceHost 以获取一些信息 - 但主要是静态信息,例如配置的端点等。但除此之外 - 它几乎是一个黑匣子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多