Gestione licenze di componenti e controlli

Con .NET Framework viene fornito un modello di gestione delle licenze unico per tutti i componenti (inclusi i controlli Windows Form e i controlli server ASP.NET) e pienamente compatibile con la gestione delle licenze dei controlli Microsoft ActiveX®.

La gestione delle licenze consente agli autori di proteggere la proprietà intellettuale dei propri lavori grazie alla possibilità di verificare se un utente è autorizzato o meno a utilizzare un controllo. Tale verifica è più importante in fase di progettazione, quando il controllo viene incorporato in un'applicazione, che non in fase di esecuzione. Quando un controllo rilasciato su licenza viene utilizzato legalmente in fase di progettazione (e non può essere altrimenti), l'applicazione acquisisce una licenza per la fase di esecuzione che può essere distribuita liberamente.

Il modello di gestione delle licenze consente anche molti altri livelli di supporto per la gestione delle licenze, grazie alla separazione della logica di convalida dal componente o controllo. Il riconoscimento della licenza e la logica di convalida sono onere di un provider di licenze, ovvero di una classe derivata da System.ComponentModel.LicenseProvider. La procedura che l'autore di un componente deve osservare per attivare la gestione delle licenze è semplice.

Per attivare la gestione delle licenze per il proprio componente

  1. Applicare LicenseProviderAttribute alla classe.
  2. Chiamare LicenseManager.Validate o LicenseManager.IsValid nel costruttore.
  3. Nel distruttore della classe o prima di chiamare il distruttore, chiamare Dispose per tutte le licenze riconosciute.

Nell'esempio che segue viene illustrato un controllo Windows Form che implementa un semplice caso di gestione delle licenze.

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

Nell'esempio che segue viene illustrato un controllo server ASP.NET che implementa un semplice caso di gestione delle licenze.

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

Negli esempi sopra riportati viene illustrato l'utilizzo della classe provider di licenze incorporata LicFileLicenseProvider, che consente di utilizzare file di licenza in formato testo e simula il comportamento di un sistema di gestione delle licenze COM (ActiveX). Scenari di gestione delle licenze più complessi (come quelli che prevedono la chiamata di un servizio Web XML per limitare il numero di istanze di un componente) richiedono tipi di provider di licenze diversi.

Un ulteriore esempio di gestione delle licenze è disponibile in Guida rapida a Windows Form in Building Applications —> Creating Controls —> Licensing Controls.

Vedere anche

Sviluppo di componenti