Technik:API-Gateway
Verfügbar ab CoP 10 HF 2.2
Über das API-Gateway soll z.B. ein CopServer mit zwei Reportserver anbinden können.
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 Microsoftdokumentation 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 sein, kann diese hier angegeben werden. Will man also z.B. nicht über https://servername.coplanner.com:4446 zugreifen, sondern <nowiki>https://servername.coplanner.com:4446/coplanner, so muss hier /coplanner angegeben werden
Kestrel
- Endpoints: Hier wird definiert, wie auf das Service zugegriffen wird und sofern https verwendet wird, welches Zertifikat verwendet wird.
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 hier, 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 wir mehr als eine Instanz haben, 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.