COMMENT DEVELOPPER SON PROPRE DLL EN .NET ?


                                               1-Qu’est-ce qu’un fichier DLL ?

                                               2-Pour quelles utilités ?

                                               3-Développer une DLL

                                               4-Tester le fichier DLL

                                               5-Conseil de sécurité.

Vous trouvez fatiguant de répéter les mêmes actions dans différentes applications, voulez-vous avoir vos propres bibliothèques de classes pour les réutiliser ?
Alors suivez ce tuto avec plaisir car c’est le remède à ces routines.

1-Qu’est-ce qu’un fichier DLL ?

Une DLL (Dynamic Link Library en français, Bibliothèque de liens dynamiques) est un ensemble de routine (action répétitive) extraite d’un programme  pour être partagé à ou réutilisé dans d’autres programmes. Ce sont des fichiers très utiles en Programmation Orienté Objet.

2- Pour quelles utilités ?

Comme je viens de le mentionner, les fichiers DLL sont des fichiers contenants des extraits de codes réutilisables par d’autres applications
 (Notre cas concerne des applications .NET)
Imaginez- vous qu’un développeur constate qu’une fonctionnalité  X  est répétée dans presque toutes les applications qu’il développe ; faut-il toujours répéter ces mêmes actions pour perdre du temps ? NON !
Pour jouir de la POO, Il faut appliquer la notion de Réutilisabilité des bouts de codes. C’est donc là qu’intervient les fichiers DLL pour éviter de répéter les mêmes bouts de codes dans nos différentes applications. Une fois cette même action existe dans une DLL, on serra plus obligé de faire de la routine, mais plutôt réutiliser notre DLL, et c’est gagné !

3-Développer Une DLL.

