Skip To Content

Codieren von Erweiterungen

Zur Erweiterung eines Karten- oder Image-Services (SOE oder SOI) wird normalerweise ein Code programmiert, der einige der erforderlichen Schnittstellen implementiert und die Geschäftslogik ausführt. Wenn Sie in Java arbeiten, können Sie damit beginnen, eine Erweiterung mithilfe des Maven-Archetyps von SOE oder SOI zu erstellen. Wenn Sie in .NET arbeiten, beginnen Sie in Visual Studio mit einem Vorlagenprojekt. Die Vorlagen stellen sicher, dass die Erweiterung die erforderlichen Schnittstellen implementiert und auf REST- oder SOAP-Web-Service-Aufrufe mithilfe von SOESupport reagieren kann.

Detaillierte Anweisungen zur Codierung von Erweiterungen finden Sie in der ArcGIS Enterprise SDK-Dokumentation.

Überlegungen zu Serverobjekt-Interceptoren

Beim Erstellen von Serverobjekt-Interceptoren (SOIs) müssen alle eingehenden Anforderungstypen auch dann behandelt werden, wenn der SOI nur zur Verbesserung einer oder mehrerer der vielen Operationen dienen soll, die mit Karten- und Image-Services verfügbar sind. In diesem Abschnitt werden die zu behandelnden Schnittstellen und die Methoden erläutert, deren Verfügbarkeit davon abhängt, ob Sie sicherheitsbezogene oder nicht sicherheitsbezogene Funktionen implementieren.

Abfangen von REST-, SOAP- und OGC-Service-Anforderungen

Karten- und Image-Services unterstützen drei Anforderungstypen:

  • REST-API-Anforderungen
  • SOAP-API-Anforderungen
  • OGC-Anforderungen

Damit ein SOI diese Anforderungen abfängt, müssen Sie die folgenden Schnittstellen implementieren:

  • IRESTRequestHandler: Zum Behandeln von REST-API-Anforderungen
  • IRequestHandler zum Behandeln von SOAP-API-Anforderungen, einschließlich der Anforderungen von ArcGIS Pro
  • IWebRequestHandler: Zum Behandeln von OGC-Anforderungen

Auch wenn eine bestimmte Service-Konfiguration OGC-Anforderungen nicht unterstützt, müssen Sie alle der oben aufgeführten Schnittstellen verarbeiten. Je nach Geschäftslogik, die Sie implementieren, können Sie zwei allgemeine Ansätze nutzen.

Hinweis:

Wenn ein Karten- oder ein Image-Service gecachte Kacheln enthält, können Anforderungen an diese Kacheln nicht abgefangen werden.

Wenn Sie einen SOI implementieren, der Sicherheitsfunktionen ausführt, empfiehlt es sich, zunächst alle oben aufgeführten Schnittstellen zu implementieren und alle Anforderungen zu blockieren. Wenn Sie Ihren benutzerdefinierten Code implementieren, können Sie den Zugriff logisch über die Schnittstellen oben gewähren. Wenn Sie eingehende Anforderungen nicht zuerst blockieren und dann den Zugriff wie gewünscht erlauben, gehen Sie ungewollt ein höheres Sicherheitsrisiko ein.

Wenn Sie keine Sicherheitsfunktionen implementieren, können Sie die drei Schnittstellen implementieren, indem Sie alle Anforderungen über die zugrunde liegende Standardimplementierung übergeben, um normale Funktionen zu erlauben. Fügen Sie anschließend Geschäftslogik zu den Operationen hinzu, die Sie verbessern möchten.

Wenn ein Service mit einem SOI konfiguriert wird, werden alle Service-Anforderungen vom Server-Framework an den SOI weitergeleitet. Der SOI ist dafür zuständig, die Anforderungen zu filtern, die Anforderung an die Karten- oder Image-Service-Objekte (falls zutreffend) zu delegieren und anschließend optional die Antworten zu verarbeiten, bevor sie an den Client zurückgesendet werden.

Implementieren von Zugriffssteuerung auf Layer-Ebene

Wenn Sie Zugriffssteuerung auf Layer-Ebene über einen SOI implementieren, müssen Sie den REST-Handler von ArcGIS GIS Server konfigurieren, um das Caching alle Layer-Ressourcen im Service zu deaktivieren. Dadurch können Sie Operationen abfangen und Layer herausfiltern, die nicht zulässig sind. Dies kann deaktiviert werden, indem Sie die Eigenschaft disableCaching des Service im ArcGIS GIS Server-Administratorverzeichnis auf true festlegen.

  1. Öffnen Sie das ArcGIS GIS Server-Administratorverzeichnis, und melden Sie sich an. Die URL hat oft das Format https://gisserver.domain.com:6443/arcgis/admin.
  2. Klicken Sie auf Services und auf den Namen des gewünschten Service. Wenn er nicht in der Liste angezeigt wird, befindet er sich möglicherweise in einem Ordner in diesem Verzeichnis.
  3. Klicken Sie auf Bearbeiten.
  4. Fügen Sie im Abschnitt properties des Service-JSON die Eigenschaft disableCaching hinzu, und legen Sie deren Wert auf true fest, z. B.:
    "properties": {
      ...
      "disableCaching": "true",
      ...
     },
  5. Klicken Sie auf Änderungen speichern.

Erstellen einer SOE-Datei

Erweiterungen (SOEs oder SOIs) werden in einer .soe-Datei gekapselt. Die SOE-Datei (.soe) enthält alle Informationen, die zum Registrieren der Erweiterung bei ArcGIS GIS Server erforderlich sind. Bei der Verwendung von .NET wird die .soe-Datei erstellt, wenn Sie das Projekt erstellen. Wenn Sie Java verwenden, erstellen Sie die .soe-Datei, indem Sie das SOE- oder SOI-Maven-Projekt erstellen. Die .soe-Datei kann auch mit dem Befehl mvn install erstellt werden, der manuell ausgeführt oder in automatisierte Build-Skripte integriert werden kann.

Bei Erweiterungen, die mit dem ArcGIS Enterprise SDK entwickelt werden, wird das Suffix _ent an den Namen der SOE-Datei (.soe) angehängt. Beispiel: Bei einer Erweiterung mit dem Namen SimpleRESTSOE erhält die Ausgabedatei den Namen SimpleRESTSOE_ent.soe.