toggle menu

Task based asynchronous pattern

Het Task Based Asynchronous Pattern (TAP) is een patroon in het .NET framework voor het asynchroon uitvoeren van operaties.

.NET framework patroon

In het werkveld is het ook bekend onder de naam ‘async’. Het is belangrijk om op te merken dat het hier niet specifiek om multithreading gaat, maar om een scheiding tussen het beginnen van een operatie en het ontvangen van het resultaat.Het patroon realiseert aan de ene kant een abstractie tussen asynchrone operaties en de implementatie daarvan. Aan de andere kant is het onderdeel van de programmeertaal (bvb C#), waardoor het in gebruik relatief eenvoudig is. Alleen al door gebruik te maken van ‘async’ varianten van bestaande framework functies en het toevoegen van een paar keywords, kan software asynchroon worden gemaakt.

Voorbeeld

Stel dat we een door WCF gegenereerde proxy class hebben voor het aanroepen van een SOAP service. Onze thread start maakt een instantie aan van deze proxy class en roept daarna de webservice aan. Terwijl de thread wacht op het antwoord van de service, zal hij geblokkeerd zijn.

Bij de tweede call gebeurt er iets anders. De webservice wordt aangeroepen, maar in plaats dat de thread wacht, wordt deze vrijgegeven. Pas op het moment dat het antwoord van de webservice terugkomt, wordt er weer een thread geactiveerd (binnen dezelfde context) om het resultaat verder te verwerken.

Als men bedenkt dat threads relatief kostbaar zijn, dan is al snel duidelijk wat het voordeel is. Met dezelfde hoeveelheid threads kunnen we meer werk doen, oftewel: meer requests van clients afhandelen.

Thomas Cook Price API als praktijkvoorbeeld

Voor Thomas Cook hebben wij een API gerealiseerd die dient als proxy tussen de websites en een prijsinformatie webservice. De prijzenservice is redelijk complex. Eén informatieve vraag van de website kan resulteren in meerdere calls naar de prijzenservice. De proxy haalt die complexiteit weg bij de webdevelopers en zorgt ervoor dat verschillende web developmentteams via één uniforme API hun prijsinformatie kunnen ophalen.

De verschillende websites van Thomas Cook hebben bij elkaar veel verkeer en daardoor ook veel prijsaanvragen. Door het gebruik van TAP hebben we twee doelen kunnen bereiken:

Overige technieken

Via onderstaande navigatie is het mogelijk om onze overige technieken die wij toepassen te bekijken. Wij nodigen iedereen uit om te bekijken waar Supershift nog meer in uitblinkt.

  • Kalfjeslaan 2
  • 2623 AA Delft
  • The Netherlands
  • +31(0)15 21 21 602
  • info@supershift.nl