Migrieren einer 10.0-.NET-Serverobjekterweiterung zu höheren Versionen
.NET-Serverobjekterweiterungen (SOEs), die Sie mit ArcGIS 10.1 erstellt haben, können in Version 10.2 oder höher verwendet werden. In Version 10.0 erstellte SOEs lassen sich jedoch schwieriger migrieren. In den restlichen Abschnitten dieses Themas wird erklärt, wie SOEs aus Version 10.0 und höheren Versionen migriert werden müssen, damit sie mit 10.1 funktionieren.
Wenn Sie eine .NET-Serverobjekterweiterung (SOE) der Version 10.0 migrieren möchten, müssen Sie den größten Teil des vorhandenen SOE-Codes in die Visual Studio-Vorlagen für REST- oder SOAP SOEs kopieren. Dies ist erforderlich, weil die Vorlagen die Paketlogik zum Erstellen einer SOE-Datei beinhalten. Diese Datei wurde in Version 10.1 eingeführt und ermöglicht Ihnen die Bereitstellung Ihrer SOE in ArcGIS for Server in einem Schritt. Die SOE-Datei wird erstellt, wenn Sie das Projekt erstellen.
Ein weiterer Vorteil der Vorlage besteht darin, dass bereits auf primäre Interop-Assemblys verwiesen wird, die mit der ArcObjects SDK ausgeliefert wird. Wenn für das Projekt andere Referenzen als die in der Vorlage enthaltenen erforderlich sind, müssen diese manuell hinzugefügt werden.
In Version 10.0 und früheren Versionen erstellte SOEs, die auf lokalen ArcGIS for Server-Verbindungen (DCOM) basieren, können in Version 10.1 und späteren Versionen nicht verwendet werden. Diese SOES sollten so umgewandelt werden, dass sie als REST- oder SOAP-Web-Services fungieren.
Zum Migrieren einer SOE aus Version 10.0 führen Sie die folgenden Schritte aus:
- Wenn die SOE zuvor auf Ihrem Computer registriert wurde, heben Sie die Registrierung mit einem Befehl wie beispielsweise regasm <path to DLL> /codebase /u auf.
- Öffnen Sie Visual Studio 2010, und klicken Sie auf Datei > Neu > Projektauf der Werkzeugleiste Präsentation.
- Erweitern Sie im Verzeichnis "Installierte Vorlagen" Visual C# > ArcGIS > Serverobjekterweiterungenauf der Werkzeugleiste Präsentation.
- Wählen Sie oben im Dialogfeld Neues Projekt den Eintrag .NET Framework 3.5 aus dem Dropdownmenü.
- Wählen Sie zwischen den REST- oder SOAP-Vorlagen aus, geben Sie einen Namen und einen Speicherort für die SOE und klicken Sie dann auf OK.
- Fügen Sie die für das Projekt erforderlichen Referenzen und Direktiven hinzu, die nicht bereits in der Vorlage enthalten sind.
- Ändern Sie im Vorlagencode die .NET-Attribut-ServerObjectExtension so, dass sie die Funktionen, die Beschreibung, den Anzeigenamen, die Eigenschaften und die unterstützten Web-Service-Architekturen für die SOE enthalten. Hierbei handelt es sich um die Arten von Werten, die im SOE-Registrierungscode von Versionen 10.0 und früher festgelegt wurden. Ein Beispiel für C# könnte so aussehen:
[ServerObjectExtension("MapServer", AllCapabilities = "GetCommonInfo;GetSecretInfo", DefaultCapabilities = "GetCommonInfo", Description = "An example SOE for the help system", DisplayName = "My Sample SOE", Properties = "PropertyA=500;PropertyB=Cities", SupportsREST = true, SupportsSOAP = false)]
Die oben genannte SOE verfügt über zwei Funktionen: GetCommonInfo and GetSecretInfo. Standardmäßig ist jedoch nur die Funktion GetCommonInfo aktiviert.
Entsprechend gibt es zwei Eigenschaften für diese SOE: Eigenschaft A mit dem Standardwert "500" und Eigenschaft B mit dem Standardwert "Cities". Alle Eigenschaften werden zunächst wie Zeichenfolgen behandelt.
- Kopieren Sie den gesamten Klassencode (jedoch nicht die Klassendeklaration) aus der SOE der Version 10.0 und ersetzen Sie den entsprechenden Code in der Vorlage. Der Standardklassencode ist mit dem Code von Version 10.0 identisch, SOEs aus Version 10.1 und höher stammen jedoch weder aus ServicedComponent noch erfordern sie einen Verweis auf System.EnterpriseServices. Sie sollten diese Elemente entfernen, wenn Sie einen vollständigen Kopieren- und Einfügen-Vorgang ausführen. Sie können die Vorlage und die Beispiele als Leitfaden verwenden.
Im folgenden Beispiel wird verdeutlicht, welche Elemente beim Migrieren einer REST-SOE im Code von Version 10.0 entfernt und ersetzt werden sollten.
public class MySampleSOE : IServerObjectExtension, IObjectConstruct, IRESTRequestHandler { // Delete template code and paste your // corresponding 10.0 code here. }
Wenn die SOE aus Version 10.1 und höher einen anderen Namen hat als die aus Version 10.0, müssen Sie den SOE-Namen im Konstruktor aktualisieren.
public MySampleSOE() { soe_name = this.GetType().Name; logger = new ServerLogger(); reqHandler = new SoeRestImpl(soe_name, CreateRestSchema()) as IRESTRequestHandler; }
- Speichern Sie die Lösung und erstellen Sie das Projekt. Wenn die Erstellung erfolgreich durchgeführt wurde, wird eine SOE-Datei im Verzeichnis "Bin" des Projekts erstellt.
- Stellen Sie die SOE anhand der Anweisungen unter Bereitstellen einer Erweiterung für ArcGIS for Server bereit.