我有用C#編寫的Windows服務。它運作良好,表現良好。我已將WCF服務添加到Windows服務,以使客戶端應用程序能夠連接到Windows服務並從Windows服務獲取有狀態的信息。如何在可以訪問Windows服務中的有狀態信息的Windows服務中設置WCF ServiceHost
我配置WCF服務是一個單,使得相同的服務實例是用來處理來自所有客戶端的所有請求如下:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
所有客戶端能夠在WCF服務中連接並訪問相同的有狀態信息。但是,我遇到了以下特殊行爲。
修訂:
我實例WCF 合同我的Windows服務中的服務。實例化時分配的任何有狀態信息都可用於連接到該服務的所有客戶端。
但是,任何有狀態信息直接從Windows服務(不是客戶端)添加到服務合同實例中,對於連接到該服務的客戶端不可見。就好像服務合同有兩個實例:一個用於Windows服務,另一個用於連接到WCF服務的客戶端。
什麼是建議(最好)的方式來實例化WCF服務,並讓它能夠訪問Windows服務中可用的有狀態信息?
我並不真的需要WCF服務是有狀態的。我有Windows服務中的有狀態信息。我希望WCF服務能夠向請求它的客戶提供這些信息。我該如何解決這個問題? – Elan 2009-08-14 14:03:08
當然,我可以通過將信息存儲到數據庫來解決這個問題。當信息已經在Windows服務中可用時,特別是當WCF服務託管在Windows服務的上下文中時,這似乎是不必要的開銷。看來我現在不必再另外存儲它並從數據庫中檢索它,以便客戶端訪問它。理想情況下,我希望WCF服務能夠訪問Windows服務中的有狀態數據。 – Elan 2009-08-14 14:20:53
要回答你的問題,我最初開始了分配給列表中的WCF服務宿主實例的引用,但現在會得到這種方法走,因爲它不從需要一個Singleton手邊的工作。 – Elan 2009-08-14 15:08:10