Compartilhar via


Como licenciar componentes e controles

.NET Framework fornece um modelo licenciamento que é idêntico para todos os componentes e controles, incluindo controles de formulários do windows e controles de servidor de ASP.NET , e é totalmente compatível com licenciamento para controles Microsoft ActiveX®.

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

Você tem muitos outros níveis de licenciamento suporte ao modelo licenciamento. O modelo separar lógica de validação de componente ou controle. Um provedor de licença concede licenças e executa lógica de validação. O provedor é uma classe que deriva de LicenseProvider. As etapas que você deve executar para ativar licenciamento são simples.

Quando você usa a implementação padrão de LicenseProvider fornecida por LicFileLicenseProvider, o arquivo de licença é formatada da seguinte maneira:

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

    Namespace1.Class1.LIC

  • O conteúdo do arquivo de licença deve conter a seguinte cadeia de caracteres de texto:

    “myClassName é um componente licenciado”.

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

    “Namespace1.Class1 é um componente licenciado”.

Os exemplos de código mostram um controle de formulários do windows e um controle de servidor de ASP.NET que implementam os exemplos simples de licença.

Para ativar licenciamento para o componente ou controle

  1. Aplicar LicenseProviderAttribute à classe.

  2. Chame Validate ou IsValid no construtor.

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

Os exemplos de código usam a classe interna LicFileLicenseProviderdo provedor de licença, que permite que você use a licença de texto arquivos e irá simular o comportamento de licenciamento de COM (ActiveX). Cenários mais complexos licenciamento, como chamar um serviço Web XML 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