Ich verwende WCF in .NET 3.5, um eine Peer-to-Peer-Netzwerkanwendung zu implementieren. Um Peer-Knoten zu lösen, verwende ich PNRP. wie untenWCF Peer to Peer, gibt es Knoten da draußen?
IGlobalStoreServiceContract ist mein Vertrag gezeigt,
[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);
}
ich so etwas Code bin mit jedem Knoten zu dem Peer-to-Peer-Netzwerk beizutreten.
Meine Frage ist, sobald ich den Kanal geöffnet habe, wie kann ich am besten sagen, ob andere Peer-Knoten im Netzwerk sind?
Zum Beispiel konnte ich eine der Methoden in meinem Vertrag RegisterNode nennen, und jeder Knoten im Netzwerk einen Rückruf verwenden könnte SynchronizeMemberList zu nennen. Ich würde dann wissen, ob andere Knoten da waren.
Das Problem mit diesem ist es asynchron ist. Wenn ich RegisterNode anrufe und niemand antwortet, bedeutet das nicht, dass niemand da ist, es könnte nur bedeuten, dass ich nicht lange genug gewartet habe.
Was meinst du? Irgendwelche Vorschläge?