Comment : accorder la licence d'utilisation de composants et de contrôles
Mise à jour : novembre 2007
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 :
"myClassName is a licensed component."
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
Appliquez un LicenseProviderAttribute à la classe.
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;
}
}
};
import System.*;
import System.ComponentModel.*;
import System.Windows.Forms.*;
// Adds the LicenseProviderAttribute to the control.
/** @attribute LicenseProvider(LicFileLicenseProvider.class)
*/
public class MyControl extends Control
{
// Creates a new, null license.
private License license = null;
public MyControl()
{
// Adds Validate to the control's constructor.
license = LicenseManager.Validate(MyControl.class.ToType(), this);
// Insert code to perform other instance creation tasks here.
}
protected void Dispose(boolean disposing)
{
if (disposing) {
if (license != null) {
license.Dispose();
license = null;
}
}
}
}
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();
}
}
import System.*;
import System.ComponentModel.*;
import System.Web.UI.*;
// Adds the LicenseProviderAttribute to the control.
/** @attribute LicenseProvider(LicFileLicenseProvider.class)
*/
public class MyControl extends Control
{
// Creates a new, null license.
private License license = null;
public MyControl()
{
// Adds Validate to the control's constructor.
license = LicenseManager.Validate(MyControl.class.ToType(), this);
// Insert code to perform other instance creation tasks here.
}
protected void Dispose(boolean disposing)
{
if (license != null)
{
license.Dispose();
license = null;
}
super.Dispose();
}
}