Estoy usando WCF en .NET 3.5 para implementar una aplicación de red de igual a igual. Para resolver nodos pares, estoy usando PNRP.WCF Peer to Peer, ¿Hay nodos por ahí?
IGlobalStoreServiceContract es mi contrato como se muestra a continuación,
[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);
}
estoy usando un código como este para unirse a cada nodo de la red punto a punto.
DuplexChannelFactory<IGlobalStoreChannel> channelFactory = new DuplexChannelFactory<IGlobalStoreChannel>(instance, "GlobalStoreAPIEndPoint");
IGlobalStoreChannel globalStoreChannel = channelFactory.CreateChannel();
globalStoreChannel.Open();
Mi pregunta es tan pronto como abro el canal, ¿cómo puedo saber si hay otros nodos iguales en la red?
Por ejemplo, podría llamar a uno de los métodos en mi contrato RegisterNode, y cada nodo en la red podría usar una devolución de llamada para llamar a SynchronizeMemberList. Entonces sabría si otros nodos estaban allí.
El problema es que es todo asíncrono. Si llamo a RegisterNode y nadie responde, realmente no significa que no haya nadie allí, solo podría significar que no esperé lo suficiente.
¿A qué te refieres? ¿Alguna sugerencia?