Procedura: concedere in licenza componenti e controlli

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

Mediante la gestione delle licenze, l'autore di un componente o di un controllo può proteggere i propri diritti di proprietà intellettuale verificando che uno sviluppatore sia autorizzato a utilizzare il componente o il controllo. Tale verifica è più importante in fase di progettazione, quando lo sviluppatore incorpora il componente o il controllo in un'applicazione, che non in fase di esecuzione. Quando uno sviluppatore utilizza legalmente il componente o il controllo concesso in licenza in fase di progettazione, l'applicazione dello sviluppatore ottiene una licenza runtime che può essere liberamente distribuita.

Con il modello di gestione delle licenze esistono molti altri livelli di supporto per la gestione delle licenze. Il modello consente di separare la logica di convalida dal componente o dal controllo. La concessione delle licenze e l'esecuzione della logica di convalida vengono eseguite da un provider di licenze. Il provider è una classe che deriva da System.ComponentModel.LicenseProvider. La procedura per l'attivazione della gestione delle licenze è molto semplice.

Quando si utilizza l'implementazione predefinita di LicenseProvider fornita da LicFileLicenseProvider, il file di licenza è formattato nel modo seguente:

  • Il nome del file deve corrispondere al nome completo, incluso lo spazio dei nomi, della classe con estensione LIC, ad esempio:

    Spazionomi1.Classe1.LIC

  • Nel contenuto del file di licenza deve essere presente la seguente stringa di testo:

    "myClassName is a licensed component."

    myClassName corrisponde al nome completo della classe, ad esempio:

    "Spazionomi1.Classe1 is a licensed component."

Negli esempi di codice riportati di seguito vengono illustrati un controllo Windows Form e un controllo server ASP.NET che implementano un semplice caso di gestione delle licenze.

Per attivare la gestione delle licenze per il proprio componente o controllo

  1. Applicare LicenseProviderAttribute alla classe.

  2. Chiamare Validate o IsValid nel costruttore.

  3. Nel distruttore della classe o prima di chiamare il distruttore, chiamare Dispose per tutte le licenze riconosciute.

Negli esempi di codice riportati di seguito viene utilizzata la classe provider di licenze incorporata LicFileLicenseProvider, che consente di utilizzare file di licenza in formato testo simulando il comportamento di un sistema di gestione delle licenze COM (ActiveX). Scenari di gestione delle licenze più complessi, ad esempio quelli che prevedono la chiamata di un servizio Web XML per limitare il numero di istanze di un componente, richiedono altri tipi di provider di licenze.

Esempio

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();
    }    
}

Vedere anche

Riferimenti

LicenseProviderAttribute

LicenseProvider

Altre risorse

Modifica di componenti