Attribution d'une licence aux composants et aux contrôles
Le .NET Framework propose un modèle d'attribution de licence qui est identique pour tous les composants (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®.
L'attribution d'une licence permet aux auteurs de contrôles de protéger la propriété intellectuelle en vérifiant qu'un utilisateur est autorisé à utiliser le contrôle. Cette vérification est plus importante au moment du design, lorsque le contrôle est incorporé à l'application, qu'au moment de l'exécution. Lorsqu'un contrôle auquel une licence a été attribuée est légalement utilisé au moment du design (sinon il ne peut pas être utilisé), l'application obtient une licence utilisateur qui peut être librement distribuée.
Le modèle d'attribution de licence autorise également de nombreux autres niveaux de prise en charge de licence en séparant la logique de validation du composant ou du contrôle. L'attribution de licences et la logique de validation sont effectuées par un fournisseur de licence, qui est une classe qui dérive de LicenseProvider. Les étapes qu'un auteur de composants doit suivre pour permettre l'attribution d'une licence sont simples.
Pour permettre l'attribution d'une licence à votre composant
- Appliquez LicenseProviderAttribute à la classe.
- Appelez LicenseManager.Validate ou LicenseManager.IsValid dans le constructeur.
- Appelez Dispose dans une licence accordée dans le finaliseur de la classe ou avant l'appel du finaliseur.
L'exemple suivant illustre un contrôle Windows Forms qui implémente un simple cas d'attribution de licence.
using System;
using System.ComponentModel;
using System.Windows.Forms;
public class MyControl : Control {
private License license = null;
public MyControl () {
license = LicenseManager.Validate(typeof(MyControl), this);
}
protected override void Dispose(bool disposing) {
if (disposing) {
if (license != null) {
license.Dispose();
license = null;
}
}
base.Dispose(disposing);
}
~MyControl() {
Dispose();
}
}
[Visual Basic]
Imports System
Imports System.ComponentModel
Imports System.Web.UI
<LicenseProvider(GetType(LicFileLicenseProvider))> Public Class MyControl
Inherits Control
Private license As License
Public Sub New()
license = LicenseManager.Validate(GetType(MyControl), Me)
End Sub
Public Overloads Overrides Sub Dispose()
If Not (license Is Nothing) Then
license.Dispose()
license = Nothing
End If
End Sub
End Class
L'exemple suivant illustre un contrôle serveur ASP.NET qui implémente un simple cas d'attribution de licence.
using System;
using System.ComponentModel;
using System.Web.UI;
public class MyControl : Control {
private License license = null;
public MyControl () {
license = LicenseManager.Validate(typeof(MyControl), this);
}
public override void Dispose() {
if (license != null) {
license.Dispose();
license = null;
}
base.Dispose();
}
}
[Visual Basic]
Imports System
Imports System.ComponentModel
Imports System.Web.UI
<LicenseProvider(GetType(LicFileLicenseProvider))> Public Class MyControl
Inherits Control
Private license As License
Public Sub New()
license = LicenseManager.Validate(GetType(MyControl), Me)
End Sub
Public Overrides Sub Dispose()
If Not (license Is Nothing) Then
license.Dispose()
license = Nothing
End If
End Sub
End Class
Les exemples donnés ci-dessus 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 licence différents.
Un exemple d'attribution de licence est fourni dans le Démarrage rapide de Windows Forms sous Génération d'applications —> Création de contrôles —> Attribution d'une licence aux contrôles.