extending arcgis for server akshay maloo shreyas shinde with rüdiger gartmann from conterra

35
Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from con•terra

Upload: cathleen-hillary-summers

Post on 12-Jan-2016

238 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Extending ArcGIS for ServerAkshay Maloo

Shreyas Shinde

with Rüdiger Gartmann from con•terra

Page 2: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Agenda

Introduction

Server Object Extensions

Server Object Interceptors

Page 3: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Introduction

THE BIG WEBGIS PICTURE

Page 4: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Desktop Web Device

GIS Servers

Portal

APPS

SERVICES

DATA

SHARING

APIAPI

Page 5: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Desktop Web Device

GIS Servers

Portal

CREATECREATE

CUSTOMIZECUSTOMIZE

EXTENDEXTEND

APIAPI

Page 6: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Desktop Web Device

GIS Servers

Portal

CLIENT-SIDECLIENT-SIDE

SERVER-SIDESERVER-SIDE

WEB & MOBILEAPPLICATIONSWEB & MOBILEAPPLICATIONS

TEMPLATES &WIDGETS

TEMPLATES &WIDGETS

Page 7: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra
Page 8: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Desktop Web Device

GIS Servers

Portal

CLIENT-SIDECLIENT-SIDE

SERVER-SIDESERVER-SIDE

WEB & MOBILEAPPLICATIONSWEB & MOBILEAPPLICATIONS

TEMPLATES &WIDGETS

TEMPLATES &WIDGETS

Page 9: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Desktop Web Device

GIS Servers

Portal

CLIENT-SIDECLIENT-SIDE

SERVER-SIDESERVER-SIDEGP TOOLS, SOE & SOIGP TOOLS, SOE & SOI

Page 10: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Other sessions presenting client-side extensions

And many more…

• ArcGIS Runtime• Developing Cross Platform Apps with the ArcGIS Runtime SDK for Qt• Developing iOS and Mac Apps with the ArcGIS Runtime SDK• AppStudio for ArcGIS

• Web AppBuilder• Introduction to the Web AppBuilder for ArcGIS: JavaScript apps made easy

• Templates• Getting the most out of ArcGIS Web App Templates• Customizing and extending ArcGIS Web App Templates

Page 11: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Tools, SOE and SOI

Extending GIS services

Page 12: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Why extend GIS services?

Extensions run inside the server framework Security Scalability HA

Custom business logic Push round-trip heavy logic to server-side

Full access to Esri’s GIS component library (arcobjects) to implement core GIS functionality

Page 13: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Server Object

Interceptors

Server Object Extensions

Geo-processing

Tools

EXTEND EXISTINGSERVICES

EXTEND EXISTINGSERVICES

ADD NEW GIS CAPABILITIESADD NEW GIS CAPABILITIES

ANALYSIS or DATA

MANAGEMENT

ANALYSIS or DATA

MANAGEMENT

Extension types

Page 14: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Geoprocessing tools

Analysis Data management

Back office jobs .NET, Java, Python IDE integration Asynchronous, scalable

framework

Page 15: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Adds NEW GIS capability to server

Server Object Extensions

Page 16: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Server object extension (SOE) – internals

GIS ServerGIS Server

APPSMap ServicesMap Services

Image ServicesImage Services

SOESOE

SOESOE

CUSTOMAPPS

CUSTOMAPPS

Server Object Extensions - New APIs for your custom apps

Well defined APINew API

Page 17: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

SOE – use cases

Advanced editing Advanced symbology and rendering Data extraction Advanced raster functions Raster management

Great way to reduce round-trips in your client apps!

Page 18: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Process of extending GIS services

IDE

IMPLEMENT INTERFACES

PACKAGE

DEPLOY

TEST

DEBUG Coding up your business logicCoding up your business logic

ArcGIS for Server SDKArcGIS for Server SDK

Page 19: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Developing an SOE

.NET or Java (Java 7) Implement

IServerObjectExtension IRESTRequestHandler or IRequestHandler (Soap/binary)

Package the implementation (.soe) Zip file Esri-provided tooling generated Contains assemblies or jars Some metadata

