8
我有一個以已知URI託管的託管發現服務。我有一個可發現的服務,當它啓動時,它會使用添加到服務的ServiceDiscoveryBehavior中的AnnouncementEndpoint來宣佈自己。當使用WCF ServiceDiscoveryBehavior公告端點時,會定期「重新宣佈」服務?
具體使用情況下,我想解決的是以下幾點:
- 託管發現服務啓動。
- 可發現服務啓動並向Managed Discovery服務宣告自己。
- 託管發現服務重新啓動(出於各種可能的原因)。
那麼可發現服務如何自我刷新(重新宣佈)到託管發現服務?
我知道託管發現服務可以堅持終端並在開始時恢復它們,但我希望一切都是動態的和自我修復的,這樣就沒有過時的終端信息的機會。
另一種使用情況是:
- 現有的發現服務正在運行。
- 新的託管發現服務已聯機。
我們如何強制或調用相同的公告服務合同呼叫到新的託管發現服務?
我希望這是關於我想要完成的足夠的信息。
這是如何工作的?我有以下幾點:所有可發現的服務在啓動時都會向發現服務宣佈自己。但是,當我必須重新啓動發現服務本身,而不重新啓動discoberable服務時,發現服務不再知道仍在運行的可發現服務。所以,我有想法緩存所有'EndpointDiscoveryMetadata'對象,並且在重新啓動時,我想檢查存儲的'EndpointDiscoveryMetadata'背後的服務是否仍然存在。你有一個想法如何做到這一點? – esskar 2011-12-20 12:10:21
@ esskar - 我所做的是實現一個週期性任務(線程),在可配置的時間間隔內「重新宣佈」。然後在發現服務實現上,它將添加或更新其內部緩存。如果你還沒有這樣做,我建議,從System.ServiceModel.Discovery.DiscoveryProxy派生你自己的發現服務,並實現你自己的端點緩存。 請參閱http://msdn.microsoft.com/en-us/library/dd456787.aspx 另外,我實現了一項租約,每個服務都提供了元數據擴展。如果租約到期,發現服務將刪除該端點。 – Jim 2011-12-21 18:31:00
...續... 如果宣佈服務通過重新宣佈自己來「更新」租約,則發現服務會將其保留在內存中。 另外,您可以使用對等網格運行多個發現服務並相互協作。網格中的每個節點共享端點。如果一個發現服務關閉,這允許您的服務具有冗餘。 – Jim 2011-12-21 18:33:55