moving desktop applications to arcgis server...migrating desktop applications: the challenge 1....

44
ESRI Developer Summit 2008 ESRI Developer Summit 2008 1 1 Kelly Hutchins Kelly Hutchins Jian Huang Jian Huang Moving Desktop Applications to Moving Desktop Applications to ArcGIS ArcGIS Server Server

Upload: others

Post on 06-Aug-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

ESRI Developer Summit 2008ESRI Developer Summit 2008 11

Kelly HutchinsKelly HutchinsJian HuangJian Huang

Moving Desktop Applications to Moving Desktop Applications to ArcGISArcGIS ServerServer

Page 2: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Schedule

• 75 minute session– 60 – 65 minute lecture– 10 – 15 minutes Q & A following the lecture

• Cell phones and pagers

• Please complete the session survey – we take your feedback very seriously!

Page 3: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Introductions

• Who are we?

• Who are you?– Development experience with ArcObjects– Development experience with .NET and ASP.NET – Basic understanding of ArcGIS Server

Page 4: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Questions

• How many:

– Want to migrate Desktop (VBA, VB, VC++, .NET) applications?

– Want to migrate Engine (VB, VC++, , .NET) applications?

– Already have ArcGIS Server development experience?

Page 5: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

TopicsTopics

•• ArcGISArcGIS Desktop customizationsDesktop customizations

•• How to migrate customizations to ServerHow to migrate customizations to Server

•• Best practices for migrating Best practices for migrating

ESRI Developer Summit 2008ESRI Developer Summit 2008 55

Page 6: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Types of ArcObjects applications and extensions

• ArcGIS Desktop – ArcObjects Extensions– ArcMap, ArcCatalog, ArcScene and ArcGlobe– Commands, tools, toolbars, windows, extensions– Mostly COM implementations (VB 6, VC++, .NET)

• ArcGIS Engine – ArcObjects Applications– Custom standalone forms-based and utility applications– Commands, tools, extensions (VB 6, VC++, Java, .NET)– COM or pure .NET implementations

• ArcObjects Components– Utility components and DLLs

Page 7: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating desktop applications: The challenge

1. ArcGIS Server is a multi-tiered, multi-API system2. ArcObjects code runs remotely on the GIS Server3. User interface is a web browser

Web services (SOAP)

ServerObject

Web application

Browser

Desktop

GIS serverGIS serverWeb serverWeb server

ServerObject

Web ADF (ASP.NET)Web ADF (ASP.NET) ArcObjects(COM)

ArcObjects(COM)

SOMSOM

SOCSOC

Page 8: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migration options

1. Migrate directly to ASP.NET2. Build Utility Object or Server Object Extension3. Geoprocessing4. Use the ArcGIS Server Web ADF

• Common data-source api• Data-source specific API

5. JavaScript API

Page 9: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Which ArcObjects components can be used?

• Most of the Engine libraries• UI libraries not available• Capabilities

– Display– Symbolization– Analysis– Query– Data access– Editing– Output

http://edndoc.esri.com/arcobjects/9.3/ComponentHelp/shared_libs.htm

Page 10: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

1. Web app communicates through ArcObjects proxies2. Accesses a Server Object through the SOM3. Works with ArcObjects in a Server Context (ArcSOC.exe)

Accessing ArcObjects remotely

Server ContextProxies Server Object

Page 11: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

• Move code from .NET windows application to ASP.NET• Create ArcObjects in a server context

• Use Library Locator to determine CLSID

Migrating ArcObjects code to ASP.NET

Dim pPoint as IPoint = New Point

Dim pPoint as IPoint = serverContext.CreateObject(“esriGeometry.Point”)

Page 12: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating ArcObjects code directly to ASP.NET

1. Build an ASP.NET web application

2. Copy/paste your ArcObjects code

3. Replace “New” with “CreateObject”

4. Manage objects in the server context

Page 13: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating ArcObjects code to a Utility Object

• Build a custom COM component to reduce the number of fine-grained ArcObjects calls

• Moves code to the GIS Server (SOC)

• When to use– Need to access a large ArcObjects

code base– Share code with other applications – Optimize performance

Page 14: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Creating a COM utility object

• General steps1.Create a new project (VB6, .NET, VC++)2.Reference the ESRI COM libraries or .NET assemblies3.Define a COM class4.Define a public interface or public members5.Migrate existing ArcObjects code6.Use CreateObject to create and access objects

• Required to register COM component on all SOC machines

Page 15: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating to a Server Object Extension

• Extends the capabilities of the Server Object • Initialized once during server object startup• Configurable in ArcCatalog through custom property

page.

Page 16: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

COM utility object versus server object extension

• COM utility objects– Initialized when required by the GIS server

• May happen several times– Not registered with a specific server object instance

• Created “ad-hoc” using the server context • Server object extensions

