When upgrading software, the challenge is to find the differences between old and new versions and identify which changes might cause problems. We’ve been upgrading to ArcGIS Server 10.1 from 10.0 and thought we’d pass on what we’ve discovered with respect to the SOAP API.
Although we use the ArcGIS Server REST API for much of our web GIS work these days – it’s simple, lightweight and we prefer it for rapid development – we still have many legacy applications as well as our General Purpose Viewer that use the ArcGIS Server SOAP API. These applications all use a common DLL that we built to wrap the SOAP API and extend it with convenience properties and methods. With each new release of ArcGIS Server we have to update the web service references in this DLL to account for the new and changed features. Sometimes these changes break existing functionality. Thus it’s critical for us to know where those breaking changes will occur.
For the version 10.1 update we have run a complete comparative analysis of the SOAP API against version 10.0. The linked AGS 10.1 SOAP API Changes spreadsheet documents 380 changes across the nine services common to both versions. The good news: the vast majority of these changes are additions, so your existing version 10.0 code should not be affected by them.
Here are the breaking changes that we’ve identified:
- FeatureServer – Many service methods now have additional arguments. The first of these arguments is a GdbVersion string. The editing methods (Add, Delete, Update, etc.) also take a RollbackOnFailure boolean and a RollbackOnFailureSpecified boolean. The querying methods (Query, QueryFromService, etc.) also take a MaximumAllowableOffset double.
- ImageServer – The RasterColormap and RasterHistogram fields have been removed from the ImageServerForceDeriveFromAnyType object. In the RasterHistogram object the type of the Counts field has changed from an object to an array of doubles.
- MapServer – The GetLegendInfo service method now has two additional arguments, MapDescription and MapImageDisplay. We found that you can set both of these to null to get the same behavior as AGS 10.0.
- NAServer – The Azimuth field has been removed from the NACompactStreetDirection and NAStreetDirection objects. It appears you should now be using the new DepartBearing and GeneralBearing fields.
The spreadsheet lists the changes by class or enumeration and by property, method or enumeration value. If a property, method or enumeration value is not provided the change affects the entire class or enumeration. Each service type has a column with an X if that particular change affects that service (note that many of these classes and enumerations are shared across multiple services). The MobileServer is new at 10.1 and thus is not included in this analysis.
I hope this helps others to evaluate and sustain their legacy systems.
By Peter Girard, AppGeo Vice President and Director of Software Architecture.