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 System.ComponentModel.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