Zum Inhalt springen

Anleitung

Anwendung ausliefern

Eine Clientanwendung ausliefern: Dateien und Abhängigkeiten, Netzwerk, eigenes Anwendungszertifikat, XML-Konfiguration und Lizenzierung.

Anleitung

Anwendung ausliefern ​

So bereiten Sie Ihre OPC-UA-Clientanwendung für den Produktivbetrieb vor.

Dateien mitliefern ​

Das OPC UA .NET SDK besteht je Zielframework aus einer einzigen Assembly. Der OPC UA Stack und die weiteren Bibliotheken des SDK sind darin enthalten. Welche Zielframeworks es gibt, nennt die Seite Voraussetzungen. Eine Installation oder Registrierung des SDK auf dem Zielrechner ist nicht nötig.

Je nach Zielframework hängt das Paket von weiteren NuGet-Paketen ab, zum Beispiel von Newtonsoft.Json und BouncyCastle.Cryptography. Ab Version 2.59 ersetzt BouncyCastle.Cryptography (Version 2.7.0) das Paket Portable.BouncyCastle. Wenn Ihre Anwendung die Assemblies selbst verteilt, liefern Sie deshalb BouncyCastle.Cryptography.dll statt BouncyCastle.Crypto.dll aus. Die vollständige Liste je Zielframework steht auf der Paketseite bei nuget.org (Opc.UaFx.Client, Opc.UaFx.Advanced). Diese Pakete gehören zur Anwendung: dotnet publish und das Build-Verzeichnis enthalten sie automatisch. Liefern Sie deshalb das vollständige Ausgabeverzeichnis aus, nicht nur Ihre eigene Assembly und die des SDK.

Die Zertifikatspeicher legt das SDK standardmäßig als Verzeichnisse unter dem Pfad der Anwendung an (Ordner CertificateStores, siehe Anwendungszertifikat).

Nur unter Windows verfügbar sind:

  • OPC Classic: Der Zugriff auf OPC Classic Server über COM und DCOM setzt das Paket Opc.UaFx.Advanced und die auf dem Zielrechner installierte OPC Classic Runtime voraus (siehe OPC Classic).
  • Zertifikatspeicher von Windows: Das SDK verwendet sie nur, wenn der Pfad eines Zertifikatspeichers mit CurrentUser\ oder LocalMachine\ beginnt.

Netzwerk freigeben ​