Sachez donc qu’il s’agit de coder avec des classes bien sûr,  un extrait de code dans une bibliothèque de classe.  Et comme exemple, il faut dire qu’on peut développer des DLL pour  gérer plus rapidement des connexions aux bases de données, des traitements métiers qui reviennent fréquemment, des calculs mathématiques, …
Et mieux ! Ces DLL peuvent être utilisées dans tous les langages .NET  (C#, VB.NET,…) car celle-ci sont convertie en langages CLI lors de sa Génération par Visual Studio.
Trop de discours, passons maintenant à l’acte !
Nous allons développer une DLL qui nous permet de trouver le Maximum de deux nombres.
Insignifiant, oui. Mais l’objectif est de montrer comment réaliser ces propres DLL, nous n’allons donc pas nous attarder à développer une classa de 1000 lignes.
Avec Microsoft Visual Studio (j’utilise la version 2010, mais la version 2008 peut également réaliser cette recette), créez un projet de Bibliothèque de Classe dénommé TechNovMaxi:
      
Renommer la classe par défaut de Visual Studio par ce nom : Maxi.
Dans cette classe, saisissons les propriétés, le constructeur et la méthode suivante:
using System;
using System.Collections.Generic;
 using System.Linq;
 using System.Text;
namespace TechNovMaxi
 {
     public class Maxi
     {
        // Les propriétés
          public int NombreA { get; set; }
          public int NombreB { get; set; }

       // le constructeur
      public Maxi( int nombreA, int nombreB)
      {
        NombreA = nombreA;
        NombreB = nombreB;
      }

      /Methode de recherche du maxi
      public int Comparaison()
      {
      int Maxi = (NombreA > NombreB) ? NombreA : NombreB;
      return Maxi;
      }
    }
 }
Une astuce : Pour gagner du temps  au niveau des propriétés, il suffit de taper ce mot clé « pror » et appuyez deux fois sur la touche Tabulation et Visual Studio génère un prototype de propriétés que vous devez modifier à souhait.
public int MyProperty { get; set; }
Modifier donc MyPropriety, et même la portée si vous voulez.
Et voilà notre classe d’exemple aussi petite que ça !
Il faut maintenant générer le projet pour ainsi obtenir notre fameux fichier DLL : Un clic droit sur le projet, sélectionner  Générer. Pour retrouver ce fichier rendez-vous dans le répertoire  suivant de votre projet TechNovMaxi\bin\Debug et si le projet a bien été généré, vous verrez un fichier DLL portant le nom du projet :

4-Tester le fichier DLL.

Pour montrer l’une des puissances des fichiers DLL, nous allons tester celui qu’on vient de créer dans un projet VB.NET sachant qu’il a été développé en C#.
Créons  donc un projet VB (WinForm ou WPF) denommé  TestTechNovMaxiDLL.
Comme notre DLL nous permet que de donner le Maximum (le plus grand) de deux nombres, pour cela, nous allons créer une interface qui permet à l’utilisateur de rentrer deux nombres puis valider pour avoir un résultat.
Voici donc une interface exemplaire en WPF :
Saisissons ce bout de code pour instancier notre classe logé dans la DLL. Mais avant cela, veillez référencer le fichier. Pour cela, faites un clic droit sur le projet et sélectionnez « ajouter une référence… ».Dans la boite de dialogue que s’ouvre, cliquez sur l’onglet « Parcourir»,  localisez le fichier et cliquez sur OK pour l’importer  dans la lites des assembley du projet.
N’oublié pas d’importer l’assembley au début de programme :
Imports TechNovMaxi ' importation de la DLL

voici le programme complet :

Imports TechNovMaxi ' importation de la DLL
Class MainWindow
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
 Dim NombreA As Integer = CInt(TextBox1.Text) ' recuper la valeur saisie dans TextBox1
 Dim NombreB As Integer = CInt(TextBox2.Text) 'recuper la valeur saisie dans TextBox2
 Dim Compare As Integer ' recuperer le resultat de la compâraison.
Dim resultat As New Maxi(NombreA, NombreB) ' instanciation ce la classe Maxi
 Compare = resultat.Comparaison() 'appel de la methode "Comparaison" de cette meme classe pour effectuer la comparaison
 TextBlock1.Text = "le Maxi des deux nombres est : " & CStr(Compare) ' affichage du resultat
End Sub
End Class
Les commentaires expliquent clairement la démarche, passons donc à l’exécution :
Et voilà ! Notre DLL marche comme prévu, Génial non ?
Vous pouvez vous amuser à développer d’autre DLL bien utile pour vous ou pour bon nombre de développeurs.
  Comme ajout à cette partie, je vous propose un excellent outil développé par Gilles Tourreau pour visualiser intégralement le contenu d’une  DLL (d’autres le font pour bien assimiler la démarche empruntée par l’auteur afin de mieux l’utiliser et d’autres pour chercher des éventuelles failles dans vos fichiers DLL).
Cet outil est disponible est disponible ici

5-Conseil de sécurité.

Une chose est de pouvoir réduire ces routines via le développement des DLL, mais imaginez-vous que vous devez développer une DLL pour crypter les mots de passes dans une entreprise, sans camoufler les code, pensez-vous que cela sera une solution sécurisée ?  NON !
Il y a aujourd’hui la rétro ingénierie (Reverse Engineering) dont les mal intentionnés peuvent s’en servir pour découvrir ce que vous cachez comme secret. Cela est possible avec le CCI Explorer de Gilles Tourreau,  et NetReflector. Ces outils désassemblent les dll compilés.
       Une solution est de penser à cacher ou rendre illisible votre code avec Microsoft Visual Studio Professionnal Edition qui a en son sein un outil d’obfuscation (DotFuscator) en version communautaire (« Community Edition« ). Grace à cet outil, vos code source secret son difficile à déchiffré par les opportunistes, mais pas d’ambigüité au niveau de la compilation.
Comme illustration, je vous propose un code d’une DLL non obfusqué, désassemblé par NetReflector, ensuite ce même code obfusqué par DotFuscator et désassemblé par le même NetReflector.
Analysé par NetReflector sans obfuscation.
 
Voici ce même code analysé par NetReflector mais Obfusqué par DotFuscator.
Même si ce n’est pas une protection fiable à 100% (Community Edition étant une édition gratuite, certaines méthodes pour renforcer l’obfuscation ne sont pas présentes), cela peut servir à protéger votre code contre certains programmeurs un peu trop curieux.
N’hésitez pas à vous renseigner sur ces différents outils pour avoir plus d’amples d’informations.
                                                                                                            le code source est téléchargeable ici 
Ainsi prend fin ce petit tuto!
Vos commentaires et remarques sont importantes pour l’amélioration de ce tuto!

Une réflexion sur “COMMENT DEVELOPPER SON PROPRE DLL EN .NET ?

Laisser un commentaire