Sie können ArcGIS Server-Karten- und Image-Services (einschließlich Karten- und Image-Service-Erweiterungen wie Feature-Services) mit benutzerdefinierter Logik erweitern, die in ArcGIS-Clients ausgeführt werden kann. Es gibt zwei Möglichkeiten, diese Service-Typen zu erweitern.
- Serverobjekterweiterungen (SOEs) ermöglichen Ihnen die Erstellung von Service-Operationen, um die Basisfunktionalität von Karten- und Image-Services zu erweitern. SOEs sind geeignet, wenn Sie eine gut definierte Business-Logik ausführen müssen und dies mithilfe der ArcGIS-Client-APIs nur schwer umsetzen können. Die meisten SOEs verwenden dazu benutzerdefinierten Code, um mit räumlichen Daten und Karten zu arbeiten.
- Serverobjekt-Interceptoren (SOIs) ermöglichen Ihnen das Abfangen von Anforderungen für vorhandene integrierte Operationen von Karten- und Image-Services. Dadurch haben Sie die Möglichkeit, eine benutzerdefinierte Logik auszuführen und das Verhalten dieser Services zu ändern. So lassen sich vorhandene Operationen überschreiben und nahtlos in die Clients integrieren. Bei diesen Clients kann es sich um Anwendungen handeln, die mit ArcGIS API for JavaScript, ArcGIS Runtime SDK usw. erstellt wurden.
Was Sie zum Entwickeln einer Erweiterung wissen müssen
Zur Erweiterungsentwicklung sind Kenntnisse der ArcGIS-Entwicklungswerkzeuge mit Java oder den .NET-Programmiersprachen erforderlich. Außerdem ist ein Verständnis der REST- oder SOAP-Prinzipien erforderlich. Mit Java entwickelte Erweiterungen können in ArcGIS Server unter Windows und Linux bereitgestellt werden. Mit .NET entwickelte Erweiterungen können nur in ArcGIS Server unter Windows bereitgestellt werden.
Eine Erweiterung kann nur für einen bestimmten Servicetyp entwickelt werden – entweder für einen Kartenservice oder einen Image-Service. Sie können beispielsweise keine generische Erweiterung entwickeln, die sowohl mit einem Kartenservice als auch einem Image-Service funktioniert. In diesem Fall müssen Sie für jeden Servicetyp eine Erweiterung entwickeln, eine für Kartenservices und eine weitere für Image-Services.
SOEs und SOIs können mit Esri SDKs entwickelt werden. Jedes enthält Werkzeuge, Dokumentation und Beispiele für .NET und Java.
- Die ArcObjects SDKs (für .NET und für Java) können Sie verwenden, um Erweiterungen für Karten- und Image-Services (einschließlich Kartenservice-Erweiterungen, wie zum Beispiel Feature-Services), die aus ArcMap veröffentlicht werden, zu entwickeln. Wenn Sie mit diesen SDKs benutzerdefinierte Eigenschaftenseiten für Ihre Erweiterungen jenseits der automatisch generierten schreiben möchten, benötigen Sie Kenntnisse in der Entwicklung mit Windows Forms oder Java Swing (für ArcCatalog-Seiten) oder in der Entwicklung mit Web Forms mithilfe von HTML und JavaScript (für Manager-Seiten).
- Das ArcGIS Enterprise SDK können Sie verwenden, um Erweiterungen für Kartenservices (einschließlich Kartenservice-Erweiterungen, wie zum Beispiel Feature-Services), die aus ArcGIS Pro veröffentlicht werden, zu entwickeln. Wenn Sie mit diesem SDK benutzerdefinierte ArcGIS Server Manager-Eigenschaftenseiten für Ihre Erweiterungen jenseits der automatisch generierten schreiben möchten, benötigen Sie Kenntnisse in der Entwicklung mit Web Forms mithilfe von HTML und JavaScript.
Serverobjekterweiterungen
SOEs sind geeignet, wenn Sie Service-Operationen erstellen möchten, um die Basisfunktionalität von Karten- und Image-Services zu erweitern (einschließlich Karten- und Image-Service-Erweiterungen wie Feature-Services). Sie bieten die folgenden Vorteile:
- Sie können eine SOE als REST- oder SOAP-Web-Service bereitstellen, sodass benutzerdefinierte Clients auf die ArcGIS-Client-APIs aufsetzen und andere REST- oder SOAP-Clients sie leicht aufrufen können. In der Tat werden die REST-SOEs im ArcGIS-Server-Services-Verzeichnis angezeigt und können die typischen Objekttypen bereitstellen, die die ArcGIS-Client-APIs verstehen, meistens im JSON-Format.
- Wenn Sie eine SOE erstellen, stellen Sie einfache Methoden bereit, die Arbeiten auf ArcGIS Server ausführen, anstatt eine große Anzahl von Aufrufen vom Client zum Server zu tätigen. SOEs kapseln die Business-Logik sehr effizient und bieten eine ideale Umgebung, um die Aufrufe schnell auszuführen.
Sie können z. B. eine SOE entwickeln, wenn Sie Funktionen bereitstellen möchten, die auf keine andere Weise verfügbar sind oder eine schnelle Ausführung erfordern. SOEs eignen sich für erfahrene Entwickler und erfordern Kenntnisse verschiedener Entwicklungsplattformen. Die ArcObjects SDKs for Java und Microsoft .NET Framework enthalten mehrere SOE-Beispiele, die Sie untersuchen können.
Wann eine SOE notwendig ist
SOEs erfordern Kenntnisse in der Web-Entwicklung, über ArcGIS-Entwicklungswerkzeuge und über Programmiersprachen wie Java oder eine .NET-basierte Sprache wie C#. Sie müssen außerdem einen Bereitstellungsprozess durchlaufen, um auf dem Server verfügbar gemacht zu werden. Bevor Sie eine Serverobjekterweiterung entwickeln, sollten Sie einige einfachere Alternativen erwägen.
Die einfachste Alternative zur Entwicklung einer SOE besteht wahrscheinlich darin, ein Geoverarbeitungsmodell, das die Business-Logik erfüllt, zu erstellen und als Service zu veröffentlichen. Sie können ModelBuilder verwenden, um die benötigten Werkzeuge interaktiv zu ziehen, abzulegen und zu verbinden, anstatt benutzerdefinierten Business-Logik-Code zu schreiben. Geoverarbeitungsservices ermöglichen die asynchrone Ausführung, sodass Sie einen Auftrag starten, dann zu etwas anderem wechseln und später zum Auftrag zurückkehren können, um die Ergebnisse zu überprüfen.
Ein Nachteil von Geoverarbeitungsservices ist, dass sie einen relativ großen Speicherbedarf haben und möglicherweise langsamer als SOEs ausgeführt werden. Wenn Sie einen Prozess nur wenige Male am Tag ausführen, sollte dies kein Problem sein. Wenn Sie einen Prozess allerdings häufig am Tag oder mit vielen Benutzern gleichzeitig ausführen, könnte es sinnvoll sein, die Zeit in die Erstellung einer SOE zu investieren.
Viele Entwickler haben in der Vergangenheit benutzerdefinierten Code für verschiedene Aufgaben geschrieben, die jetzt ohne ihn durchführbar sind. Eine ausführliche Diskussion der Möglichkeiten, sich den Herausforderungen des Web Mapping zu nähern, ohne Erweiterungen entwickeln zu müssen, finden Sie unter Alternativen zu Serverobjekterweiterungen.
Serverobjekt-Interceptoren
SOIs sind geeignet, wenn Sie das Verhalten vorhandener Karten- oder Image-Service-Operationen (einschließlich Karten- und Image-Service-Erweiterungen wie Feature-Service-Operationen) ändern möchten. Sie können beispielsweise das Verhalten einer Anforderung für eine Abfrage oder einen Kartenbildexport ändern.
Sie können auch SOIs entwickeln, wenn Sie benutzerdefinierte Business-Logik wie Sicherheits- oder Überwachungsanforderungen implementieren müssen, die vom Standard-Karten- oder -Image-Service nicht erfüllt werden.
- Überwachen und Protokollieren aller Anforderungen – Sie können zu Debugging-Zwecken eine Reihe von SOIs erstellen, die detaillierte Informationen zu eingehenden Anforderungen protokollieren, wie etwa vollständige Informationen zu den mit der Anforderung übergebenen Eingabeparametern und Anmeldeinformationen der Benutzer.
- Fügen Sie ein Wasserzeichen in alle Kartenbilder ein, die vom Server erstellt wurden – Eine Reihe von SOIs kann erstellt werden, um Kartenbilder, die vom Server erstellt wurden, mit einem benutzerdefinierten Wasserzeichen zu überlagern. Dadurch können Organisationen oder Hostingunternehmen das ordnungsgemäße Branding auf allen Bildern sicherstellen.
- Nachbearbeitung von Antworten: Zusätzliche Informationen aus getrennten Business-Systemen, die nicht von ArcGIS Server unterstützt werden, können zu ausgehenden Antworten hinzugefügt werden, um räumliche Daten mit anderen Typen von Business Intelligence-Daten zu verbinden.
- Zugriffssteuerung auf Operationsebene für Kartenservices: ArcGIS Server unterstützt lediglich die Aktivierung von Service-Operationen für alle Benutzer des Service oder die vollständige Deaktivierung des Zugriffs. Eine Reihe von SOIs kann eingehende Anforderungen basierend auf der Benutzerrolle filtern, um den Zugriff auf Operationsebene in den Service zu implementieren.
- Zugriffssteuerung auf Layer-Ebene für Kartenservices: ArcGIS Server unterstützt lediglich den Datenzugriff auf Service-Ebene; ein Benutzer hat entweder vollständigen Zugriff auf alle Service-Daten oder keinen Zugriff. Eine Reihe von SOIs kann implementiert werden, um den Zugriff auf bestimmte Layer oder sogar Daten in einem Layer basierend auf der Rolle des Benutzers zu filtern.
Um einen oder mehrere Tasks mit einer Reihe von Erweiterungen auszuführen, können Sie SOIs verwenden. Mehrere SOIs lassen sich für einen oder mehrere Services verketten. Die Liste der SOIs und die Reihenfolge, in der sie in der Kette ausgeführt werden, können jederzeit geändert werden.
Wann eine SOI notwendig ist
SOIs erfordern Kenntnisse in der Web-Entwicklung, über ArcGIS-Entwicklerwerkzeuge und über Programmiersprachen wie Java oder eine .NET-basierte Sprache wie C#. Sie müssen außerdem einen Bereitstellungsprozess durchlaufen, um auf dem Server verfügbar gemacht zu werden. Vor der Entwicklung eines SOI sollten Sie ermitteln, ob dies die Funktionalität ist, die Sie benötigen.
Wenn Sie Ihren Server mit neuen Funktionen erweitern möchten, sollten Sie eine SOE oder Geoverarbeitungsmodelle und -skripte in Betracht ziehen. SOIs sind dazu geeignet, vorhandenen ArcGIS Server-Operationen eine neue Business-Logik oder ein neues Verhalten so hinzuzufügen, dass sie für vorhandene Client-Anwendungen transparent sind.