moving desktop applications to arcgis server · –optimize performance . steps to create a com...

37
Moving Desktop Applications to ArcGIS Server Moving Desktop Applications to ArcGIS Server Kelly Hutchins Kelly Hutchins Alagiri Venkatachalapathy Alagiri Venkatachalapathy

Upload: others

Post on 06-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Moving Desktop Applications to ArcGIS ServerMoving Desktop Applications to ArcGIS Server

Kelly HutchinsKelly HutchinsAlagiri VenkatachalapathyAlagiri Venkatachalapathy

Page 2: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

IntroductionsIntroductions

•• Who are we?Who are we?

•• Who are you?Who are you?D l t i ith A Obj tD l t i ith A Obj t––Development experience with ArcObjectsDevelopment experience with ArcObjects

––Development experience with ASP.NETDevelopment experience with ASP.NET––Basic understanding of ArcGIS ServerBasic understanding of ArcGIS Server

Page 3: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Questions?Questions?

•• How many:How many:yy––Want to migrate Desktop applications?Want to migrate Desktop applications?––Want to migrate Engine applicationsWant to migrate Engine applications

VB NET C# C++ VB6?VB NET C# C++ VB6?––VB.NET, C#, C++, VB6?VB.NET, C#, C++, VB6?––Already have ArcGIS Server development experience?Already have ArcGIS Server development experience?

Page 4: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

ScheduleSchedule

•• Today we will coverToday we will coveryy––ArcGIS Desktop customizationsArcGIS Desktop customizations––How to migrate customizations to ServerHow to migrate customizations to Server

Best practices for migratingBest practices for migrating––Best practices for migratingBest practices for migrating

•• We will answer questions during session or at the end?We will answer questions during session or at the end?

Please complete the session survey!Please complete the session survey!

Page 5: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Types of customizationsTypes of customizations

•• ArcGIS Desktop ArcGIS Desktop pp––Commands, tools, toolbars, windows, extensionsCommands, tools, toolbars, windows, extensions––VB 6, VC++, .NETVB 6, VC++, .NET

•• ArcGIS EngineArcGIS Engine––Forms based and utility applicationsForms based and utility applicationsy ppy pp––Commands, Tools, extensionsCommands, Tools, extensions––VB6, VC++, .NET and Java VB6, VC++, .NET and Java

•• ArcObjects ComponentsArcObjects Components––Utility components and DLLsUtility components and DLLsy py p

Page 6: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrating Desktop Applications: The ChallengeMigrating Desktop Applications: The Challenge

1.1. ArcGIS Server is a multiArcGIS Server is a multi--tiered, multitiered, multi--API systemAPI system2.2. ArcObjects code runs remotely on GIS ServerArcObjects code runs remotely on GIS Server3.3. User interface is a web browserUser interface is a web browser

Web services (SOAP)

GIS serverWeb server

SOMSOM( )

ServerObject

Web application

Browser

Server

SOCSOC

Object

Desktop

Object

Web ADF (ASP.NET)ArcObjects

(COM)

Page 7: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migration optionsMigration options

1.1. Migrate directly to ASP.NETMigrate directly to ASP.NETg yg y2.2. Build Server Object Extension or Com Utility ObjectBuild Server Object Extension or Com Utility Object3.3. GeoprocessingGeoprocessing4.4. ArcGIS Server WEB ADFArcGIS Server WEB ADF

–– Common dataCommon data--source APIsource APIDataData source specific APIsource specific API–– DataData--source specific APIsource specific API

5.5. JavaScript or Flex APIsJavaScript or Flex APIs

Page 8: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Which ArcObjects libraries can be used?Which ArcObjects libraries can be used?

•• Most of the Engine librariesMost of the Engine librariesgg•• Capabilities Capabilities

––DisplayDisplay––SymbolizationSymbolization––AnalysisAnalysis––QueryQueryyy––Data AccessData Access––Editing Editing ––OutputOutput––OutputOutput

http://resources.esri.com/help/9.3/ArcGISEngine/ArcObjects/shared_libs.htmhttp://resources.esri.com/help/9.3/ArcGISEngine/ArcObjects/shared_libs.htm

Page 9: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Accessing ArcObjects remotelyAccessing ArcObjects remotely

1. Web app communicates through ArcObjects proxiespp g j p2. Accesses a Server Object through the SOM3. Works with ArcObjects in a Server Context

(ArcSOC.exe)

Server ContextProxies Server Object

Server Context

Page 10: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrate ArcObjects code directly to ASP.NETMigrate ArcObjects code directly to ASP.NET

•• Build an ASP.NET applicationBuild an ASP.NET applicationCopy code to new ApplicationCopy code to new Application––Copy code to new ApplicationCopy code to new Application

