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

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.…

Read more

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

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é.…

Read more

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

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.…

Read more

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

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.…

Read more

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

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.…

Read more

[.Net] StopWatch VS Tickcount

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.…

Read more

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

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é.…

Read more

[.Net] Terminer un processus et ses processus enfants

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).…

Read more

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

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.…

Read more

ZeM.fr de retour après une coupure

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.…

Read more