– Initialized once during server object startup– Can benefit from caching logic– Registered with specific server objects (Map Services)– Configurable in ArcCatalog through custom property page

A

Page 17: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Implementing a Server Object Extension (SOE)

1. Build a utility object2. Build a SOE object (IServerObjectExtension)3. (Optional) Build a custom property page for ArcCatalog4. Access SOE from web application

Page 18: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating – Geoprocessing Service

• Replace ArcObjects code with a Geoprocessing Service

• Build a model and return results to a web application

• When to use– Large processing tasks that

can be modeled

– Optimize ArcObjects tasksGP modelGP model

Page 19: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating – Geoprocessing Service

1. Build a Geoprocessing model

2. Publish the model through a Map and Geoprocessing service

3. Consume as a task in the Web Server application

Page 20: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Introducing the Web ADF

1. Web controls API1. Web controls API

3. 3. DatasourceDatasource Specific API Specific API

2. Common 2. Common DatasourceDatasource APIAPI

http://edndoc.esri.com/arcobjects/9.2/NET_Server_Doc/developer/ghttp://edndoc.esri.com/arcobjects/9.2/NET_Server_Doc/developer/getting_started.htmetting_started.htm

Replace ArcObjects functionality with the ADF

Page 21: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Web ADF – Development Paths

Web ControlsWeb Controls

Common Data Source APICommon Data Source API

Data Source Specific APIsData Source Specific APIs

GenericGeneric

ImplementationsImplementations

DeveloperPaths I II III IV

Page 22: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating the User Interface – Web Controls

• Visual Studio Map template

• WebControls– Pure ASP.NET controls– AJAX enabled

• Functionality– Visualization– User interaction

http://edndoc.esri.com/arcobjects/9.2/NET_Server_Doc/developer/Ahttp://edndoc.esri.com/arcobjects/9.2/NET_Server_Doc/developer/ADF/control_overview.htmDF/control_overview.htm

Page 23: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating the UI - Commands and Tools

1. Start with the Map template2. Add new item to Toolbar3. Specify client-side action4. Create a new class and

implement interface

5. Define server-side action

Tool IIMapServerToolAction

Command IMapServerCommandAction

DropDownBox IMapServerDropDownBoxAction

Page 24: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating the UI – Task Framework

• Tasks: Objects that encapsulatebusiness logic

• Out-of-the-box tasks– Search Attributes– Find Address– Editor Task– Print Task

• Container for displaying task results

Page 25: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

ArcGIS Server Web ADF – Development Paths

Web ControlsWeb Controls

Common Data Source APICommon Data Source API

Data Source Specific APIsData Source Specific APIs

GenericGeneric

ImplementationsImplementations

DeveloperPaths I II III IV

Page 26: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

The Common Datasource API

• ArcGIS Server supports multiple data sources– ArcGIS Server, ArcIMS, ArcWeb services, OGC, Graphics

• Common Datasource API– .NET classes for the Web ADF– Access and interact with all data sources the same way!

• Provides different functionalities - query, find, identity…

Common data source API

Page 27: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

The Common Datasource API

IMapTocFunctionality

IQueryFunctionality

Resource managers Web ADF controls

IGISDataSource IGISResource IGISFunctionality

IMapResource

IGeoprocessingResource

IGeocodeResource

IMapFunctionality

ITileFunctionality

IScalebarFunctionality

IGeocodeFunctionality

IGeoprocessingFunctionality

Common datasource API

Data sourceimplementations

ArcGISServer ArcIMS

Page 28: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Using the Common Datasource API

• Where possible, replace ArcObjects code

• Examples – Query, Identify, Find

• Steps1. Identify the ArcObjects code to be replaced2. Implement the Common API3. Reuse code to access other data sources

– Review SDK, code samples and OMDs…

Page 29: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

ArcGIS Server Web ADF – Development Paths

Web ControlsWeb Controls

Common Data Source APICommon Data Source API

Data Source Specific APIsData Source Specific APIs

GenericGeneric

ImplementationsImplementations

DeveloperPaths I II III IV

Page 30: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Data source-specific APIs

• Composed of data sources that have functionality beyond Common data source API– ArcGIS Server– ArcIMS– ArcWeb Services

Web ADF API

Data source-specific APIs

Common data source API

Page 31: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Programming with data source-specific APIs

• Each data source exposes a different set of functionality– ArcGIS Server

• SOAP, ArcObjects– ArcIMS – AXL– ArcWeb Services – SOAP API

• What does this mean?– Many other data source-

specific classes available– More business/GIS logic– Different APIs use different communication protocols– Requires different programming patterns for each data source

Web controlsWeb controlsWeb controls

Resource managers

Data sources

Functionalities

Data source-specific APIs

Resources

Page 32: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

The ArcGIS Server SOAP API

• Exposes a sub-set of ArObjects functionality• Composed of a number of value and proxy objects • Objects work with both Internet and local resources• Value objects

