Kies of u berichten of gebeurtenissen wilt gebruiken

Voltooid

Stel dat u de architectuur van een gedistribueerde toepassing voor het delen van muziek plant. U wilt ervoor zorgen dat de toepassing zo betrouwbaar en schaalbaar mogelijk is en u bent van plan Azure-technologieën te gebruiken om een krachtige communicatie-infrastructuur te bouwen.

Voordat u de juiste Azure-technologie kunt kiezen, moet u elke afzonderlijke communicatie die de onderdelen van de toepassing uitwisselen begrijpen. U kunt een andere Azure-technologie kiezen voor elke communicatie.

Het eerste dat u moet weten over een communicatie is of deze berichten of gebeurtenissen verzendt. Deze kennis helpt u bij het kiezen van de juiste Azure-service die u wilt gebruiken.

Communicatiestrategieën in Azure (API's)

Wat is een bericht?

In de terminologie van gedistribueerde toepassingen, hebben berichten de volgende kenmerken:

  • Een bericht bevat onbewerkte gegevens, geproduceerd door het ene onderdeel en verbruikt door een ander onderdeel.
  • Een bericht bevat de gegevens zelf, niet alleen een verwijzing naar die gegevens.
  • Het verzendende onderdeel verwacht dat het doelonderdeel de berichtinhoud op een bepaalde manier verwerkt. De algehele systeemintegriteit kan afhankelijk zijn van zowel de afzender als de ontvanger die een specifieke taak uitvoert.

Stel bijvoorbeeld dat een gebruiker een nieuw nummer uploadt met behulp van de mobiele app voor het delen van muziek. De mobiele app moet dat nummer verzenden naar de web-API, die wordt uitgevoerd in Azure. Het mediabestand met het nummer zelf moet worden verzonden, niet alleen een waarschuwing die aangeeft dat er een nieuw nummer is toegevoegd. De mobiele app verwacht dat de web-API het nieuwe nummer opslaat in de database en deze beschikbaar maakt voor andere gebruikers. Dit is een voorbeeld van een bericht.

Wat is een gebeurtenis?

Gebeurtenissen zijn lichter dan berichten en worden meestal gebruikt voor broadcastcommunicatie. De onderdelen die de gebeurtenis verzenden staan bekend als uitgevers en ontvangers als abonnees.

Met gebeurtenissen bepalen de ontvangende onderdelen in welke communicatie ze geïnteresseerd zijn en 'abonneren' op deze gebeurtenissen. Een intermediair beheert het abonnement, zoals Azure Event Grid of Azure Event Hubs. Wanneer uitgevers een gebeurtenis verzenden, stuurt de intermediaire gebeurtenis naar geïnteresseerde abonnees. Dit patroon wordt een architectuur voor publiceren-abonneren genoemd. Het is niet de enige manier om met gebeurtenissen om te gaan, maar het is de meest voorkomende.

Gebeurtenissen hebben de volgende kenmerken:

  • Een gebeurtenis is een lichtgewicht melding die aangeeft dat er iets is gebeurd.
  • De gebeurtenis kan worden verzonden naar meerdere ontvangers of helemaal geen ontvangers.
  • Gebeurtenissen zijn vaak bedoeld voor 'fan-out' of hebben een groot aantal abonnees voor elke uitgever.
  • De uitgever van de gebeurtenis heeft geen verwachting over de actie die een ontvangend onderdeel onderneemt.
  • Sommige gebeurtenissen zijn afzonderlijke eenheden en houden geen verband met andere gebeurtenissen.
  • Sommige gebeurtenissen maken deel uit van een gerelateerde en geordende reeks.

Stel dat het uploaden van het muziekbestand is voltooid en dat het nieuwe nummer is toegevoegd aan de database. Om gebruikers te informeren over het nieuwe bestand, moet de web-API de webfront-end en de gebruikers van de mobiele app over het nieuwe bestand informeren. De gebruikers kunnen kiezen of ze naar het nieuwe nummer willen luisteren, zodat de eerste melding het muziekbestand niet bevat, maar alleen gebruikers op de hoogte stelt dat het nummer bestaat. De afzender heeft geen specifieke verwachting dat de gebeurtenisontvangers iets met name doen als reactie op deze gebeurtenis.

Dit scenario is een voorbeeld van een discrete gebeurtenis.

Berichten of gebeurtenissen kiezen

Een bepaalde toepassing gebruikt waarschijnlijk gebeurtenissen voor een bepaald doeleinde en berichten voor andere doeleinden. Voordat u kiest, moet u de architectuur van uw toepassing en alle bijbehorende use cases analyseren om alle verschillende doeleinden te identificeren waar de onderdelen met elkaar moeten communiceren.

Gebeurtenissen worden waarschijnlijker gebruikt voor uitzendingen en zijn vaak kortstondig. Dit betekent dat een communicatie mogelijk niet door een ontvanger wordt verwerkt als er momenteel geen abonnement wordt genomen. Berichten worden waarschijnlijk meer gebruikt wanneer voor de gedistribueerde toepassing een garantie vereist is dat de communicatie wordt verwerkt.

Voor elke communicatie dient u rekening te houden met de volgende vraag: verwacht het verzendende onderdeel dat de communicatie op een bepaalde manier wordt verwerkt door het doelonderdeel?

Als het antwoord ja is, kiest u voor een bericht. Als het antwoord nee is, kunt u mogelijk gebeurtenissen gebruiken.

Als u begrijpt hoe uw onderdelen moeten communiceren, kunt u kiezen hoe uw onderdelen communiceren. Laten we beginnen met berichten.

Test uw kennis

1.

Stel dat u een gedistribueerde toepassing hebt met een webservice waarmee gebruikers worden geverifieerd. Wanneer een gebruiker zich aanmeldt, wordt dit met webservice aan de clienttoepassingen doorgegeven, zodat in de toepassingen de status van die gebruiker als Online kan worden weergegeven. Is de melding voor aanmelding een voorbeeld van een bericht of van een gebeurtenis?

2.

Stel dat u een gedistribueerde toepassing hebt met een webservice waarmee gebruikers hun account kunnen beheren. Gebruikers kunnen zich aanmelden, hun profiel bewerken en hun account verwijderen. Wanneer een gebruiker het account verwijdert, wordt dit met de webservice doorgegeven aan de gegevenslaag, zodat de gegevens van de gebruiker worden verwijderd uit de database. Is de melding voor het verwijderen van een account een voorbeeld van een bericht of van een gebeurtenis?