Comment : accorder la licence d'utilisation de composants et de contrôles

Le .NET Framework propose un modèle d'attribution de licence qui est identique pour tous les composants et les contrôles, y compris les contrôles Windows Forms et les contrôles serveur ASP.NET, et qui est entièrement compatible avec l'attribution d'une licence aux contrôles Microsoft ActiveX®.

Grâce à l'attribution d'une licence, vous pouvez, en tant qu'auteur de composant ou de contrôle, protéger votre propriété intellectuelle en vérifiant qu'un développeur est autorisé à utiliser votre composant ou contrôle. Cette vérification est plus importante au moment du design, lorsqu'un développeur incorpore votre composant ou contrôle dans une application, qu'au moment de l'exécution. Lorsqu'un développeur utilise légalement votre composant ou contrôle sous licence au moment du design, l'application du développeur obtient une licence au moment de l'exécution qu'il peut librement distribuer.

Il existe de nombreux autres niveaux de prise en charge de l'attribution d'une licence avec ce modèle de licences. Le modèle sépare la logique de validation du composant ou contrôle. Un fournisseur de licences accorde des licences et exécute la logique de validation. Le fournisseur est une classe qui dérive de LicenseProvider. Les étapes que vous devez suivre pour activer l'attribution d'une licence sont simples.

Lorsque vous utilisez l'implémentation par défaut de LicenseProvider fournie par LicFileLicenseProvider, le fichier de licence est mis en forme de la manière suivante :

  • Le nom du fichier doit se composer du nom qualifié complet, comprenant l'espace de noms, de la classe et de l'extension de nom de fichier .LIC. Par exemple :

    Namespace1.Class1.LIC

  • Le contenu du fichier de licence doit inclure la chaîne de texte suivante :

    « MonNomClasse est un composant sous licence. »

    myClassName est le nom qualifié complet de la classe. Par exemple :

    "Namespace1.Class1 is a licensed component."

Les exemples de code suivants illustrent un contrôle Windows Forms et un contrôle serveur ASP.NET qui implémentent un cas simple d'attribution de licence.

Pour permettre l'attribution d'une licence à votre composant ou contrôle

  1. Appliquez un LicenseProviderAttribute à la classe.

  2. Appelez Validate ou IsValid dans le constructeur.

  3. Appelez Dispose dans une licence accordée dans le finaliseur de la classe ou avant l'appel du finaliseur.

Les exemples de code suivants utilisent la classe de fournisseur de licence intégrée LicFileLicenseProvider, qui permet d'utiliser des fichiers de licence texte et imite le comportement de l'attribution d'une licence COM (ActiveX). Des scénarios d'attribution de licences plus complexes, tels que l'appel d'un service Web XML pour limiter le nombre d'instances d'un composant, nécessitent des types de fournisseurs de licences différents.

Exemple

Imports System
Imports System.ComponentModel
Imports System.Windows.Forms

' Adds the LicenseProviderAttribute to the control.
<LicenseProvider(GetType(LicFileLicenseProvider))> _
Public Class MyControl
    Inherits Control

    ' Creates a new, null license. 
    Private license As License = Nothing     

    Public Sub New()        

        ' Adds Validate to the control's constructor.
        license = LicenseManager.Validate(GetType(MyControl), Me)

        ' Insert code to perform other instance creation tasks here. 

    End Sub 

    Protected Overrides Sub Dispose(ByVal disposing As Boolean)

        If disposing Then 
            If (license IsNot Nothing) Then
                license.Dispose()
                license = Nothing 
            End If 
        End If 

    End Sub     

End Class
using System;
using System.ComponentModel;
using System.Windows.Forms;


// Adds the LicenseProviderAttribute to the control.
[LicenseProvider(typeof(LicFileLicenseProvider))]
public class MyControl : Control 
{

   // Creates a new, null license. 
   private License license = null;

   public MyControl () 
   {

      // Adds Validate to the control's constructor.
      license = LicenseManager.Validate(typeof(MyControl), this);

      // Insert code to perform other instance creation tasks here.
   }

   protected override void Dispose(bool disposing) 
   {
      if(disposing)
      {
         if (license != null) 
         {
            license.Dispose();
            license = null;
         }
      }
   }

}
// Adds the LicenseProviderAttribute to the control.

[LicenseProvider(LicFileLicenseProvider::typeid)]
public ref class MyControl: public Control
{
   // Creates a new, null license. 
private:
   License^ license;

public:
   MyControl()
   {

      // Adds Validate to the control's constructor.
      license = LicenseManager::Validate( MyControl::typeid, this );

      // Insert code to perform other instance creation tasks here.
   }

public:
   ~MyControl()
   {
      if ( license != nullptr )
      {
         delete license;
         license = nullptr;
      }
   }
};
Imports System
Imports System.ComponentModel
Imports System.Web.UI

' Adds the LicenseProviderAttribute to the control.
<LicenseProvider(GetType(LicFileLicenseProvider))> Public Class MyControl
    Inherits Control

    ' Creates a new, null license. 
    Private license As License

    Public Sub New()

        ' Adds Validate to the control's constructor.
        license = LicenseManager.Validate(GetType(MyControl), Me)

        ' Insert code to perform other instance creation tasks here. 

    End Sub 

    Public Overrides Sub Dispose()
        If (license IsNot Nothing) Then
            license.Dispose()
            license = Nothing 
        End If 
        MyBase.Dispose()
    End Sub 
End Class
using System;
using System.ComponentModel;
using System.Web.UI;

// Adds the LicenseProviderAttribute to the control. 
public class MyServerControl : Control 
{
    // Creates a new, null license. 
    private License license = null;

    public MyServerControl() 
    {
        // Adds Validate to the control's constructor.
        license = LicenseManager.Validate(typeof(MyServerControl), this);

        // Insert code to perform other instance creation tasks here.
    }

    public override void Dispose() 
    {      
        if (license != null) 
        {
            license.Dispose();
            license = null;
        }

        base.Dispose();
    }    
}

Voir aussi

Référence

LicenseProviderAttribute

LicenseProvider

Autres ressources

Création de composants