Deploy to GIS Server through Manager application Enable SOE for a service

SDK contains base classes that already implement these interfaces for you!

Page 20: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

SOE – interfaces to implement

Name Functions Purpose

IServerObjectExtension

init(…)shutdown()

Initialization of SOECleanup

IRESTRequestHandler getSchema()

handleRESTRequest(…)

Define the API as resources and operationsHandle all REST resources and operation requests

IRequestHandler2 handleStringRequest(…)handleBinaryRequest(…)

Handle SOAP requestsHandle “binary” requests from ArcMap

TIP: This should execute very quickly!

TIP: This should execute very quickly!

Most server object extensions are REST API based!Most server object extensions are REST API based!

Page 21: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

SOE – tips and best practices…

Always start with the template in your IDE Boiler-plate code

Easier to implement REST API Services directory view is auto-generated

Custom property configuration pages

Follow the debugging guide in server help

Page 22: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

New at 10.3.1Extends EXISTING capabilities

Server Object Interceptors

Page 23: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Server object interceptors (SOI) – internals

GIS ServerGIS Server

APPSMap ServicesMap Services

Image ServicesImage Services

SOISOI

Existing applications continue to work!

SOISOI

Well defined API

Page 24: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

SOI – execution model

GIS ServerGIS Server

APIHANDLER

APIHANDLER

ARCSOCARCSOC

MAPSERVICE

MAPSERVICESOISOI

APPS

EXTERNALRULE DATABASE

EXTERNALRULE DATABASE

Intercepts requests and responses!Intercepts requests and responses!

Page 25: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

SOI – use cases

Advanced securityCall into external systems

Enforce business rulesAdd quality assurance

Trigger back-office workflows upon receiving updates

Custom filtering logic for existing apps!

Page 26: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Developing an SOI

Decide on interceptors for Map or Image services .NET or Java (Java 7) Implement

IServerObjectExtension IRESTRequestHandler IRequestHandler IWebRequestHandler

Package the implementation (.soe)Deploy to GIS Server through Manager applicationEnable SOI for a service

SDK contains base classes that already implement these interfaces for you!

Page 27: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

SOI – interfaces

Interfaces for extensions and interceptors are the same but behavior/logic would have to be different!Interfaces for extensions and interceptors are the same but behavior/logic would have to be different!

Name Functions Purpose

IServerObjectExtension

init(…)shutdown()

Initialization of SOECleanup

IRESTRequestHandler getSchema()

handleRESTRequest(…)

Define the API as resources and operationsHandle all REST resources and operation requests

IRequestHandler2 handleStringRequest(…)handleBinaryRequest(…)

Handle SOAP requestsHandle “binary” requests from ArcMap

IWebRequestHandler handleStringWebRequest(…)

Handle OGC requests

Page 28: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

SOI – tips and best practices…

Always start with the template in your IDE Boiler-plate code Default delegation based behavior

Utility functions

API cannot be changed For security interceptors:

Block all operations firstIteratively allow operations and resources

Does not intercept tiled map services and hosted feature services

Page 29: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

DEMOsFrom simple to smart…Akshay MalooRüdiger Gartmann

Page 30: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

SOI chaining (in the next release)

Chain multiple SOIs together Allows for in-house and third party interceptors SOIs can be repeated

Particularly useful for security specific SOIs

Page 31: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

SOI chaining – execution model

GIS ServerGIS Server

APIHANDLER

APIHANDLER

ARCSOCARCSOC

MAPSERVICE

MAPSERVICE

SOI2

SOI2

APPS

EXTERNALDATABASEEXTERNALDATABASE

SOI1

SOI1

EXTERNALRULE DATABASE

EXTERNALRULE DATABASE

Page 32: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

DEMOsSOI ChainingAkshay Maloo

Page 33: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

In summary…

Server Object Interceptors New at 10.3.1 Change the behavior of existing GIS services

Server Object Extensions Add new GIS functionality (API)

Page 34: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra

Please fill out the session surveys

Thank you

Page 35: Extending ArcGIS for Server Akshay Maloo Shreyas Shinde with Rüdiger Gartmann from conterra