– Geometry, symbology, query filters, spatial reference…

• Proxy objects– Emulate functionality provided by coarse - grained server

objects (MapServer,GeocodeServer)

• See ESRI.ArcGIS.ADF.ArcGISServer

Page 33: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

What are Value and Proxy objects?

• Value objects: native .NET classes used to program against ArcGIS Server data sources

• Use proxies to communicate with server end points• Proxy objects perform two main tasks:

– Serializing Value objects to SOAP that is sent to resource– Deserializing SOAP responses to Value objects for client

Value objectColor object

Polygon object

Web ServiceProxy

Web Application

SOM/SOC

Web Serviceend point

Server object(end point)DCOM

Proxy

Web server

objectRgbColor

Polygon

IRequestHandler

Page 34: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Publish a resource as a service

Service What it doesGeocoding Address locator

Geodata Query, Extraction and Replication

Geometry Perform geometric calculations such as project and densify

Geoprocessing Access to geoprocessing models

Network Analysis

Solves transportation NA problems

Mapping Map viewing and access to contents of map

http://localhost/ArcGIS/SDK/SOAP/

Page 35: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating graphics - Web ADF graphics data source

• Draws on top of layers in map• Used to perform tasks such as:

– Highlighting features (select)– Labeling text– Displaying buffers– Geocoding– Displaying dynamic data (GPS)

• Provides alternative to drawing graphics on server – Server-tier graphics are part of map image

• Rendering occurs independently from map– Does not require map redraw

Page 36: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Migrating graphics

• General steps1.Create a new graphics layer2.Add to graphics dataset3.Create new geometry4.Define symbols and rendering5.Create graphic elements6.Add to graphics layer7.Redraw graphics resource8.Render on client or server

Page 37: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

JavaScript API

• Browser based API• Lightweight• Embed maps and tasks into

Web applications– Display an interactive map – Execute a geoprocessing model – Display your data on an ArcGIS

Online base map – Search for features or attributes – Geocode an addresses and

display the results

Page 38: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

ArcGIS Desktop vs ArcGIS Server Comparison

• ArcGIS Desktop/Engine– Commands, tools and toolbar

– TOC

– DockableWindow

– Map and PageLayout

– Extension

– ArcObjects

– Graphics

• ArcGIS Server Web ADF– Buttons, tools, toolbar and tasks

– TOC

– FloatingPanel, Treeviewplus

– Map and PageLayout

– SOE

– Common API– Datasource Specific API

– Graphics API

Page 39: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Best Practices

• Leverage the Web ADF API as much as possible– GIS services and capabilities

• Geoprocessing, Geodata, Network Analysis– Task framework

• Print, Editor, Search, Query• Minimize fine-grained calls to remote ArcObjects

– COM Utility object– Server Object Extension (SOE)

http://edndoc.esri.com/arcobjects/9.3/NET_Server_Doc/developer/ArcGIS/ArcObjects/best_practices.htm

Page 40: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Summary

Migrating Desktop applications to Server• Migrating pure ArcObjects code

• ASP.NET, DCOM and Utility objects• SOE and Geoprocessing

• Migrating the User Interface• ArcGIS Server Web controls• ArcGIS Server Web ADF framework (Comamnds and Tools)

• Replacing ArcObjects• Common Datasouce API (Query, Identify, Find…)• Datasource Specific API (ArcGIS Server SOAP API and

Graphics)

Page 41: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Presentation materials

• PowerPoint presentation and code are posted on the conference web site– http://www.esri.com/events/devsummit/index.html

• EDN – downloads and videos

Page 42: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

Further questions?

• TECH-TALK AREAS– What: Further opportunity to discuss questions and concerns

with presenters and subject matter experts– Where:– When: during the next 30 minutes

• ESRI Showcase• Meet the teams

• ESRI Developers Network (EDN) website– http://edn.esri.com

Page 43: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

The end – Thank you!

Page 44: Moving Desktop Applications to ArcGIS Server...Migrating desktop applications: The challenge 1. ArcGIS Server is a multi-tiered, multi-API system 2. ArcObjects code runs remotely on

In ConclusionIn Conclusion……

•• Other recommended sessions and meetingsOther recommended sessions and meetings

•• All sessions are recorded and will be available on EDNAll sessions are recorded and will be available on EDN–– Slides and code will also be availableSlides and code will also be available

•• Please fill out session surveys!Please fill out session surveys!•• Still have questions?Still have questions?

1.1. Tech talk, Demo Theatres, Meet the TeamTech talk, Demo Theatres, Meet the Team2.2. ““Ask a DeveloperAsk a Developer”” link on web pagelink on web page

•• www.esri.com/devsummit/techquestionswww.esri.com/devsummit/techquestions

ESRI Developer Summit 2008ESRI Developer Summit 2008 4444