以前写过一些关于Flex下ArcIMS的开发,还在ESRI的论坛上贴过ArcGIS Server without ADF,感觉有点零碎,主要在线写Blog不太习惯,现在下了个Live Writer,感觉不错,有那么点写专栏的感觉了,有人曾经留言不知道怎么下手开发Flex+ArcIMS的开发。加上这些时间积累一些知识(主要是.net与Flex的互操作),感觉之前写的东西有点不合时宜了。于是有了新的系列。写的不好,大家将就着看吧。
必要软件:ArcIMS 9.2,Visual Studio 2005或2008,Flex Builder 2.0及以上的版本,FluorineFx,Microsoft Enterprise Library,前两个相信大家很清楚从那边down,FluorineFx在http://www.fluorinefx.com/有下载,Enterprise Library在微软的网站也有下载。现在的版本是3.1安装的时候要打vs 2005的sp1,2.0版本的则不需要。
首先在2005建立一个名为IMSFxServer的空解决方案,添加名为IMSFxLib 的FluorineFx ServiceLibrary新工程
然后再添加一个FluorineFx ASP.Net Web Site项目,就起个名字叫IMSFxServer把,记得位置下拉框中选择http不要选择文件系统哦。
下面就是添加引用了,由于ArcIMS相对比较简单,只要添加一个ESRI的引用就行了也就是ESRI.ArcGIS.ADF.Connection,搞定后就可以连接ArcIMS咯!
首先在Asp.Net项目中添加IMSFxLib 的引用,然后在IMSFxLib中添加一个类,名字为IMSConnection在这类里面我们要用到ReomtingService Attribute来标识我们的服务,简单起见我们只提加一个方法,getImgURL();
文件的代码如下
using System;
using System.Collections.Generic;
using System.Text;
using ESRI.ArcGIS.ADF.Connection.IMS;
using FluorineFx;
namespace IMSFxLib
{
[RemotingService]
public class IMSConnection
{
protected HTTPConnection m_imsConn;
public IMSConnection()
{
m_imsConn = new HTTPConnection("http://localhost/servlet/com.esri.esrimap.Esrimap?ServiceName=wx&ClientVersion=4.0");
m_imsConn.ServiceName = "nj";
m_imsConn.User ="brune_cnBlog";
m_imsConn.Password="brune";
}
public string getImgURL()
{
string s = m_imsConn.Send("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><ARCXML version=\"1.1\"> <REQUEST> <GET_IMAGE> <PROPERTIES> </PROPERTIES> </GET_IMAGE> </REQUEST></ARCXML> ");
return s;
}
}
}
OK我们现在运行IMSFxServer网站,记得把Console.aspx设为起始页,界面如下
点击Call按钮就会出现结果
将output这个 element的url 后面的地址复制到浏览器中看一下
地图出现了,目前为止已经能够通过Fluorine的服务访问IMS了,下篇将介绍如何在Flex使用Fluorine服务,让地图显示在Flash中。