【问题标题】:WCF service managementWCF 服务管理
【发布时间】:2011-09-21 08:33:26
【问题描述】:

例如,我有一个为客户端提供服务的 WCF 服务。有时我应该向该服务发送一些命令以获得一些结果。例如,如果有必要禁止某些客户端,我会发送一些命令,例如“ban John Doe”,服务会将名为“John Doe”的用户添加到禁止列表中。我该如何实施?我应该使用命名管道或类似的东西吗?可能我应该从运行服务的机器管理服务。服务托管在独立的控制台应用程序中。 提前致谢!

【问题讨论】:

    标签: c# .net wcf named-pipes administration


    【解决方案1】:

    可以通过Code 执行此操作,只需执行以下步骤:

    1. 服务上的所有客户端Notify self(将属性添加到所有方法作为名称或ID)
    2. 在静态列表中保留所有客户端名称(第一次之后)为ClientList
    3. 编写服务方法以从该列表中删除 ban Client
    4. 编写简单的方法来检查该列表,如果client Doesn't exist 在列表中,则只需为任何方法返回无值

    【讨论】:

    • +1;除了重新启动服务时,您的列表将消失。改用数据库:)
    • 可能你没有清楚地理解我的问题。我知道如何制定将客户保留在禁令名单中的方法。我不知道如何向服务发送禁止命令。
    • @Merlyn,你说得对。这是缺点! @Kseen,这个问题改变了你的服务。为此,您必须使用Duplex service!。 (如果你想打电话给客户做一些操作)
    【解决方案2】:

    创建访问同一数据存储的多个服务。一种用于客户,一种用于管理。

    为什么?

    见:http://en.wikipedia.org/wiki/Interface_segregation_principle

    怎么做?

    使用数据库,并从两个服务连接到它。如果您还没有数据库,Something with a small footprint like SqLite 可能会起作用。

    绑定

    命名管道可能是您绑定的好主意,因为它们无法通过网络访问。这是一个教程:

    但是在你做出飞跃之前先看看这个问题:

    如果这看起来太冒险,您可以使用 net-tcp 代替:

    【讨论】:

      猜你喜欢
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 2012-04-28
      • 1970-01-01
      相关资源
      最近更新 更多