Très récemment, j’ai visionné une présentation de George Fairbanks intitulée Building Theories is Building Value. Fairbanks est aussi l’auteur d’un livre de référence sur l’architecture logicielle: Just Enough Software Architecture: A Risk-Driven Approach (2010). C’est l’un des meilleurs livres que j’ai lu en la matière. Au milieu de sa présentation, en plus d’être captivé, je […]
Terminer proprement un programme console
Les programmes console ne sont pas morts: il est courant de permettre à un service Windows d’être lancé en mode console, et ASP.NET Core est initialement prévu pour être exécuté en mode console (en self host). Dans ce contexte, se pose rapidement le problème de terminer proprement le contexte d’exécution (libérer les ressources IDisposable, éventuellement […]
Calcul de hachage pendant la lecture d’un fichier
Le hachage (md5, sha1…) est très couramment utilisé en transmission de fichier, pour vérifier que les données n’ont pas été corrompues entre leur production et leur consommation. Si le poids du fichier est conséquent, il est préférable de calculer le hachage à la volée plutôt que de parcourir le fichier plusieurs fois (pour le hachage, […]
.NET en 2016
Comme premier article de 2016, j’ai décidé de décrire les évolutions qui ont lieu actuellement sur le framework .NET. Il ne s’agit pas d’un how-to, et je ne propose pas de nouvelles informations. Il y a beaucoup d’informations à recouper pour s’y retrouver dans la nouvelle trajectoire qu’a choisi Microsoft pour adapter son framework au […]
Service Windows avec démarrage asynchrone
Le numéro de novembre dernier de MSDN Magazine contient un article de Mark Sowul intitulé Asynchronous Programming – Async from the Start. Il y est expliqué de façon très pédagogique comment démarrer une application WinForms ou WPF de manière asynchrone sans écueil. Cela m’a donné l’idée d’appliquer exactement le même sujet sur un service Windows […]
DisposableOwnership<T>
Afin d’éviter une exclamation du type « tout ça pour ça ? », je tiens à avertir tout de suite que cet article ne présente rien de plus spectaculaire que cet objet : struct DisposableOwnership<T> where T : IDisposable { public readonly T Resource; public readonly bool IsOwned; public DisposableOwnership(T resource, bool isOwned) { Resource = resource; […]