代码之家  ›  专栏  ›  技术社区  ›  ctacke

与WCF服务客户端共享硬件资源

  •  0
  • ctacke  · 技术社区  · 15 年前

    所以我开始创建一个桌面WCF服务,它的核心是访问连接到串行端口的硬件。显然,只有一个端口,并且从该硬件派生的多个实体(如果您关心的话,ZigBee网络中的节点)需要与所有服务客户机平等共享。

    快速看一下JuvalLowy的“编程WCF服务”中的第8章,他似乎建议将共享资源放入静态类,但静态类会立即引发我的黑客攻击,因为这是一种糟糕的代码味道。

    有没有更“优雅”的方式来共享这些资源,或者静态类真的是这里公认的最佳实践?

    2 回复  |  直到 15 年前
        1
  •  1
  •   marc_s    15 年前

    这是一个罕见的情况下,一个单一的WCF服务可能会有很大的意义。由于只有一个硬件资源可供所有呼叫者共享,因此您的WCF服务可能与单例服务很匹配。

    查看Juval的第4章和分章“单点服务”。这不是一个非常可扩展的模型,但是因为您只有一个资源,所以它看起来很适合。您需要问自己的一个问题是,您的服务是否可以并且必须是多线程的(更多的工作编程),或者您是否真的可以或想要序列化请求(单线程,一个接一个地服务于一个请求),这更容易编程,但可伸缩性较低,性能也较低。

    马克

        2
  •  2
  •   cdonner    15 年前

    听起来您的客户机需要异步通信,因为当资源被阻塞时,他们必须等待资源释放。 我认为您需要实现一个队列,在操作完成后对客户机进行回调。

    处理串行端口通信IMHO的代码在某种程度上是有状态的,因此(静态)类方法无论如何都不适用于您。

    PS:静态类闻起来不错。实际上,它们根本没有气味,因为它们没有任何实例:—)。