Eigene Objekte und Funktionen für den Web Designer

Erweiterbarkeit ist eine wichtige Größe im List & Label-Universum. Sie können dem Designer eigene Funktionen und Objekte hinzufügen, um komplexe Berechnungen innerhalb Ihres Codes oder benutzerdefinierter Objekte zu ermöglichen. Allerdings fehlte bisher ein wichtiger Aspekt – all dieser Code läuft nur auf dem Desktop. Wenn Ihre Anwendung auf einem Server läuft und Sie den Web Designer verwenden, haben Sie ein Problem – bis Version 24.

Nun gibt es die Möglichkeit, Ihre benutzerdefinierten Designer-Objekte und -Funktionen zu List & Label auf dem Server hinzuzufügen und anschließend im Web Designer oder Report Server Designer auf einem Client zu verwenden.

Web Designer
Um Ihre DesignerObjects- und DesignerFunctions-Instanzen dem Web Designer hinzuzufügen, müssen Sie Informationen über die Erweiterungsbibliotheken und deren Klassen zur Konfiguration der Webanwendung auf dem Server hinzufügen. Die Klasse WebDesignerOptions hat hierfür eine neue Eigenschaft ExtensionAssemblies. Ein einfaches Beispiel würde wie folgt aussehen. Das Beispiel geht von einem Ordner namens „extensions“ im Hauptverzeichnis der Webanwendung aus, der die zu ladenden Assemblys enthält.

string dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "extensions");

options.ExtensionAssemblies.Add(new combit.ListLabel24.Web.WebDesigner.WebDesignerExtension()
{
AssemblyName = "[YourExtensionAssemblyName].dll",
ExtensionDirectory = dllPath,
Dependencies = new List<string> { "[YourFirstExtensionAssemblyDependencyName].dll", "[YourSecondExtensionAssemblyDependencyName].dll", [...] },
ExtensionClasses = new System.Collections.Generic.List<combit.ListLabel24.Web.WebDesigner.WebDesignerExtensionClass>(){
new combit.ListLabel24.Web.WebDesigner.WebDesignerExtensionClass(){
ClassName = "YourExtensionClassName", // this class should be derived from the DesignerObject class
ExtensionType = combit.ListLabel24.Web.WebDesigner.WebDesignerExtensionType.DesignerObject
}
}
});

Report Server Designer
Um Ihre DesignerObjects- und DesignerFunctions-Instanzen dem Report Server Designer hinzuzufügen, müssen Sie Informationen über die Erweiterungsbibliotheken und deren Klassen der Datei privateSettings.config im WebUI-Ordner der Report Server-Anwendung auf dem Server hinzufügen. Ein einfaches Beispiel würde wie folgt aussehen. Das Beispiel geht von einem Ordner „C:Temp“ aus, der die zu ladenden Assemblys enthält. Der IIS-Anwendungspool-Benutzer muss Lesezugriff auf diesen Ordner haben.

<setting key="DesignerExtensions">
<DesignerExtensions>
<DesignerExtension Name="[YourExtensionAssemblyName].dll" Path="C:Temp">
<Dependency Name="[YourFirstExtensionAssemblyDependencyName].dll" />
<Dependency Name="[YourSecondExtensionAssemblyDependencyName].dll" />
[...]
<ExtensionClass ClassName="[YourExtensionClassName]" ExtensionType="DesignerObject"></ExtensionClass>
</DesignerExtension>
</DesignerExtensions>
</setting>

Laden der Erweiterungen
Wenn Sie diesen Code zur Konfiguration der Webanwendung oder der Report Server privateSettings.config Datei auf dem Server hinzufügen, versucht der Web Designer bzw. der Report Server Designer auf dem Client automatisch, die Assembly herunterzuladen und als neue Erweiterung zu laden. Jedes Mal, wenn eine neue Version der Assembly auf dem Server im gleichen Ordner verfügbar ist, erfährt der Kunde durch Neustart eines beliebigen Clients von der Änderung und lädt die neue Assembly automatisch erneut herunter. Wenn die Assembly auf dem Server unverändert bleibt und bereits heruntergeladen wurde, entsteht fast kein Netzwerkverkehr, da nur die Prüfsumme der Datei übertragen wird

Empfohlene Artikel

Schreibe einen Kommentar