ArcGIS Server 扩展-SOE系列(一)
来源:互联网 发布:淘宝美工详情页 编辑:程序博客网 时间:2024/05/15 22:27
1.SOE相关
1.1 什么是SOE
SOE(Server对象扩展:Server Object Extenstion),其通过采用ArcObjects的相关的接口、类库对ArcGIS Server的基本的功能进行扩展,使那些通过Web api 不能或者不易实现的功能,可以通过SOE的形式,使得桌面实现方式可以在web端实现。从arcgis server 从10.1版本以后就不在支持本地调用ao,故目前SOE是扩展服务端能力的主要途径。
1.2 SOE开发知识背景
SOE的开发需要开发者具有下面一些知识背景:
- ArcObjects for .Net 或者ArcObjects for Java;
- Web service通信技术,
- SOAP和REST服务的使用;
- SOE需在客户端调用,需要有ArcGIS Server Web API等相关的知识背景。
1.3 SOE与gp服务
对web端的扩展除了SOE的形式还可以采用GP(Geo Processing)服务,什么时候该用GP服务,什么时候该用SOE呢?
GP服务的优势在于:
- 在尽可能少的编写代码的情况下,可以通过在ModelBuilder中通过拖拽对话框的形式构建和发布服务
- 调用GP服务后,其可以在服务器端一直执行,期间可以执行其他操作,直到操作完成后返回结果,适合耗时长的复杂处理。
而GP服务的缺点在于:
- 每次请求,gp服务都需要实例化,内存消耗大,耗时。
- GP提供的工具比较固定,有些操作并不能通过Toolbox实现一步操作完成,这时候可以采用SOE进行相关的功能的编写。
1.4 SOE与Geometry Service
Geometry Service(几何服务) 提供了一些基本的GIS操作,如缓冲区的构建,空间量算,空间关系测算可以采用Geometry Service 而无需使用SOE或者GP服务
2.SOE的使用
2.1 SOE的开发环境
soe的开发采用模板开发,只需要在模板的规定函数里面填写自己的业务逻辑,编译和部署,可以方便的使用soe扩展服务。使用soe模板,需要安装ArcObjects sdk for .Net 或者ArcObjects sdk for java,构建好SOE环境。以.net 版soe开发为例,安装完ao sdk后,新建工程可以在Server Object Extension中下,可以看到soe开发的两个模板,基于REST和基于SOAP风格的模板。
tips:必须选择.net framework 3.5,vs2010默认选择为4.0,故看不见两个模板。
3.soe的生命周期
使用soe进行服务扩展,需要掌握soe的生命周期
在soe生命周期开始之前,需对soe进行部署,然后在需要扩展的地图服务中启用soe。tips:在arcgis server 10.2中soe支持对image server的扩展。
- soe的初始化。在部署完soe,对soe宿主的地图服务,进行刷新重启的时候,进入该阶段。只要soe的宿主服务刷新或者重启,soe的的初始化就不会执行,所以客户端即使多次请求soe,只要不重新启动服务,则是实例化只执行一次,这也是为什么说soe的请求效率比gp服务高的原因。该阶段主要执行SOE模板中IServerObjectExtension接口下的Init()方法。
- soe的构造。该阶段紧接初始化阶段。该阶段执行IObjectConstruct接口下的Construct()方法,通常在该方法下可以获取soe的属性页中的内容。Init()和Construct()方法由于通常只执行一次,所以可以将soe中只需执行一次的耗时操作放在这两方法中。
- 当soe接收到客户端的请求,开始活动,该阶段实现IObjectActivate接口的Activate()的方法,该接口在soe的模板中并没有实现,是选择实现接口。当有的业务逻辑在接受http请求触发。
- 该阶段是SOE的业务逻辑主要执行阶段。该阶段反序列化客户端的请求参数,将json格式的参数反序列化成AO对象或者其他业务中需要string对象。处理请求,将请求的结果序列化成json或者其他http协议所支持的数据类型,返回到前端。
- 一次soe请求结束。该阶段主要实现IObjectActivate接口的Deactivate()的方法,同样是选择实现,当业务逻辑在一次请求结束时可以在该方法下实现。当具有多次请求的时候,就会重复图中粉红色的部分。不会再次实例化soe,这是soe效率高的一个原因。
- soe关闭。实现shutdown() 方法。可以在里面对soe的对象进行释放。
- ArcGIS Server 扩展-SOE系列(一)
- ArcGIS Server 扩展-SOE系列(二)
- ArcGIS 10.1 for Server 扩展开发(SOE)
- ArcGIS 10.1 for Server 扩展开发(SOE)
- arcgis server soe调试不了
- (九)ArcGIS Server之介绍SOE(上)
- (十)ArcGIS Server之开发SOE(中)
- Server Objects Extension(SOE)开发(一)
- ArcGIS Server 开发系列(一)--编程框架总览
- ArcGIS Server 开发系列(一)--编程框架总览
- ArcGIS Server 开发系列(一)–编程框架总览
- ArcGIS Server 开发系列(一)--编程框架总览
- ArcGIS Server 10.1 中SOE的新特性
- ArcGIS for Server的SOE开发思路解析
- ARCGIS 10.1 for Server SOE介绍及开发实例(1)
- ARCGIS 10.1 for Server SOE介绍及开发实例(2)
- ARCGIS 10.1 for Server SOE介绍及开发实例(3)
- ARCGIS 10.1 for Server SOE介绍及开发实例(4)
- Linux 命令之 stat
- Stub vs. Skeleton
- 软考网络规划设计师通关之路
- phpmyadmin的设置
- linux登陆之后显示bash-3.00$
- ArcGIS Server 扩展-SOE系列(一)
- 博文转载
- 作为项目经理应该跟项目组成员保持上下级关系还是打成一片?
- 获取当前路径
- Qt 5.3 下OpenCV 2.4.11 开发(7)单通道直方图绘制
- muduo网络库预备知识点
- 8数码问题的C++解决方案
- linux oracle11g 安装 网络配置向导错误
- Java File类学习笔记3:自定义一个类,读取文本内容到字符串