Technik:API-Gateway
| Hinweis Bis CoP 11 Release 1 2026. Ab CoP 11 Release 1 2026.gibt es das Report-Gateway um mehrere Reportserver pro CoPlanner Server zu verwenden. |
Über das API-Gateway kann z.B. ein CopServer mit zwei Reportservern betrieben werden, auf die mehrere Benutzer gleichmäßig aufgeteilt werden.
Einrichtung
1.) Rest.Client-Ordner aus dem Serververzeichnis in das ApiGateway-Verzeichnis kopieren. 2.) In ApiGateway-Ordner in der Datei appsettings.json die Hosting-URL bzw. den Port festlegen (siehe Konfigurationsdateien) 3.) In ApiGateway-Ordner in der Datei ocelot.json werden die Routen für die dahinterliegenden Services definiert. Dabei sind die Standardrouten, welche angepasst werden müssen:
- https://localhost:4443/coplanner für den Coplanner Server
- https://localhost:4444/coplanner für ReportServer 1 und
- https://localhost:4445/coplanner für ReportServer 2.
Sollten diese unter anderen Ports betrieben werden, sind entsprechend Anpassungen notwendig.
Zwei ReportServer kann man anlegen, indem der ReportServer-Ordner kopiert und mit einer angepassten Konfiguration gestartet wird.
Die Clients sollten sich dann direkt auf die URL des API-Gateways verbinden und nicht direkt auf den Server.
Die Cop.ApiGateway.exe kann direkt gestartet werden mit Doppelklick oder mittels Konsole. Dann läuft sie als Konsolenapp. Sie kann aber auch als Windowsservice mit
sc create <gewünschter Servicename> binPath=<Vollständiger Pfad zur EXE>"
registriert werden und dann über die Windows-Serviceverwaltung verwaltet werden. Alternativ können weitere Parameter direkt beim Anlegen des Service definiert werden - welche es gibt finden Sie in der Microsoft-Dokumentation zu sc create.
Konfigurationsdateien
appsettings.json
WebConfig
- JwtBearerIssuer: sollte nicht geändert werden
- JwtBearerIssuerKey: sollte nicht geändert werden
- PathBase: Sofern für den Aufruf des Gateways eine Erweiterung hinter dem Port notwendig ist, kann diese hier angegeben werden. Will man also z.B. nicht über https://servername.coplanner.com:4446 zugreifen, sondern über https://servername.coplanner.com:4446/coplanner, muss hier /coplanner angegeben werden
Kestrel
- Endpoints: Hier wird definiert, wie auf das Service zugegriffen wird und, sofern https verwendet wird, welches Zertifikat genutzt werden soll.
Beispiele:
Verwendung bei nur http:
"Http": {
"Url": "http://+:4448"
}Verwendung, wenn das Zertifikat in einem Verzeichnis abgelegt wird (muss nicht installiert werden):
"HttpsInlineCertFile": {
"Url": "https://+:4448",
"Certificate": {
"Path": "./MeinZertifikat.pfx",
"Password": "MeinPasswort"
}
}Verwendung, wenn das Zertifikat in einem Zertifikatsspeicher liegt:
"HttpsInlineCertStore": {
"Url": "https://+:4448",
"Certificate": {
"Subject": "myservername.coplanner.com",
"Store": "Root",
"Location": "LocalMachine",
"AllowInvalid": "false"
}
}ocelot.json
Hier werden die Routen angepasst.
- DownstreamScheme: Gibt an, ob per http oder https zugegriffen wird.
- DownstreamPathTemplate: Hier wird definiert, wie die URL hinter <DownstreamScheme>://<Host>:<Port> weitergeht. In der Standardkonfiguration wird davon ausgegangen, dass die WebAppUrl des Servers <nowiki>https://localhost:4443/coplanner ist. Ist das /coplanner in der WebAppUrl nicht verwendet, so muss es hier aus den DownStreamPathTemplate entfernt werden.
- Host: Hostname unter dem das Service erreichbar ist.
- Port: Port unter dem das Service erreichbar ist.
z.B.:
"DownstreamPathTemplate": "/coplanner/api/v1.0/commands/{url}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "servername.coplanner.com",
"Port": 4443
}
]
Gibt es Routen, wie den Reportserver, bei dem mehr als eine Instanz betrieben werden soll, wird das folgendermaßen angegeben:
// reports
{
"DownstreamPathTemplate": "/coplanner/api/v1.0/reports/{everything}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "servername.coplanner.com",
"Port": 4444
},
{
"Host": "servername.coplanner.com",
"Port": 4445
}
],NLog.Server.config bzw. NLog.Service.config
Prinzipiell kann hier mehr angepasst werden, aber die grundlegenden Eigenschaften:
- logDirectory: Verzeichnis ohne den Dateinamen, wo hingeloggt werden soll.
- fileName: Hier kann man den Dateinamen anpassen oder wenn man möchte auch den gesamten Pfad.
- archiveAboveSize: Gibt an, ab welcher Dateigröße eine neue Datei geschrieben wird. Der Standard von 10000000 entspricht 10 MB.
SvrConfig.xml
Wenn mehrere Reportserver vorhanden sind, dann wird die ReportServerUrl hier nicht angegeben.