––Create ArcObjects in a server context Create ArcObjects in a server context

Dim pPoint as IPoint = Net Point

Wh t ?Wh t ?

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

•• When to use?When to use?––Quick migration of code for testing/demoQuick migration of code for testing/demo––Small amounts of ArcObjects code Small amounts of ArcObjects code

Hint: Use Library Locator to find correct value for Hint: Use Library Locator to find correct value for CreateObjectCreateObject

Page 11: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Steps to migrate codeSteps to migrate code

1.1. Build ASP.NET Web applicationBuild ASP.NET Web application22 Copy/paste your ArcObjects codeCopy/paste your ArcObjects code2.2. Copy/paste your ArcObjects code Copy/paste your ArcObjects code 3.3. Replace “New” with “CreateObject”Replace “New” with “CreateObject”4.4. Manage objects in the server contextManage objects in the server contextg jg j

Page 12: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrating ArcObjects code to a COM Utility ObjectMigrating ArcObjects code to a COM Utility Object

•• Build a custom COM component Build a custom COM component pp––Moves code to the GIS Server (SOC)Moves code to the GIS Server (SOC)––Reduces number of fineReduces number of fine--grained callsgrained calls

•• When to use?When to use?––Lots of ArcObjects codeLots of ArcObjects codeLots of ArcObjects codeLots of ArcObjects code––Simplify code sharingSimplify code sharing––Optimize performance Optimize performance

Page 13: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Steps to create a COM utility object)Steps to create a COM utility object)

1.1. Create a new project ( VB 6, .NET, C++)Create a new project ( VB 6, .NET, C++)2.2. Reference necessary libraries Reference necessary libraries 3.3. Define a COM ClassDefine a COM Class44 Define a public interface or public membersDefine a public interface or public members4.4. Define a public interface or public membersDefine a public interface or public members5.5. Migrate existing ArcObjects codeMigrate existing ArcObjects code6.6. Use CreateObject to create and access objectsUse CreateObject to create and access objects

Required to register COM component on all SOC machinesmachines

Page 14: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrating to a Server Object Extension (SOE)Migrating to a Server Object Extension (SOE)

•• Extends the capabilities Extends the capabilities ppof a serviceof a service

•• BenefitsBenefits–– Initialized once Initialized once ––Configurable via Configurable via

ArcCatalogArcCatalog property pageproperty page

Page 15: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Steps to create a Server Object Extension (SOE)Steps to create a Server Object Extension (SOE)

1.1. Create a Class Library projectCreate a Class Library projecty p jy p j2.2. Implement IServerObjectExtensionImplement IServerObjectExtension3.3. Optionally build a custom property pageOptionally build a custom property page4.4. Access SOE from ASP.NET Web applicationAccess SOE from ASP.NET Web application

Page 16: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Compare COM Utility Object to SOECompare COM Utility Object to SOE

COM Utility Object Server Object ExtensionI iti li d h i d b GIS S I iti li d t t tInitialized when required by GIS Server Initialized once at startupCreated ad-hoc using the server context

Registered with a specific service

Configurable via a custom property page

Page 17: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrating Migrating –– GeoprocessingGeoprocessing Service Service

•• Replace ArcObjects code with a Replace ArcObjects code with a GeoprocessingGeoprocessingp jp j p gp gService Service

•• Build a model and return results to Web applicationBuild a model and return results to Web application•• When to use? When to use?

––Optimize ArcObjects tasksOptimize ArcObjects tasks––Processes that can be modeledProcesses that can be modeledProcesses that can be modeled Processes that can be modeled

Page 18: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Steps to migrate to a Steps to migrate to a geoprocessinggeoprocessing serviceservice

1.1. Build and test your geoprocessing model Build and test your geoprocessing model y g p gy g p g2.2. Publish the modelPublish the model3.3. Consume as a task in your ASP.NET applicationConsume as a task in your ASP.NET application

Page 19: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migration Migration –– Web Application Developer Framework (ADF)Web Application Developer Framework (ADF)

•• Replace ArcObjects functionality Replace ArcObjects functionality p j yp j y

Page 20: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Web ADF Web ADF -- Development PathsDevelopment Paths

D lDeveloperPaths I II III IV

Web ControlsWeb Controls

Common Data Source APICommon Data Source API

GenericGeneric

ImplementationsImplementationsImplementationsImplementations

Data Source Specific APIsData Source Specific APIs

Page 21: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrating the User InterfaceMigrating the User InterfaceWeb ControlsWeb Controls

• Visual Studio Map template

• WebControls–Pure ASP.NET controls

AJAX bl d–AJAX enabled

• Functionalityy–Visualization–User interaction

Page 22: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrating the User InterfaceMigrating the User InterfaceCommands and ToolsCommands and Tools

