我正在使用.NET 3.5中的WCF實現對等網絡應用程序。要解析對等節點,我正在使用PNRP。WCF點對點,有節點嗎?
IGlobalStoreServiceContract是我的合同,如下圖所示,
[ServiceContract(Namespace = "http://GlobalStoreEventDriven.API", CallbackContract = typeof(IGlobalStoreServiceContract))]
internal interface IGlobalStoreServiceContract
{
[OperationContract(IsOneWay = true)]
void NotifyGlobalStoreDataInserted(string globalGroup, DateTime maxDateTime);
[OperationContract(IsOneWay = true)]
void RegisterNode();
[OperationContract(IsOneWay = true)]
void SynchronizeMemberList(Guid clientId);
}
我使用了一些這樣的代碼加入每個節點的對等網絡。
DuplexChannelFactory<IGlobalStoreChannel> channelFactory = new DuplexChannelFactory<IGlobalStoreChannel>(instance, "GlobalStoreAPIEndPoint");
IGlobalStoreChannel globalStoreChannel = channelFactory.CreateChannel();
globalStoreChannel.Open();
我的問題是,只要我打開通道,我怎麼能最好地分辨其他對等節點是否在網絡上?
例如我可以調用我的合同RegisterNode中的一個方法,並且網絡中的每個節點都可以使用回調調用SynchronizeMemberList。然後我會知道其他節點是否在那裏。
問題在於它是全部異步的。如果我給RegisterNode打電話並且沒有人回覆,這並不意味着沒有人在那裏,這可能意味着我沒有等待足夠長的時間。
你認爲什麼?有什麼建議麼?