2009-10-21 106 views
0

因此,我着手創建一個桌面WCF服務,其核心訪問硬件連接到串行端口。顯然,只有一個端口,並且需要將所有硬件(Zigbee網絡中的節點,如果您關心的話)中的幾個實體平均分配給所有服務客戶端。與WCF服務客戶端共享硬件資源

Juval Lowy的「編程WCF服務」的Chapeter 8快速瀏覽,似乎他建議將共享資源放入一個靜態類中,但靜態類會立即引發我的黑客攻擊,因爲它是一種糟糕的代碼味道。

有沒有更多的「優雅」的方式來分享這些資源,或者是一個靜態類真正的公認的最佳做法嗎?

回答

1

這是罕見的情況之一,當一個單身WCF服務可能會有很多意義。由於在所有調用者中只有一個單獨的硬件資源可供共享,因此您的WCF服務可能與單身人士完美匹配。

查看Juval的第4章和「Singleton service」子章節。這不是一個可擴展的模型,但由於您只有一個資源,所以它看起來很合適。您需要問自己的一個問題是您的服務是否可以並且必須是多線程的(更多工作編程),或者如果您真的可以或想要序列化請求(單線程,一個接一個請求),這更容易程序,但可伸縮性較差並且性能較差。

馬克

2

聽起來你的客戶需要異步通信,因爲他們將不得不等待資源在被阻塞時釋放。 我認爲你需要實現一個隊列,並在完成一個操作時給客戶端回調。

處理串行端口通信imho的代碼在某個級別處於有狀態,因此(靜態)類方法無論如何都不適用於您。

ps:靜態類沒有異味。實際上,它們根本沒有氣味,因爲它們沒有任何實例:-)。