Server Object Extensions (SOEs)

Report
The Kentucky Transportation
Cabinet’s use of Server Object
Extensions (SOEs)
Scott Dickison, GISP
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
This morning’s topics:
• What is a Server Object Extension (SOE)?
• How do you…
• Write a SOE?
• Use a REST SOE in a .NET application?
• How is the Transportation Cabinet using SOE’s
with ArcGIS Server 10.0?
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
What on Earth are
you talking about?
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Spatially Enabled Web Services!
SOE’s extend the capabilities of
your ArcGIS Server map services
beyond just data display and
query.
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
♫♫♪ The Circle of Life Data ♫♫♪
Service Request
MAP Service/SOE
Web Client
Custom Class
DESERIALIZER
Kentucky Transportation Cabinet
GIS Branch
Serialized Data
Application
SDE & Other
Databases
http://transportation.ky.gov/maps
REST Service Request URL
http://someserver.somewhere.org/ArcGIS/rest/s
ervices/MeasuredRoute/MapServer/exts/KYTCGI
SREST/GetRouteInfo?X=5164738.4563+&Y=3893
182.2452+&SearchRadius=10&f=pjson
• Programmatically constructed and submitted
by the application
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Serialized JSON or XML Output
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
SOE Basics
• Can be developed for REST or SOAP Access
• KYTC has chosen to write them as REST services
• Can be written in .NET or Java
• Provide access to the full suite of ArcObjects
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
SOE Basics
• Need to be deployed to all of a site’s ArcGIS
Servers in multi-server configurations
• This TOTALLY changes at 10.1!
• Return information is in JSON but can be
written to return other data formats.
• KYTC offers both JSON and XML
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Advantages of a SOE
• Fast!
• Low server overhead
• SOE’s live and die with the map service they’re
attached to
• No performance hit for having to spin up an
instance of the SOE when a request is made
• Easily accessible
• Can be accessed by any client that is able to
make the request
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
When do you need a SOE?
• ArcGIS Server applications
• When desired functionality is not available to
the Silverlight, JavaScript, or Flex APIs.
• Traditional .NET applications…
• When an application needs some spatial
functionality but the application itself cannot
be written with ArcObjects
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
When do you need a SOE?
• Other considerations…
• Geoprocessing services have a large memory
footprint when compared to a SOE – especially
for complex tasks
• If the task is complex and is going to be heavily
utilized you’ll want to use a SOE.
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
How are SOE’s written?
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Development
• Prerequisites:
• Knowledge of .NET or Java development
• Knowledge of ArcObjects
• Use the templates!
• ESRI has provided a SOAP and a REST Visual
Studio project template to get you started.
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Development
• Building blocks of an SOE
•
Resources
•
Information returned back from
the server for use by an
operation
–
•
ESRI says to think of this as a
read-only property
Operations
•
Something you ask the server to
do with a resource
• Every SOE has at least one
resource and one operation
even if the resource doesn’t
return anything
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Development
• The RestResource class
•
•
SOE Operations are associated with a
RestResource
Arguments
•
•
•
•
The SOE’s name
Collection?
The Resource Handler
Capabilities (optional)
–
A way to group subsets of operations
• Note: Capabilities are called “Allowed
Operations” when looking at the Capabilities tab
under Service Properties in ArcCatalog.
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Development
• The CreateRestSchema function
• Returns a RestResource Class
• This is where you define the SOE’s operations
(RestOperation class)
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Development
• The REST Resource Handler
• Byte Array
•
An array of raw data
• Returns information from the server back to
the SOE for use by an operation
• For KYTC’s Server Object Extensions we’ve set
it up to not return anything
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Development
• The RestOperation Class
• An individual operation in a SOE
• Identifies which Operation Handler will be
invoked
• Specifies inputs
• Specify output types
• Optionally specify a capability
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Development
• The Rest Operation Handler
• Byte Array
• Handles and validates inputs
• Where you should execute any ArcObjects
code (here or in helper methods)
• Formats output in the specified format
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Development
• Signing the assembly
• Signing the assembly with a strongly named
key will let you place the assembly in the
server’s GAC
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Development
• Testing
• Once deployed an
HTML Page is
generated for the
SOE in the REST
services directory
of the map service
it is attached to
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Using SOE’s in a .NET Application
Using SOE’s in a .NET Application
• Making the request
• The WebClient Class…
• Constructing the URL...
• The OpenReadCompleted event handler
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Using SOE’s in a .NET Application
• The WebClient Class
• Provides common methods for sending data to
and receiving data from a resource identified
by a URI. (MSDN web site)
• Constructing the URL
• Programmatically construct the entire call and
provide it to the WebClient
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Using SOE’s in a .NET Application
• The OpenReadCompleted event handler
• Synchronous or Asynchronous
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Using SOE’s in a .NET Application
• Deserializing SOE output
• Creating a Class to hold the output
•
http://json2csharp.com/
• The DataContractJsonSerializer
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
How is KYTC utilizing SOE’s?
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
KYTC
• Silverlight Control
• Searching for a route
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
KYTC
• Permitting (KEPT)
• When a permit location is added, moved, or
deleted the corresponding point is acted upon
in SDE
• Generate a list of all roads within a mile of a
permit
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
KYTC
• Rail Crossing Inventory (RCI)
•
•
•
Return detailed route information based on a
spatial query
Return location information in terms of County,
Route, and Mile point.
Data synchronization
•
When a rail crossing is updated in the RCI database the
corresponding location is moved in SDE
• Project Manager’s Toolbox
•
A SOE is used to return the boundaries of a project
which is, in turn, used to zoom to the project
extent.
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
KYTC GIS Branch Goals
• Integration with application developers
•
•
Deploy a spatially enabled application that is a
joint effort between the GIS Branch and
Application Development by the end of 2012.
(DONE!)
Deploy a spatially enabled application that is solely
developed by Application Development with the
GIS Branch only in an advisory role by the end of
2013.
• Replace existing web services with SOEs
•
ArcGIS server 10.1 no longer supports local
connections
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Questions?
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps
Contact us:
email: [email protected]
Server Object Extension link:
http://maps.kytc.ky.gov/ArcGIS/rest/services/M
easuredRoute/MapServer/exts/KYTCGISREST
Kentucky Transportation Cabinet
GIS Branch
http://transportation.ky.gov/maps

similar documents