【问题标题】:Sharing hardware resources with WCF service clients与 WCF 服务客户端共享硬件资源
【发布时间】:2009-10-21 13:00:06
【问题描述】:

因此,我着手创建桌面 WCF 服务,其核心是访问连接到串行端口的硬件。显然只有一个端口,并且从该硬件派生的几个实体(如果您愿意,可以在 Zigbee 网络中的节点)需要与所有服务客户端平等共享。

快速浏览一下 Juval Lowy 的“Programming WCF Services”的第 8 章,他似乎建议将共享资源放入静态类,但静态类会立即引起我的不满,因为它是一种糟糕的代码气味。

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

【问题讨论】:

    标签: .net wcf


    【解决方案1】:

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

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

    ps:静态类并不难闻。实际上,它们根本没有气味,因为它们没有任何实例:-)。

    【讨论】:

      【解决方案2】:

      这是单例 WCF 服务可能很有意义的罕见情况之一。由于只有一个硬件资源可以在所有调用者之间共享,因此您的 WCF 服务可能非常适合作为单例。

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

      马克

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 2010-12-26
        • 2020-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多