# Dotnet > Gnral Dotnet > Rseau >  Systme de gestion Packet

## T4unt

Bonjour,
Depuis quelques temps, j'essai de faire un systme propre, rapide et si possible, simple pour la gestion de mes packets.

Je m'explique : 
Mon code actuel est trop simple, pas propre et on peut surement faire mieux niveau rapidit.


```

```

Auriez-vous un systme plus complet  me proposer ? car les 'Substring', 'Split', et autre sont  proscrire si l'utilisation est continue(d'aprs certains dires...).

T4unt.

----------


## Immobilis

Salut,
Dj, tu pourrais faire


```

```

Ce qui m'interpelle dans ton code ce sont les "if". Combien en as-tu?

J'ai eu l'occasion de rencontrer quelqu'un qui disait faire en sorte de ne jamais mettre de "if" dans son code (ou le moins possible). Il faut savoir qu'une srie de "if" consomme beaucoup de temps. Le code va les parcourir jusqu' ce que la condition soit vraie. Si c'est au dbut c'est bien si c'est  la fin c'est problmatique. En gnral, on met au dbut les conditions qui ont le plus de chances d'tre vraies.

Pour obtenir de meilleurs performances, il faut se servir d'un outils permettant de faire des requtes (une base de donnes, un dictionnaire). Il y a fort  parier que tu pourrais obtenir de meilleurs performances en faisant une requte en base genre 

```
select instancename from matable where packetname = 'BVN'
```

Cette requte retourne "BVNMessage" et tu fais (sachant que "BVNMessage" et "BYEMessage" implmentent "IPacketParser")

```

```

Utiliser l'activateur plutt que des if donne de meilleurs performances ds qu'il y a plus de 4 ou 5 if.

Tu peux aussi utiliser un dictionnaire qui prend comme clef "BNV" ou "BYE" et en valeur une fonction.

A+

----------


## T4unt

Ah oui, je comprends tout  fait le fonctionnement, cependant, puis-je vous demandez un petit exemple assez simple s'il vous plat ? 
Merci pour l'aide apporte.
T4unt.

EDIT : Cependant, en y repensant, nous devons bien faire en sorte d'identifier le header du packet ?
Exemple : 


```

```

----------


## Immobilis

> Cependant, en y repensant, nous devons bien faire en sorte d'identifier le header du packet ?


Oui, et alors? Je vois pas o est le problme?  ::):

----------


## hussein47

Je te donne l'exemple qu'Immobilis a sans doute eu la flemme de faire xd.
Ajoute une interface ( IMessage par exemple ) avec la methode Parse et ensuite cre un dictionnaire avec comme cl un string pour l'entete du message :



```

```

et ensuite tu a juste a verifi que la definition existe dans le dictionne pour retourner une instance :



```

```

----------


## Immobilis

> Je te donne l'exemple qu'Immobilis a sans doute eu la flemme de faire xd.





> ```
> 
> ```


Sans les erreurs de syntaxe  ::mrgreen:: 

```

```

J'avoue, je n'avais pas pens  cette criture bien pratique  ::ccool:: 

A+

----------


## hussein47

J'ai toujours ce problme avec les deux 'n' haha !

Met le sujet en rsolu si tu a tout compris.

----------


## T4unt

Un ami m'a donn une solution que j'aime bien :


```

```

ainsi de suite...
 :;): 
merci  tous pour vos rponses !

----------


## Immobilis

> ainsi de suite...


Ah be pour le coup, je suis du. Il faut croire que tu n'as pas lu la question de la performance...

Enfin...

----------

