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 Maps SDK for JavaScript, ArcGIS Runtime SDK usw. erstellt wurden.
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 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 eine SOE entwickeln, wenn Sie Funktionen bereitstellen möchten, die auf keine andere Weise verfügbar sind oder eine schnelle Ausführung erfordern.
Überlegungen vor dem Entwickeln einer SOE
SOEs erfordern Kenntnisse in der Web-Entwicklung, über ArcGIS-Entwicklungswerkzeuge und über Programmiersprachen wie Java oder eine .NET-basierte Sprache wie C#. Eine mit Java entwickelte SOE kann in ArcGIS Server unter Windows und Linux bereitgestellt werden, während eine mit .NET entwickelte SOE nur in ArcGIS Server unter Windows bereitgestellt werden kann.
SOEs können mit ArcGIS Enterprise SDK entwickelt werden. 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.
Eine SOE kann nur für einen bestimmten Servicetyp entwickelt werden – entweder für einen Kartenservice oder einen Image-Service. Sie können beispielsweise keine generische SOE entwickeln, die sowohl mit einem Kartenservice als auch einem Image-Service funktioniert. In diesem Fall müssen Sie einzelne SOEs für jeden Service-Typ entwickeln, eine für einen Kartenservice und die andere für einen Image-Service.
Bevor Sie eine SOE entwickeln, können Sie einige Alternativen erwägen. Eine Alternative zur Entwicklung einer SOE besteht 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. Beispiele:
- Ü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.
Überlegungen vor dem Entwickeln eines SOI
SOIs erfordern Kenntnisse in der Web-Entwicklung, über ArcGIS-Entwicklerwerkzeuge und über Programmiersprachen wie Java oder eine .NET-basierte Sprache wie C#. Ein mit Java entwickelter SOI kann in ArcGIS Server unter Windows und Linux bereitgestellt werden, während ein mit .NET entwickelter SOI nur in ArcGIS Server unter Windows bereitgestellt werden kann.
SOIs können mit ArcGIS Enterprise SDK entwickelt werden. 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.
Ein SOI kann nur für einen bestimmten Servicetyp entwickelt werden – entweder für einen Kartenservice oder einen Image-Service. Sie können beispielsweise keinen generischen SOI entwickeln, der sowohl mit einem Kartenservice als auch einem Image-Service funktioniert. In diesem Fall müssen Sie einzelne SOIs für jeden Service-Typ entwickeln, einen für einen Kartenservice und den anderen für einen Image-Service.
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.