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

时间:2009-10-21 02:05:20

标签: .net wcf

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

快速浏览一下Juval Lowy的“编程WCF服务”的Chapeter 8,他似乎建议将共享资源放入静态类中,但是静态类会立即引起我的讨厌,因为代码有异味。

是否有一些更“优雅”的方式来分享这些资源,或者这是一个真正被认为是最佳实践的静态类?

2 个答案:

答案 0 :(得分:2)

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

处理串口通信imho的代码在某种程度上是有状态的,所以(静态)类方法无论如何都不适合你。

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

答案 1 :(得分:1)

这是单例WCF服务可能非常有意义的罕见情况之一。由于在所有呼叫者之间只能共享一个硬件资源,因此您的WCF服务可能是一个很好的匹配单位。

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

马克