- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SOE-动态分段
需求:给定一个路径字段、字段值、里程,返回一个点
作者:严瑞 (王知方提供技术指导)
1、打开VS2008 ,新建REST TEMPLATE 工程,命名为LineFerencingSOE
2、生成如下工程,打开LineReferencing.cs,LineReferencingSOE 继承了四个类:
ServicedComponent:如果SOE 要注册成COM 组件,必须要继承这个类。
IServerObjectExtension:这个类包含 Init()和 Shutdown()方法,Init()方法是初
始化ServerObject ,Shutdown()关闭SOE ,一般不需要在这两个方法中再写别
的代码。
IObjectConstruct:包含一个Construct()方法,当SOE 启动的时候会运行这个
方法,在这个方法中主是写在SOE 运行后需要执行的代码,而不是每次请求
需要执行的。比如:获取地图代码,或者你始终操作某一个图层,就可以把
获取该图层的代码写在这里。
IRESTRequestHandler :每次请求服务器执行的代码,也就是说你给Server 传
参后,执行的代码。它下面的 CreateRestSchema()方法是创建资源和操作(举
个例子说资源和操作:比如 FeatureService 就是一个资源,而编辑就是它的
一个操作),SampleOperHandler()方法是处理请求。
3、先不传任何参数,返回一个测试字符串。上面说了SampleOperHandler()是处
理请求的,我们把返回值写到这个方法中,返回值是“Test linereferencing….”,
如下,先注释掉有参数传进的代码。
注:参数是从CreateRestSchema()方法中得到的。
4 、将该工程重新生成一下,目的是生成\ LineReferencingSOE\bin\ Debug 的
LineReferencingSOE.dll 文件。
5、用鼠标选中LineReferencingSOE,右键属性:
设置签名密钥:
保存,并重新生成解决方案。
6、将dll 文件注册成COM 组件(只有注册到COM 组件了,才可以注册到ArcGIS
Server 中去),打开Visual Studio2008 命令提示行:
命令行当前路径指向LineReferencingSOE.dll 所在的路径
执行代码:regasm LineReferencingSOE.dll /codebase
7、下面将dll 注册到ArcGIS Server 中。需要新建一个工程,编写代码注册。
新建工程,如下设置:
引入如下几个包:
代码中引入:
8、在Main()函数中编写代码:连接Server ,命名扩展服务名
string extensionName = LineReferencingSOE;是定义了扩展服务的服务名(发布服
务时会在ArcCatalog 或Manager 中的服务类型列表中看到)
9、如果之前注册过同名的SOE,要进行反注册的话,可以用如下的方法:
在命令行中输入“/unregister ”参数,
在代码中判断是否进行反注册,该段代码写到Main 函数里面
增加一个ExtensionRegistered 方法:
继续在Main 函数中增加代码:
所有代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Server;
using ESRI.ArcGIS;
using ESRI.ArcGIS.ADF.Connection.AGS;
namespace LineReferencginSOERegistration
{
class Program
{
static void Main(string[] args)
{
//连接Server
AGSServerConnection agsServerConnection = new
AGSServerConnection ();
文档评论(0)