Kiezen of u berichten of gebeurtenissen wilt gebruiken
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 van plan bent Azure-technologieën te gebruiken om een robuuste communicatie-infrastructuur te bouwen.
Voordat u de juiste Azure-technologie kunt kiezen, moet u elke afzonderlijke communicatie begrijpen die de onderdelen van de toepassing uitwisselen. Voor elke communicatie kunt u een andere Azure-technologie kiezen.
Het eerste wat u moet weten over een communicatie, is of er berichten of gebeurtenissenworden verzonden. 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 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 nummermediabestand 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 uitzendingcommunicatie. De onderdelen die de gebeurtenis verzenden, worden uitgeversgenoemd en ontvangers worden abonneesgenoemd.
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 niet.
- Gebeurtenissen zijn vaak bedoeld om uit te waaieren of hebben een groot aantal abonnees voor elke uitgever.
- De uitgever van de gebeurtenis heeft geen verwachting over de actie die een ontvangend onderdeel neemt.
- Sommige gebeurtenissen zijn afzonderlijke eenheden en niet gerelateerd aan andere gebeurtenissen.
- Sommige gebeurtenissen maken deel uit van een gerelateerde en geordende reeks.
Stel dat het uploaden van het muziekbestand is voltooid en het nieuwe nummer wordt toegevoegd aan de database. Als u gebruikers wilt informeren over het nieuwe bestand, moet de web-API de gebruikers van de webfront-end en mobiele app informeren over het nieuwe bestand. 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.
Hoe berichten of gebeurtenissen te kiezen
Eén toepassing gebruikt waarschijnlijk gebeurtenissen voor bepaalde doeleinden en berichten voor anderen. 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.
Evenementen worden vaker gebruikt voor uitzendingen en zijn vaak vluchtig, wat betekent dat een communicatie niet wordt verwerkt door ontvangers als er op dat moment niemand op is geabonneerd. Berichten worden waarschijnlijker gebruikt wanneer de gedistribueerde toepassing een garantie vereist dat de communicatie wordt verwerkt.
Houd voor elke communicatie rekening met de volgende vraag: Verwacht het verzendende onderdeel dat de communicatie op een bepaalde manier door het doelonderdeel wordt verwerkt?
Als het antwoord is ja, kiest u ervoor om een bericht te gebruiken. Als het antwoord geen, dan 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.