Verbinding maken met een peergroep
In dit onderwerp wordt beschreven hoe een toepassing verbinding maakt met een peergroep met behulp van de Peer Grouping-API's.
Deelnemen aan een peergroep
Als u wilt deelnemen aan een peergroep, roept u PeerGroupJoin-aan, waarbij u de identiteitsnaam van de peer en de uitnodiging doorgeeft (en een optionele PNRP-cloudnaam, als de cloudnaam in de uitnodiging niet eenduidig is).
Als dit lukt, retourneert PeerGroupJoin een handle naar de peergroep.
Als de peer eerder lid is geworden van de peergroep en vervolgens de handle heeft gesloten, moet de peergroep opnieuw worden geopend door PeerGroupOpen aan te roepen en de naam van de peergroep mee te geven. Deze aanroep retourneert een nieuwe peergroepidentificator.
Zodra de peergroep is gekoppeld, kan de peer rechtstreeks verbinding maken met de peergroep en communiceren door PeerGroupConnect-aan te roepen. Nadat u verbinding hebt gemaakt, wordt de peer beschouwd als 'online'.
Als een toepassing op dat moment niet met de groep communiceert, kan deze 'offline' blijven. Als het ervoor kiest om direct deel te nemen aan de peergroep op een later moment, zal een volgende aanroep naar PeerGroupConnect deze online brengen. Nadat een peer lid is geworden van de peergroep, moet deze ten minste één keer verbinding maken voordat records naar de peergroep kunnen worden gepubliceerd.
Een peergroep openen zonder verbinding te maken (offline)
Vaak wilt u een toepassing verbinding laten maken met een peergroep, maar niet rechtstreeks hieraan deelnemen, recordupdates ontvangen en publiceren, maar geen gegevensberichten verzenden of ontvangen. Een toepassing heeft de status Offline direct nadat PeerGroupCreate, PeerGroupJoinof PeerGroupOpen zijn aangeroepen.
Een offlinetoepassing kan op elk gewenst moment online gaan door PeerGroupConnect-aan te roepen. Zodra er verbinding is gemaakt, kan een peergroep pas offline gaan als alle andere toepassingen die zijn gekoppeld aan deze identiteit en het delen van deze groep ook verbindingen met deze groep hebben gesloten.
Een peergroep is een gedeelde resource, met dezelfde peergroep die beschikbaar is voor meerdere toepassingen. Als meerdere toepassingen voor dezelfde identiteit en Windows-gebruiker dezelfde peergroep gebruikt, delen ze ook dezelfde onderliggende database en verbindingen (neighbor en direct). Als een van deze toepassingen PeerGroupConnectaanroept, maken alle andere toepassingen voor deze identiteit/gebruiker die deelneemt aan de groep ook verbinding met de groep. Als een record door één toepassing wordt toegevoegd terwijl de groep offline is, kunnen andere toepassingen deze ook zien. Als gevolg hiervan moet een toepassing op elk gewenst moment online kunnen gaan.
Verbinding maken met een peergroep (online)
Als u wilt beginnen met deelnemen aan een groep, roept u PeerGroupConnect- aan nadat u de groep hebt gemaakt, toegevoegd of geopend. In deze status kunnen directe verbindingen worden geopend met andere peers die deelnemen aan dezelfde groep door PeerGroupOpenDirectConnection-aan te roepen.
Als u wilt detecteren of een verbindingspoging is mislukt, registreert u zich voor de PEER_GROUP_EVENT_CONNECTION_FAILED gebeurtenis. Deze gebeurtenis wordt gegenereerd als de groeperingsinfrastructuur geen ander lid kan vinden waarmee verbinding moet worden gemaakt of als de verbinding mislukt voordat de groepsdatabase wordt gesynchroniseerd en er geen verbinding tot stand kan worden gebracht.
Hoewel meerdere toepassingen die worden uitgevoerd op de peer en deelnemen aan dezelfde groep met dezelfde peer-identiteit offline kunnen zijn, kan een aanroep van PeerGroupConnect door een van de toepassingen ertoe leidt dat alle toepassingen online worden.
Als één toepassing op de peer verbinding heeft gemaakt met de groep, worden ook alle andere toepassingen die PeerGroupJoin- of PeerGroupOpen aanroepen, onmiddellijk verbonden. Indien een toepassing PeerGroupClosegebruikt, wordt de handle alleen voor die toepassing gesloten. Een daaropvolgende aanroep van PeerGroupOpen door de applicatie retourneert dus een nieuwe groepshandle. De applicatie wordt onmiddellijk online gebracht als andere applicaties die aan dezelfde groep deelnemen nog steeds zijn verbonden.
Gegevens verzenden en ontvangen
Als u gegevens tussen specifieke lidknooppunten in de groep wilt verzenden en ontvangen, moeten directe verbindingen tot stand worden gebracht met de leden waarmee u wilt communiceren. Het tot stand brengen van een directe verbinding is een asynchrone aanroep naar PeerGroupOpenDirectConnection, waarbij de ingang voor een verbonden groep wordt doorgegeven, evenals de identiteit van de peer binnen de groep waarmee u verbinding wilt maken. Met deze methode wordt een verbindings-id geretourneerd. Als de aanroep is geslaagd, wordt er een PEER_GROUP_EVENT_DIRECT_CONNECTION gebeurtenis gegenereerd op de peer, waarbij de verbindings-id wordt gevalideerd.
Als u directe verbindingen van andere online peers wilt ontvangen, registreert u voor het PEER_GROUP_EVENT_DIRECT_CONNECTION event met een aanroep naar PeerGroupRegisterEvent.
Zodra er een directe verbinding tot stand is gebracht, kan de toepassing beginnen met het verzenden van gegevens met aanroepen naar PeerGroupSendData, waarbij de geldige verbindings-id wordt doorgegeven. De volgorde van gegevensoverdrachten met meerdere onderdelen wordt verwerkt door PeerGroupSendData. Toepassingen moeten echter een juiste protocolstack implementeren voor het verwerken van de ondoorzichtige gegevens die door deze API-aanroep worden geretourneerd.
Als u gegevens wilt ontvangen via een directe verbinding, moet de toepassing zich registreren voor het PEER_GROUP_EVENT_INCOMING_DATA-evenement, met PeerGroupRegisterEvent. De gebeurtenis-handler is verantwoordelijk voor het verkrijgen en ordenen van de ondoorzichtige gegevens en het doorgeven ervan aan de toepassing. Deze gegevens worden verkregen in de evenementverwerker door PeerGroupGetEventData aan te roepen met de handle voor de geregistreerde gebeurtenissen.
Een directe verbinding wordt gesloten door PeerGroupCloseDirectConnection aan te roepen en de verbindings-id door te geven die is verkregen door een eerdere aanroep naar PeerGroupOpenDirectConnection of ontvangen in de gebeurtenisgegevens voor PEER_EVENT_GROUP_DIRECT_CONNECTION.