1 / 34

The Kentucky Transportation Cabinet’s use of Server Object Extensions (SOEs) Scott Dickison, GISP

The Kentucky Transportation Cabinet’s use of Server Object Extensions (SOEs) Scott Dickison, GISP. 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?

geordi
Télécharger la présentation

The Kentucky Transportation Cabinet’s use of Server Object Extensions (SOEs) Scott Dickison, GISP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The Kentucky Transportation Cabinet’s use of Server Object Extensions (SOEs) Scott Dickison, GISP

  2. 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?

  3. What on Earth are you talking about?

  4. Spatially Enabled Web Services! SOE’s extend the capabilities of your ArcGIS Server map services beyond just data display and query.

  5. ♫♫♪The Circle of LifeData ♫♫♪ MAP Service/SOE Service Request Application Web Client Serialized Data Custom Class SDE & Other Databases DESERIALIZER

  6. REST Service Request URL http://someserver.somewhere.org/ArcGIS/rest/services/MeasuredRoute/MapServer/exts/KYTCGISREST/GetRouteInfo?X=5164738.4563+&Y=3893182.2452+&SearchRadius=10&f=pjson Programmatically constructed and submitted by the application

  7. Serialized JSON or XML Output

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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.

  13. How are SOE’s written?

  14. 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.

  15. 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

  16. 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.

  17. Development The CreateRestSchema function • Returns a RestResource Class • This is where you define the SOE’s operations (RestOperation class)

  18. 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

  19. 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

  20. 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

  21. Development Signing the assembly • Signing the assembly with a strongly named key will let you place the assembly in the server’s GAC

  22. 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

  23. Using SOE’s in a .NET Application

  24. Using SOE’s in a .NET Application Making the request • The WebClient Class… • Constructing the URL... • The OpenReadCompleted event handler

  25. 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

  26. Using SOE’s in a .NET Application The OpenReadCompleted event handler • Synchronous or Asynchronous

  27. Using SOE’s in a .NET Application Deserializing SOE output • Creating a Class to hold the output • http://json2csharp.com/ • The DataContractJsonSerializer

  28. How is KYTC utilizing SOE’s?

  29. KYTC Silverlight Control • Searching for a route

  30. 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

  31. 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.

  32. 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

  33. Questions?

  34. Contact us: email: KYTCGISTeam@ky.gov Server Object Extension link: http://maps.kytc.ky.gov/ArcGIS/rest/services/MeasuredRoute/MapServer/exts/KYTCGISREST

More Related