Share via


Lizenzieren von Komponenten und Steuerelementen

.NET Framework bietet ein Lizenzierungsmodell, das für alle Komponenten (einschließlich Windows Forms-Steuerelemente und ASP.NET-Serversteuerelemente) identisch und mit der Lizenzierung von Microsoft ActiveX®-Steuerelementen vollständig kompatibel ist.

Die Lizenzierung ermöglicht Entwicklern von Steuerelementen den Schutz des geistigen Eigentums, indem überprüft wird, ob ein Benutzer zum Verwenden des Steuerelements berechtigt ist. Diese Überprüfung ist zur Entwurfszeit, wenn das Steuerelement in eine Anwendung eingebunden wird, von größerer Bedeutung als zur Laufzeit. Wenn ein lizenziertes Steuerelement zur Entwurfszeit legal verwendet wird (eine andere Verwendung ist ausgeschlossen), erhält die Anwendung eine Laufzeitlizenz, die frei verteilt werden kann.

Das Lizenzierungsmodell ermöglicht außerdem zahlreiche weitere Ebenen der Lizenzierungsunterstützung, indem die Überprüfungslogik von der Komponente oder dem Steuerelement getrennt wird. Das Gewähren von Lizenzen und die Überprüfungslogik werden durch einen Lizenzgeber ausgeführt, bei dem es sich um eine von System.ComponentModel.LicenseProvider abgeleitete Klasse handelt. Die Schritte, die ein Entwickler von Komponenten ausführen muss, um die Lizenzierung zu aktivieren, sind sehr einfach.

So aktivieren Sie die Lizenzierung für die Komponente

  1. Wenden ein LicenseProviderAttribute auf die Klasse an.
  2. Rufen Sie im Konstruktor LicenseManager.Validate oder LicenseManager.IsValid auf.
  3. Rufen Sie im Finalizer der Klasse oder vor dem Aufruf des Finalizers Dispose für die gewährte Lizenz auf.

Das folgende Beispiel zeigt ein Windows Forms-Steuerelement, das eine einfache Lizenzierung implementiert.

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

Das folgende Beispiel zeigt ein ASP.NET-Serversteuerelement, das eine einfache Lizenzierung implementiert.

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

Die genannten Beispiele verwenden die integrierte Lizenzgeberklasse LicFileLicenseProvider, die die Verwendung von Textlizenzdateien ermöglicht und deren Verhalten dem der COM-Lizenzierung (ActiveX) entspricht. Für komplexere Lizenzierungsszenarien (wie dem Aufrufen eines XML-Webdienstes zum Begrenzen der Anzahl der Instanzen einer Komponente) sind andere Lizenzgeber erforderlich.

Ein Beispiel für die Lizenzierung finden Sie unter Schnelleinstieg zu Windows Forms unter "Erstellen von Anwendungen" —> "Erstellen von Steuerelementen" —> "Lizenzieren von Steuerelementen".

Siehe auch

Grundlagen der Komponentenprogrammierung