Tag Archives: dotnet

[DotNet] Vérifier la disponibilité d’un port en écoute

dotnet microsoft

Nous vivons dans un monde surconnecté, c’est pourquoi la plupart des applications utilisent une architecture Client / Serveur afin de communiquer et transmettre des données.

Lorsqu’on développe une application Serveur qui va se mettre en écoute sur un ou plusieurs ports il est primordial de vérifier leur disponibilité.

En effet, sur une même machine il est impossible de mettre 2 applications en écoute sur le même port their website.

Voici la solution que j’utilise pour effectuer cette vérification de port listener.

[DotNet] Remplacer les caractères accentués et les caractères non imprimables

dotnet special character

La langue française est merveilleuse mais les caractères accentués peuvent vite devenir pénalisant dans le développement d’une application.

En effet, certains logiciels ne supportent pas ou mal l’encodage UTF8, et par conséquent les caractères spéciaux peuvent être mal interprétés.

Je vous propose donc une fonction DotNet qui remplacera les caractères accentués par le caractère équivalent non accentué.

[DotNet] Détecter la fermeture d’une application Console

dotnet microsoft

Aujourd’hui un collègue m’a posé une colle: comment détecter et catcher la fermeture d’une application DotNet de type Console Application.

Pour une application WinForm ou WPF, pas de souci on a les application events mais malheureusement cela n’existe pas pour une application Console.

Mais heureusement il est possible de détecter la fermeture d’une application Console, qu’elle intervienne après un CTRL-C ou après un clic sur la croix de fermeture Windows.

Après quelques recherches sur Google, on a réussi à trouver une solution simple: utiliser les InteropServices et la dll système Kernel32.

[.Net] Ajouter un Serveur Web dans une application DotNet

dotnet web server

De nombreuses applications intègrent directement un serveur Web afin de fournir à leur utilisateur une interface accessible sur pc, sur mobile et sur tablette.

Du coup, à force de voir mes clients me demander des applications accessibles sur Internet sans avoir à installer un apache, IIS, ou autre lamp, je me suis décidé à intégrer un serveur Web directement dans mes logiciels DotNet.

Par chance, il existe de nombreux exemples sur le Net permettant d’embarquer rapidement un web serveur dans une application.

Après consultation de la MSDN, il s’avère que la création d’un serveur web est un jeu d’enfant en utilisant le composant HTTPListener.

Voici donc une petite classe toute simple qui vous permettra d’insérer un serveur web dans vos applications C# ou VB.net.

[.Net] Créer et utiliser des plugins dans une application DotNet

dotnet plugins

Aujourd’hui j’ai développé un système de gestion de plugins en DotNet.

En effet, plus je développe et plus je m’aperçois que j’ai souvent le même besoin: pouvoir importer des assembly à un moment précis et permettre à mes collaborateurs de développer leur propres extensions et de les utiliser quand ils le souhaitent.

J’ai donc effectué pas mal de recherche sur le chargement dynamique des assembly et des bibliothèques de fonctionnalités et très vite je suis tombé sur des demandes de tierses personnes qui souhaitaient mettre en place un système de plugins en C# ou VB.Net.

Imaginez une application dans laquelle vous offrez la possibilité à ses utilisateurs d’étendre facilement les fonctionnalités. Que du bonheur!

Nous allons voir comment mettre en place la création et le chargement des plugins au sein de votre application DotNet.

[.Net] StopWatch VS Tickcount

dotnet stopwatch

Aujourd’hui, j’ai procédé à un petit test afin de déterminer quel est le moyen le plus performant de mesurer le temps d’exécution d’un morceau de code.

Généralement pour mesurer des temps d’exécution, j’utilise la classe StopWatch du Framework DotNet mais j’ai l’impression qu’elle n’est pas très performante lorsqu’on l’utilise très très souvent.

J’ai donc réalisé un test qui compare le temps d’exécution d’une fonction mesuré avec le StopWatch et l’équivalent en utilisant directement un tickcount.

[.Net] Comment trouver les frameworks DotNet installés ?

dotnet microsoft

Aujourd’hui j’ai eu une question tout bête: comment faire pour savoir les versions du framework DotNet installées sur une machine Windows ?

Après avoir cherché sur le serveur, dans les propriétés, dans les logiciels installés, etc…, j’ai enfin trouvé un début de piste dans la base de registre.

Le souci c’est que récupérer toutes les versions disponibles du framework DotNet via la base de registre n’est pas super convivial.

Après un peu de recherche, j’ai trouvé un sample directement sur la MSDN qui permet d’afficher la liste de toutes les versions du framework DotNet installé.

[.Net] Terminer un processus et ses processus enfants

Dotnet Kill Process

Dans le framework DotNet, la classe Process (System.Diagnostics) permet de faire un certain nombre d’actions sur les processus: créer un processus, lister les processus par nom ou pid, ou bien encore tuer un processus.

La classe Process bien que très complète ne nous permet pas de tuer un processus et les processus enfants (child process) qui y sont associés.

La fonction suivante utilise la récursivité et WMI pour lister l’ensemble des processus enfants pour pouvoir tous les tuer (killer).

[.Net] DynamicMethod: performance ultime pour exécuter du code DOM

dotnet performance dynamicmethod

Lorsqu’on est développeur d’applications, on doit sans cesse faire attention à l’utilisation des ressources et aux performances d’exécution.

Récemment j’ai rencontré plusieurs soucis liés aux performances de mon code et plus précisément sur l’exécution de plusieurs milliers de fonctions DOM (via vbcodeprovider).

J’ai donc fait plusieurs recherches sur le net et j’ai trouvé (désolé je n’ai pas retenu l’addresse) une solution très performante qui consiste à utiliser les DynamicMethod à la place des invoke.

Les DynamicMethod sont tout simplement des méthodes dynamiques (pas possible !) qui peuvent être compilées, exécutées et supprimées. La puissance des DynamicMethod est qu’elles sont exécutées quasiment avec la même rapidité que si elles étaient directement compilées dans votre code.

Je vous invite à lire la MSDN concernant les DynamicMethod, qui sont considérées comme le méthode la plus rapide pour compiler et exécuter des morceaux de code.

Au cours de mes lectures j’ai même pu voir que les DynamicMethod étaient jusqu’à 2000 fois plus performantes que les autres méthodes telles que Reflection, Invoke, …

Voici le résultat obtenu:

dotnet performance dynamicmethod

dotnet performance dynamicmethod

Plutôt concluant non ? Allez pour ceux qui sont dubitatifs, je vous mets à disposition la solution complète que j’ai écrite pour benchmarker les DynamicMethod.

La solution utilisant les DynamicMethod est disponible ici

ZeM.fr de retour après une coupure

zem zorro

Comme vous avez pu le constater, ZeM.fr a été indisponible quelques jours à cause de notre hébergeur qui à considéré que la popularité grandissante de ZeM.fr faisait ralentir l’ensemble de son réseau informatique et plus particulièrement sa bande passante.

Toute l’équipe est donc désolée pour cette coupure et nous allons prochainement migrer l’ensemble du blog sur un de nos serveurs dédiés afin de ne plus avoir à subir ce genre de souci.

De nombreux articles sont en cours de rédaction: dotnet, webmarketing, bitcoin, litecoin, …

Et le projet Nazduino va probablement démarrer à la rentrée. En attendant, nous vous souhaitons à tous de bonnes vacances 🙂