1.1. Start with Web Mapping Application templateStart with Web Mapping Application templatepp g pp ppp g pp p2.2. Add new item to the ToolbarAdd new item to the Toolbar3.3. Specify clientSpecify client--side actionside action4.4. Create a new class and Implement required interfaceCreate a new class and Implement required interface5.5. Define serverDefine server--side actionside action

Customization InterfaceTool IMapServerToolActionCommand IMapServerCommandActionDropDownBox IMapServerDropDownBoxAction

Page 23: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrating the User InterfaceMigrating the User InterfaceTask FrameworkTask Framework

•• Tasks Tasks –– objects that objects that jjencapsulate business logicencapsulate business logic

•• Out of the box tasks include:Out of the box tasks include:––Search AttributesSearch Attributes––Find AddressFind Address––Editor TaskEditor Task––Print TaskPrint Task

C t i f di l i t kC t i f di l i t k•• Container for displaying task Container for displaying task resultsresults

Page 24: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

ArcGIS Server Web ADF ArcGIS Server Web ADF Development PathsDevelopment Paths

D lDeveloperPaths I II III IV

Web ControlsWeb Controls

Common Data Source APICommon Data Source API

GenericGeneric

ImplementationsImplementationsImplementationsImplementations

Data Source Specific APIsData Source Specific APIs

Page 25: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migration Migration –– The Common The Common DataSourceDataSource APIAPI

• ArcGIS Server supports multiple data sourcespp p– 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!Access and interact with all data sources the same way!

• Provides different functionalities - query, find, identity…

Common data source API

Page 26: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

The Common The Common DatasourceDatasource APIAPI

Resource managers Web ADF controls

IMapTocFunctionalityIGISDataSource IGISResource IGISFunctionality

IMapResource

IMapFunctionality

IScalebarFunctionality

IQueryFunctionality

IGeocodeResource ITileFunctionalityCommon data

source API

IGeoprocessingResource IGeocodeFunctionality

IGeoprocessingFunctionality

Data sourceimplementations

ArcGISServer ArcIMS

Page 27: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Using the Common Using the Common DatasourceDatasource APIAPI

•• Replace ArcObjects code Replace ArcObjects code p jp j–– Query, Identify, Find etc Query, Identify, Find etc

•• StepsSteps1.1. Identify the code to replaceIdentify the code to replace2.2. Search help to find Common API functionality Search help to find Common API functionality 3.3. Reuse code to access other data sources Reuse code to access other data sources

Review SDK, code samples, OMDs …………..Review SDK, code samples, OMDs …………..

Page 28: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

ArcGIS Server Web ADF ArcGIS Server Web ADF Development PathsDevelopment Paths

D lDeveloperPaths I II III IV

Web ControlsWeb Controls

Common Data Source APICommon Data Source API

GenericGeneric

ImplementationsImplementationsImplementationsImplementations

Data Source Specific APIsData Source Specific APIs

Page 29: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migration Migration –– Data source specific APIsData source specific APIs

• Composed of data sources that have functionality beyond Common data source APIbeyond Common data source API

–ArcGIS Server–ArcIMS

A W b S i–ArcWeb Services

Data source-specific APIs

Web ADF API

Data source specific APIs

Common data source API

Page 30: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Working with Data Source Specific APIsWorking with Data Source Specific APIs

• Each data source exposes a different set of functionality

Web controlsWeb controls

Web controls

different set of functionality–ArcGIS Server

• SOAP, ArcObjectsArcIMS AXL

Resource managers

–ArcIMS – AXL–ArcWeb Services – SOAP API

• What does this mean? Data sources

FunctionalitiesResources

–Many other data source-specific classes available

–More business/GIS logicData source-specific APIs

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

Page 31: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrating graphics Migrating graphics –– Web ADF graphics data sourceWeb ADF graphics data source

•• Draws on top of layers in mapDraws on top of layers in mapp y pp y p•• Used to perform tasks such as:Used to perform tasks such as:

–– Highlighting featuresHighlighting features–– LabelingLabeling–– Displaying buffersDisplaying buffers–– GeocodingGeocodinggg–– Display dynamic data Display dynamic data

•• Rendering occurs independently from mapRendering occurs independently from mapM d i t i dM d i t i d–– Map redraw is not required Map redraw is not required

Page 32: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Migrating graphics Migrating graphics -- OptionsOptions

Page 33: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Additional APIsAdditional APIsJavaScript and Flex JavaScript and Flex

•• Take advantage of the mapping, Take advantage of the mapping, geoprocessinggeoprocessing and and geocdinggeocdingcapabilities of ArcGIS Server services capabilities of ArcGIS Server services