Der Client baut die Verbindung zum Server selbst auf. Geben Sie deshalb in der Firewall des Zielrechners und im Netzwerk die ausgehende Verbindung zum Port des Serverendpunkts frei, also zum Port in der Adresse des Servers (zum Beispiel 4840 in opc.tcp://localhost:4840). Für entfernte OPC Classic Server gelten die Einstellungen für DCOM (siehe Entfernte Server und DCOM-Sicherheit).

Eigenes Anwendungszertifikat verwenden ​

Verwenden Sie im Produktivbetrieb kein Zertifikat, das das SDK automatisch erzeugt.

Wenn Sie bereits ein passendes Zertifikat haben, laden Sie Ihr PFX-basiertes Zertifikat über den OpcCertificateManager aus einem beliebigen Speicherort und weisen es der Clientinstanz zu:

csharp
var certificate = OpcCertificateManager.LoadCertificate("MyClientCertificate.pfx");
client.Certificate = certificate;
vbnet
Dim certificate = OpcCertificateManager.LoadCertificate("MyClientCertificate.pfx")
client.Certificate = certificate

Der Name der Anwendung muss im Zertifikat als „Common Name“ (CN) enthalten sein. Er muss mit dem Wert des Attributs AssemblyTitle der Anwendung übereinstimmen:

csharp
[assembly: AssemblyTitle("<Common Name (CN) in Certificate>")]
vbnet
<Assembly: AssemblyTitle("<Common Name (CN) in Certificate>")>

Wenn das nicht der Fall ist, legen Sie den im Zertifikat verwendeten Namen über die Eigenschaft ApplicationName der Clientinstanz fest. Wenn Sie das Zertifikat wie oben direkt über die Eigenschaft Certificate zuweisen, entfällt die Suche anhand des Namens:

csharp
client.ApplicationName = "<Common Name (CN) in Certificate>";
vbnet
client.ApplicationName = "<Common Name (CN) in Certificate>"

Die Eigenschaft ApplicationUri müssen Sie dabei nicht festlegen. Der Client übernimmt den Wert beim Verbindungsaufbau aus dem Subject Alternative Name des Zertifikats.

Wenn Sie noch kein passendes Zertifikat haben, das Sie als Anwendungszertifikat für Ihren Client verwenden können, erzeugen Sie zumindest ein selbstsigniertes (engl. self-signed) Zertifikat. Liefern Sie es mit der Anwendung aus und laden Sie es wie oben gezeigt. Das Zertifikat erzeugen Sie über die Klasse OpcCertificateManager. Die Eigenschaften des Zertifikats legen Sie über eine Instanz der Klasse OpcCertificateSettings fest. Dazu gehören zum Beispiel der Name der Anwendung, die ApplicationUri, die Gültigkeit in Monaten oder die Namen der Domänen, in denen der Client eingesetzt wird:

csharp
// The lifetime is specified in months, the default is 600.
var settings = new OpcCertificateSettings("MyClientAppName") {
    ApplicationUri = new Uri("urn:localhost:MyClientAppName"),
    Lifetime = 60
};
 
settings.DomainNames.Add("localhost");
 
var certificate = OpcCertificateManager.CreateCertificate(settings);
OpcCertificateManager.SaveCertificate("MyClientCertificate.pfx", certificate);
vbnet
'The lifetime is specified in months, the default is 600.
Dim settings = New OpcCertificateSettings("MyClientAppName") With { _
    .ApplicationUri = New Uri("urn:localhost:MyClientAppName"), _
    .Lifetime = 60 _
}

settings.DomainNames.Add("localhost")

Dim certificate = OpcCertificateManager.CreateCertificate(settings)
OpcCertificateManager.SaveCertificate("MyClientCertificate.pfx", certificate)

Verwenden Sie als Namen der Anwendung den Wert des Attributs AssemblyTitle, oder legen Sie denselben Wert über die Eigenschaft ApplicationName der Clientinstanz fest. Wenn der Client das Zertifikat nicht direkt laden, sondern aus dem Speicher für Anwendungszertifikate verwenden soll, speichern Sie es im ApplicationStore. Das ist standardmäßig der Ordner CertificateStores\App neben der Anwendung, siehe Anwendungszertifikat.

Dateien der XML-Konfiguration mitliefern ​

Wenn Sie die Anwendung über eine XML-Datei konfigurieren, liefern Sie diese Datei mit der Anwendung aus. Die Datei muss für die Anwendung erreichbar sein:

  • Wenn die Anwendung die Konfiguration über LoadClientConfigFile lädt, muss die Datei unter dem dort angegebenen Pfad liegen.
  • Wenn die Anwendung die Konfiguration über LoadClientConfig lädt, muss die Datei <Name>.Config.xml (zum Beispiel Opc.UaFx.Client.Config.xml) im Arbeitsverzeichnis der Anwendung liegen. Das Arbeitsverzeichnis ist nicht unbedingt das Verzeichnis der Anwendung, etwa wenn die Anwendung als Dienst läuft.

Der Client wertet die App.config der Anwendung für seine Konfiguration nicht aus (siehe Konfiguration per XML-Datei).

Unter UWP ausliefern ​

Unter UWP (Universal Windows Platform) gelten für Anwendungen strenge Vorgaben, ähnlich wie bei Mobilanwendungen. Damit die UWP-App über OPC UA als Clientanwendung arbeiten kann, stellen Sie im Projekt die folgenden Fähigkeiten (engl. Capabilities) ein:

  • internetClient
  • privateNetworkClientServer

Das zusätzlich benötigte Anwendungszertifikat kann das OPC UA .NET SDK unter UWP nicht automatisch erstellen. Erstellen Sie das Anwendungszertifikat deshalb manuell außerhalb der UWP-Anwendung. Sie können es dann als Teil der Assets der Anwendung ausliefern und von dort laden. Wie ein UWP-Projekt aufgebaut sein kann, zeigt das Beispiel OPC UA .NET Samples: UWP Client.

Lizenz eintragen ​

Tragen Sie den Lizenzschlüssel in der Anwendung ein, bevor Sie die Clientanwendung ausliefern. Sonst läuft sie je Anwendungsstart nur 30 Minuten. Wie Sie den Schlüssel eintragen, die verwendete Lizenz abfragen und die Lizenz beim Start prüfen, beschreibt die Seite Lizenz einrichten.