欢迎来到天天文库
浏览记录
ID:46282031
大小:2.07 MB
页数:34页
时间:2019-11-22
《ArcGIS Server服务器对象扩展(SOE)开发》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、ArcGISServerSOE开发Esri中国(北京)有限公司王知方主要内容•什么是SOE?•为什么要用SOE?-SOEvs.ADF-SOEvs.自定义COM对象-SOEvs.GeoprocessingService-SOE的优势和劣势•SOE实例-WorldElevation、动态分段、动态缓存地图服务•开发、部署、测试、调试•10.1版本中的变化什么是SOE?什么是SOE?•ArcGISREST服务-9.3版本开始,能力有限-10.1完全面向服务•当REST/SOAP服务无法满足需求时?GP服务SOEADFWebService什么是SOE?•ServerObje
2、ctExtension:对现有服务能力的扩展•用途:利用ArcObjects扩展ArcGISServer提供的现有服务功能•本质:利用.NET/Java开发的,实现了特定接口的COM对象•运行在宿主服务的ArcSOC.exe进程中FeatureServiceMobileServiceWMS/WFS/WCSNAServerArcPadExtension…为什么要用SOE?为什么要用SOE?SOE…•扩展ArcGISServer以实现自己的业务逡辑-比如WebAPIs无法满足自己的需求时•高效、可嵌入、功能扩展•ArcGISServer中调用ArcObjects的方法-
3、10.0是最后一个支持在WebADF中使用Local连接方式的版本-10.1是最后一个支持WebADF开发方式的版本为什么要用SOE?SOEvs.ADF•ADF-IServerContext.CreateObject()-多次远程(DCOM)调用-速度慢-10.1开始不再支持•SOE-服务器端的本地调用-速度快-粗粒度封装为什么要用SOE?SOEvs.自定义COM对象•自定义COM对象-特定逡辑功能的封装-可在ArcGISDesktop/ArcGISEngine/ArcGISServer中使用-不与任何服务绑定,可在空的ServerContext中创建-一次远程(D
4、COM)调用完成多个AO操作-每次调用时都需要重新创建-10.1开始不再支持•SOE-只需初始化一次-可通过REST/SOAP方式调用-与服务绑定为什么要用SOE?SOEvs.GPService•GeoprocessingService-ModelBuilder,无需编程-支持异步模式完成复杂任务-可通过Python轻松扩展-可通过自定义GP工具调用ArcObjects-耗内存-细节问题多•SOE-执行效率高-细粒度-运行时可配置为什么要用SOE?SOE的优势和劣势•优势-扩展ArcGISServer现有服务的能力-可调用ArcObjects高效封装业务逡辑-可通过
5、REST/SOAP/DCOM方式调用-ArcGISAPIforJavascript/Flex/Silverlight/iOS/WindowsPhone/Android-可通过属性页面进行配置-可利用ArcGISServer的安全机制•劣势-需要进行开发-需要宿主在特定服务中-部署稍麻烦*SOE实例WorldElevation•用途:查询全球范围内任意地点的高程•演示:ArcGISAPIforSilverlight•原理-查询地图服务中单波段RasterDataset某一点的高程属性值-ISurface.InterpolateShape()方法插值出3D图形,获得Z值
6、动态分段•用途:计算延输入线上每千米/英里处的位置•演示:ArcGISAPIforJavascript•原理-将提交的Polyline转成内存中的FeatureClass的一个Feature-IMSegmentation.SetMsAsDistance()方法赋M值-IRouteLocator2.Locate()方法计算Marker的位置动态缓存地图服务•用途:使未创建缓存的动态地图服务具有缓存地图服务的效果•演示:ArcGISAPIforFlex•原理-模拟缓存地图服务的响应字符串-计算指定级别、行列号切片的地理范围-利用IMapServer3.ExportMap
7、Image()方法输出切片开发、部署、测试、调试开发、部署、测试、调试开发——原理•利用.NET/Java开发的,实现了IServerObjectExtension(以及其它可选)接口的COM对象•按调用方式可分为-RESTSOE*-SOAPSOE*-DCOMSOE(只能用于10及以前版本)•讲座以RESTSOE/.NET开发为例开发、部署、测试、调试开发——要实现的接口•ServicedComponent(必须)•IServerObjectExtension(必须)-voidInit(IServerObjectHelperpSOH)、voidShutdown(
此文档下载收益归作者所有