Event based asynchronous pattern

11
Event based asynchronous pattern André Gagnon ing. Cale systems

Transcript of Event based asynchronous pattern

Page 1: Event based asynchronous pattern

Event based asynchronous patternAndré Gagnon ing.Cale systems

Page 2: Event based asynchronous pattern

Présentation• Je travaille dans le domaine du Stationnement• Je développe un système de requête réponse

d’une borne de paiement vers un dispositif de paiement (Interac, Carte de crédit)

• Il peut avoir de 0 à n transactions simultanément, d’où le besoins d’être asynchrone.

Page 3: Event based asynchronous pattern

Intégration• La plupart des dispositif de paiement utilisent, de

base, une communisation RS232. • On peut utiliser le USB, LAN, Wifi, mais la

communication demeure la même• Un début et une fin de message• Un ACK / NAK • Une longueur de message• Ex:• <STX>Request<ETX><LRC>• <ACK>• <STX>Response<ETX>• <ACK>

Page 4: Event based asynchronous pattern

Modèle proposé• Le modèle proposé par le fournisseur est un modèle

Event Based Asynchronous Pattern.• Il permet d’être multithread• Pas à attendre (WaitOne, WaitAll), cependant, il faut un

mécanisme pour rediriger les réponses.• Le modèle utilise les classes suivantes

• AsyncOperation• BeginInvoke/EndInvoke• Event/EventHandler

• !! Comme par hasard, ca ressemble à du Web. Alors, on ne réinvente pas la roue, on utilise les principe du WEB

• https://msdn.microsoft.com/en-us/library/hh191443.aspx

Page 5: Event based asynchronous pattern

Modèle proposé• Sommairement, on crée une « requête » en mode asynchrone,

le contrôle est immédiatement retourné à l’appelant. • À L’aide d’event / EventHandler, nous allons recevoir la

réponse

• ** On doit se retrouver, • State, Id, etc.

• Static (Thread safe)• On utilise un header et on peut mettre des trucs dans le header.• Les appels asynchrone proposent tjrs un « UserState » pour passer

l’objet que tu veux afin de le récupérer dans le callback.• Header! Comme le HTTP!

Page 6: Event based asynchronous pattern
Page 7: Event based asynchronous pattern

• Code code code!

• Calling Synchronous Methods Asynchronously• https

://msdn.microsoft.com/en-us/library/2e08f6yc(v=vs.110).aspx

Page 9: Event based asynchronous pattern

Lock• Le mot clé LOCK devrait être utilisé pour de

petites et courtes opérations. • Dangereux de bloquer des processus• Utile dans le modèle EAP pour conserver des état

par « id » puisqu’on est asyncrone est que l’on doit, en quelque sorte, écouter ou questionner l’état du système.

• EX:

Page 10: Event based asynchronous pattern

Expiration• Dans mon système, certains objets doivent avoir une

durée de vie• Empêche deux requêtes pour un même dispositif en même

temps• Bloque les requêtes dans le cas d’Exception qui rendent le

système instable• Etc.

• Manuellement, on peut utiliser un objet avec une « date » et avoir une mécanique qui enlève ces objets après un certains temps

• Le Framework .net offre des objets pour nous simplifier la vie• System.Remoting.Caching

Page 11: Event based asynchronous pattern

Question?