•• JavaScript APIJavaScript API––LightweightLightweight––High performanceHigh performanceHigh performanceHigh performance––Browser based GIS applicationsBrowser based GIS applications––MashupsMashups

Extensions for Google Maps and Virtual EarthExtensions for Google Maps and Virtual Earth––Extensions for Google Maps and Virtual EarthExtensions for Google Maps and Virtual Earth•• ArcGIS Server Flex APIArcGIS Server Flex API

––Build applications with intuitive, visually rich user interfaceBuild applications with intuitive, visually rich user interfaceyy––Create Create mashupsmashups

•• ArcGIS API for Microsoft ArcGIS API for Microsoft SilverlightSilverlight

http://webhelp.esri.com/arcgisserver/9.3/dotNet/develop_with_server.htmhttp://webhelp.esri.com/arcgisserver/9.3/dotNet/develop_with_server.htm

Page 34: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

SummarySummary

•• Today we coveredToday we coveredyy––Migrating Desktop applications to ServerMigrating Desktop applications to Server

•• ASP.NET, SOE, COM Utility objectsASP.NET, SOE, COM Utility objects•• GeoprocessingGeoprocessing•• GeoprocessingGeoprocessing

––Migrating the User InterfaceMigrating the User Interface•• ArcGIS Server Web controlsArcGIS Server Web controls•• Commands and ToolsCommands and Tools•• Commands and ToolsCommands and Tools

––Replacing ArcObjectsReplacing ArcObjects•• Common Common DatasourceDatasource API (Query, Identify, Find…)API (Query, Identify, Find…)

D tD t ifi API (A GIS S d G hi )ifi API (A GIS S d G hi )•• DatasourceDatasource specific API (ArcGIS Server and Graphics)specific API (ArcGIS Server and Graphics)

Still have questions?Still have questions?

Page 35: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Additional ResourcesAdditional ResourcesQuestions, answers and information…Questions, answers and information…

•• Tech Talk Tech Talk •• ESRI Resource CentersESRI Resource Centers–– Outside this room right now!Outside this room right now! –– PPTs, code and videoPPTs, code and video

resources.esri.comresources.esri.com•• Meet the Team Meet the Team

•• Social NetworkingSocial Networking

•• Other sessionsOther sessions

Social NetworkingSocial Networkingwww.twitter.com/www.twitter.com/ESRIDevSummitESRIDevSummit

tinyurl.com/tinyurl.com/ESRIDevSummitFBESRIDevSummitFB

Page 36: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Other SessionsOther Sessions

––Building your First RIA with ArcGIS API for Flex (4:30)Building your First RIA with ArcGIS API for Flex (4:30)–– Introduction to the ArcGIS API for Microsoft Introduction to the ArcGIS API for Microsoft SilverlightSilverlight (Wed (Wed

11:00):00)––Customizing Graphics andCustomizing Graphics and MapTipsMapTips with the .NET Web ADFwith the .NET Web ADFCustomizing Graphics and Customizing Graphics and MapTipsMapTips with the .NET Web ADF with the .NET Web ADF

(Wed 1:00)(Wed 1:00)––Top 10 HowTop 10 How--tostos for the ArcGIS Serer .NET ADF (Wed 2:45)for the ArcGIS Serer .NET ADF (Wed 2:45)––Best Practices for Designing Effective Map Services (Wed 4:30)Best Practices for Designing Effective Map Services (Wed 4:30)––Best Practices for Designing Effective Map Services (Wed 4:30)Best Practices for Designing Effective Map Services (Wed 4:30)––Harnessing Server Object Extensions (Wed 12:00)Harnessing Server Object Extensions (Wed 12:00)

Still have questions?Still have questions?

Page 37: Moving Desktop Applications to ArcGIS Server · –Optimize performance . Steps to create a COM utility object) 1. Create a new project ( VB 6, .NET, C++) 2. Reference necessary libraries

Want to Learn More?Want to Learn More?ESRI Training and Education ResourcesESRI Training and Education Resources

•• InstructorInstructor--Led TrainingLed Training––Developing Applications with ArcGIS Engine Using theDeveloping Applications with ArcGIS Engine Using the––Developing Applications with ArcGIS Engine Using the Developing Applications with ArcGIS Engine Using the

Microsoft .NET FrameworkMicrosoft .NET Framework––Developing Applications with ArcGIS Server Using the Developing Applications with ArcGIS Server Using the

Microsoft NET FrameworkMicrosoft NET FrameworkMicrosoft .NET FrameworkMicrosoft .NET Framework

•• Free Web Training SeminarFree Web Training Seminar––Building Applications with ArcGIS Server Using the Microsoft Building Applications with ArcGIS Server Using the Microsoft

.NET Framework.NET Framework

http://www.esri.com/traininghttp://www.esri.com/training