Como: Controles e componentes de licença

O .NET Framework fornece um modelo de licenciamento é idêntico para todos os componentes e controles, incluindo controles Windows Forms e ASP.NET server controla e é totalmente compatível com o licenciamento para controles de ActiveX do Microsoft ®.

Com o licenciamento, como o autor do componente ou controle, pode ajudar a proteger sua propriedade intelectual, verificando se o desenvolvedor está autorizado a usar seu componente ou controle. Essa verificação é mais importante em tempo de design, quando um desenvolvedor incorpora o componente ou controle em um aplicativo, que em tempo de execução. Quando um desenvolvedor usa legalmente seu componente licenciado ou controle em tempo de design, o aplicativo do desenvolvedor obtém uma licença de tempo de execução que o desenvolvedor pode distribuir livremente.

Você tem muitos outros níveis de suporte com o modelo de licenciamento de licenciamento. O modelo separa a lógica de validação do componente ou controle. Um provedor de licença concede licenças e executa a lógica de validação. O provedor é uma classe que deriva de System.ComponentModel.LicenseProvider. As etapas que devem ser tomadas para ativar o licenciamento são simples.

Quando você usa a implementação padrão de LicenseProvider fornecido por LicFileLicenseProvider, o arquivo de licença está formatado da seguinte maneira:

  • O nome do arquivo deve ser o nome totalmente qualificado, incluindo o namespace, da classe com a extensão de nome de arquivo.LIC. PARA. Por exemplo:

    Namespace1.Class1.lic

  • O conteúdo do arquivo de licença deve conter a seguinte seqüência de texto:

    "myClassName é um componente do Licenciado."

    myClassNameé o nome totalmente qualificado da classe. Por exemplo:

    "O Namespace1.Class1 é um componente do licenciado".

Os exemplos de código a seguir mostram um controle Windows Forms e uma ASP.NET o controle de servidor que implementam um caso simples de licenciamento.

Para ativar o licenciamento para o seu componente ou controle

  1. Aplicar uma LicenseProviderAttribute para a classe.

  2. Chame Validate ou IsValid no construtor.

  3. Chame Dispose em qualquer licença concedida no finalizador da classe ou antes do finalizer é chamado.

Os exemplos de código a seguir usam a classe do provedor de licença interna LicFileLicenseProvider, que permite que você use os arquivos de licença de texto e imita o comportamento de licenciamento do COM (ActiveX). Cenários de licenciamento mais complexos, como, por exemplo, chamando um XML Web service para limitar o número de instâncias de um componente, exigem tipos diferentes de provedores de licença.

Exemplo

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

Consulte também

Referência

LicenseProviderAttribute

LicenseProvider

Outros recursos

Criação de Componentes