|
阅读:1566回复:5
[讨论][转帖]ArcGIS Server开发技术交流
<P align=left><FONT face="Times New Roman"><B >1. </B><B >ArcGIS Engine</B></FONT><B >和</B><B ><FONT face="Times New Roman">ArcGIS Server</FONT></B><B >的交叉点,是否可以利用</B><B ><FONT face="Times New Roman">ArcGIS Engine</FONT></B><B >直接开发成</B><B ><FONT face="Times New Roman">COM</FONT></B><B >组件,然后由</B><B ><FONT face="Times New Roman">ArcGIS Server</FONT></B><B >调用,或者先通过</B><B ><FONT face="Times New Roman">Web Services</FONT></B><B >的方式调用,再通过</B><B ><FONT face="Times New Roman">ArcGIS Server</FONT></B><B >调用</B><B ><FONT face="Times New Roman">Web Services<P></P></FONT></B> </P>
<P >可以利用<FONT face="Times New Roman">Engine</FONT>开发<FONT face="Times New Roman">COM</FONT>组件的方式,然后由<FONT face="Times New Roman">ArcGIS Server</FONT>直接调用,或者通过类的方式来集成,(但是<FONT face="Times New Roman">Engine</FONT>提供的组件的实现和逻辑应该分开,即<FONT face="Times New Roman">Engine</FONT>开发组件不能带有界面,而只能通过<FONT face="Times New Roman">Engine</FONT>来实现封装特定功能的组件,因为<FONT face="Times New Roman">IE</FONT>和开发<FONT face="Times New Roman">COM</FONT>组件的界面无法融合),同时,<FONT face="Times New Roman">Engine</FONT>提供的组件必须提供符合<FONT face="Times New Roman">Server</FONT>要求的统一接口。<P></P> </P> <P >如果部署在一台服务器上,也可以通过<FONT face="Times New Roman">Web Services</FONT>的方式进行集成。<P></P> </P> <P ><P><FONT face="Times New Roman"> </FONT></P> </P> <P ><B ><FONT face="Times New Roman">2. </FONT></B><B >开发</B><B ><FONT face="Times New Roman">Web</FONT></B><B >应用程序,是否可以只采用</B><B ><FONT face="Times New Roman">ArcGIS Server</FONT></B><B >,而不需要</B><B ><FONT face="Times New Roman">ArcGIS Engine</FONT></B><B >。如果使用</B><B ><FONT face="Times New Roman">Engine</FONT></B><B >的话,优势主要体现在哪些方面?</B><B ><P></P></B> </P> <P >开发<FONT face="Times New Roman">Web</FONT>应用程序,可以只采用<FONT face="Times New Roman">ArcGIS Server</FONT>,可以不需要<FONT face="Times New Roman">ArcGIS Engine</FONT>。因为<FONT face="Times New Roman">Server</FONT>和<FONT face="Times New Roman">Engine</FONT>底层的<FONT face="Times New Roman">API</FONT>是相同的。而采用何种架构模式取决于用户需求和具体的应用。两者实现的方式有一定的差别。<P></P> </P> <P ><B ><P><FONT face="Times New Roman"> </FONT></P></B> </P> <P ><FONT face="Times New Roman"><B >3. </B><B >ArcGIS Server</B></FONT><B >和</B><B ><FONT face="Times New Roman">ArcIMS</FONT></B><B >的关系。</B><B ><FONT face="Times New Roman">ArcGIS Server</FONT></B><B >是否可以取代</B><B ><FONT face="Times New Roman">ArcIMS</FONT></B><B >,如果不能的话,它们的侧重点各是什么?</B><B ><FONT face="Times New Roman">ArcGIS Server</FONT></B><B >是否可以用于地图数据发布?</B><B ><P></P></B> </P> <P ><FONT face="Times New Roman">ArcGIS Server</FONT>可以代替<FONT face="Times New Roman">ArcIMS</FONT>,但是必须有高效的服务器,同时实现很好的负载平衡。<FONT face="Times New Roman">ArcIMS</FONT>适合高性能的地图数据发布,它提供的功能比较简单(只具备<FONT face="Times New Roman">Viewer</FONT>的操作),但是速度明显优于<FONT face="Times New Roman">ArcGIS Server</FONT>。而<FONT face="Times New Roman">ArcGIS Server</FONT>可以实现所有<FONT face="Times New Roman">Engine</FONT>可以实现的功能,包括一些高级的<FONT face="Times New Roman">GIS</FONT>功能,比如空间分析等<P></P> </P> <P ><B ><P><FONT face="Times New Roman"> </FONT></P></B> </P> <P ><FONT face="Times New Roman"><B >4. </B><B >ArcGIS Server</B></FONT><B >部署方案</B><B ><P></P></B> </P> <P >采用<FONT face="Times New Roman">ArcGIS Server</FONT>开发,部署时推荐使用<FONT face="Times New Roman">Windows 2003 Server</FONT>,有利于负载平衡。也可以采用<FONT face="Times New Roman">2000 Pro/XP</FONT>,但是最好采用<FONT face="Times New Roman">Server</FONT>平台<P></P> </P> <P ><P><FONT face="Times New Roman"> </FONT></P> </P> <P ><FONT face="Times New Roman"><B >5. </B><B >Server Objects<P></P></B></FONT> </P> <P ><B ><P><FONT face="Times New Roman"> </FONT></P></B> </P> <P align=left>A server object is a coarse-grained ArcObjects component that runs in a process on the SOC machine. ArcGIS Server comes with two out-of-the-box server objects:<P></P> </P> <P align=left>. <I>esriCarto.MapServer<P></P></I> </P> <P align=left>. <I>esriLocation.GeocodeServer<P></P></I> </P> <P ><B ><P><FONT face="Times New Roman"> </FONT></P></B> </P> <P ><B ><P><FONT face="Times New Roman"> </FONT></P></B> </P> <P ><B ><FONT face="Times New Roman">6. </FONT></B><B >池式和状态</B><B ><P></P></B> </P> <P align=left><B >Pooled server objects are expected to be used in a stateless manner</B>. As a developer, you are responsible for making sure that the state of the server object, or its associated objects, has not changed when you return the object to the pool (by releasing its context via <I>ReleaseServerContext</I>).Each time a user or application session makes a request to create a pooled server object, it’s indeterminate which running instance it will get out of the pool; therefore, all instances must have the same state or applications will experience inconsistent behavior.<P></P> </P> <P align=left><B >Non-pooled server objects can be used in a stateful manner</B>. Since nonpooled server objects and their contexts are destroyed when you release them, you need to hold onto them for as long as the state is important to you. When you call <I>ReleaseServerContext</I>, or you allow the server context to go out of scope, the server object and its context are destroyed, purging any state changes you made.<P></P> </P> <P ><B ><P><FONT face="Times New Roman"> </FONT></P></B> </P> <P ><B ><FONT face="Times New Roman">7. </FONT></B><B >状态管理</B><B ><P></P></B> </P> <P >有状态(状态发生改变的时候)——非池式的服务器对象(或者池式的服务器对象,但在释放返回服务器上下文的时候能恢复的原来起始的状态,这种情况比较少)<P></P> </P> <P ><P><FONT face="Times New Roman"> </FONT></P> </P> <P >无状态(状态不改变)——池式的服务器对象(也可以使用非池式的服务器对象,但不能发生状态的改变,这种情况比较少)<P></P> </P> <P ><B ><P><FONT face="Times New Roman"> </FONT></P></B> </P> <P ><B ><FONT face="Times New Roman">8. </FONT></B><B >状态改变</B><B ><P></P></B> </P> <P >调用服务器对象状态的方法:从地图的服务器对象中增加<FONT face="Times New Roman">/</FONT>删除图层<P></P> </P> <P ><FONT face="Times New Roman"> </FONT>改变服务器对象中图层的<FONT face="Times New Roman">Renderer<P></P></FONT> </P> <P >调用环境状态的方法:<P></P> </P> <P ><FONT face="Times New Roman"> </FONT>可以作用于池式<FONT face="Times New Roman">/</FONT>非池式的服务器对象,但是在池式的服务器对象中,应用程序在执行操作前不应该依赖处于特殊状态的环境;如果应用程序依赖于环境的状态时,在执行操作前要求设置所需要的环境状态<P></P> </P> <P ><P><FONT face="Times New Roman"> </FONT></P> </P> <P ><FONT face="Times New Roman"><B >9. </B><B >SCALABILITY</B></FONT><B >的关键在于</B><B ><FONT face="Times New Roman">GIS Server</FONT></B><B >的状态性,保持应用程序</B><B ><FONT face="Times New Roman">Scalability</FONT></B><B >的标准</B><B ><P></P></B> </P> <P >使用无状态的<FONT face="Times New Roman">GIS Server<P></P></FONT> </P> <P >池式的服务器对象<P></P> </P> <P >减少应用程序控制服务器对象的时间。及时地释放服务器对象,不能仅仅依赖于<FONT face="Times New Roman">.NET</FONT>自带的垃圾回收系统 </P> |
|
|
|
1楼#
发布于:2005-07-25 09:22
<img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" />
|
|
|
|
2楼#
发布于:2005-07-24 23:18
<DIV class=quote><B>以下是引用<I>coolice</I>在2005-3-16 16:22:15的发言:</B><BR>顶,可惜目前研究的人太少。。。。</DIV>
<P>最近在忙这个,使用的是.net adf,有兴趣交流下</P> |
|
|
|
3楼#
发布于:2005-03-16 16:22
顶,可惜目前研究的人太少。。。。
|
|
|
4楼#
发布于:2005-03-15 08:45
ding!<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
5楼#
发布于:2005-03-04 12:57
<DIV class=postText><P><FONT style="FONT-SIZE: 9pt">1. ArcGIS Server开发模式与我们平时开发模式的区别和联系,理解什么是ArcGIS Server,Web编程(服务端和客户端如何交互)等关键概念</FONT><FONT style="FONT-SIZE: 9pt"> </FONT><FONT style="FONT-SIZE: 8pt" size=3><P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><FONT style="FONT-SIZE: 9pt">2. </FONT><FONT style="FONT-SIZE: 9pt">理解ArcGIS Server体系结构, </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">GIS服务器组成:GIS Server=SOM(Windows服务,用来管理一组服务器容器中的服务器对象)+SOC(SOM启动的一个进程,宿主一个或多个服务器对象)</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">如何部署 </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">ArcObjects不需要安装在Web/应用服务器层</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">服务器应用创建和使用运行在GIS服务器上的ArcObjects对象</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">对象远程调用是基于DCOM对象的RPC(在TCP/IP上的二进制) </FONT></P><P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><FONT style="FONT-SIZE: 9pt">3. </FONT><FONT style="FONT-SIZE: 9pt">理解ArcGIS Server(ADF+AO),ArcGIS Engine,AO,ADF之间的关系 </FONT></P><P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><FONT style="FONT-SIZE: 9pt">4. </FONT><FONT style="FONT-SIZE: 9pt">理解ArcGIS,ArcSDE,ArcIMS之间的关系 </FONT></P><P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><FONT style="FONT-SIZE: 9pt">5. </FONT><FONT style="FONT-SIZE: 9pt">理解ArcGIS Server对象模型间的关系(ADF.NET Web控件)</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">1. WebControl </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">2.Impersonation 2.AGSWebControl(3.Map,3.OverViewMap,3.PageLayout)2.ScaleBar 2.TOC 2.ToolBar 2.PageLayout </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">//WebMap WebPageLayout WebToc </FONT></P><P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><FONT style="FONT-SIZE: 9pt">6. Server API开发是ArcGIS Server开发的核心(编程模式),特别是它们之间的关系</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 39pt; TEXT-INDENT: -21pt"><FONT style="FONT-SIZE: 9pt">1) </FONT><FONT style="FONT-SIZE: 9pt">服务器对象(服务器对象生存在服务器上下文中),如何获得,释放服务器对象 </FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 18pt"><FONT style="FONT-SIZE: 9pt"> SOM=ServerConnectio.ServerObjectManager</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 18pt"><FONT style="FONT-SIZE: 9pt"> SC=SOM.CreateServerContext (“USA”,“MapServer”) </FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 18pt"><FONT style="FONT-SIZE: 9pt"> SO=SC.ServerObject </FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 18pt"> </P><P 0cm 0cm 0pt; TEXT-INDENT: 18pt"><FONT style="FONT-SIZE: 9pt"> SC.ReleaseServerContext(池式的服务器对象没有析构,只是返回到池中) </FONT></P><P 0cm 0cm 0pt 39pt; TEXT-INDENT: -21pt"><FONT style="FONT-SIZE: 9pt">2) </FONT><FONT style="FONT-SIZE: 9pt">状态管理(用于维护客户端的状态信息):无状态(只读,可以和其他用户并发共享服务器对象)和有状态(读写),状态和池式的关系(池式的服务器对象只能在无状态行为中使用) </FONT></P><P 0cm 0cm 0pt 39pt; TEXT-INDENT: -21pt"><FONT style="FONT-SIZE: 9pt">3) </FONT><FONT style="FONT-SIZE: 9pt">池式(M:N,服务器对象事先创建,被多个会话共享)与非池式(1:1)的概念,和服务器上下文之间的关系 </FONT></P><P 0cm 0cm 0pt 39pt"><FONT style="FONT-SIZE: 9pt">池式:WebMap webmap=Map1.CreateWebMap (); //C# </FONT></P><P 0cm 0cm 0pt 39pt"><FONT style="FONT-SIZE: 9pt"> Dim webmap as WebMap=Map1.CreateWebMap (); //VB.NET</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 39pt"><FONT style="FONT-SIZE: 9pt"> Try {</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 81pt; TEXT-INDENT: 3pt"><FONT style="FONT-SIZE: 9pt">//Use the WebMap Object</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 39pt"><FONT style="FONT-SIZE: 9pt"> }</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 39pt"><FONT style="FONT-SIZE: 9pt"> Finally {</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 39pt"><FONT style="FONT-SIZE: 9pt"> webmap.Dispose (); //显式释放,必须释放 </FONT></P><P 0cm 0cm 0pt 39pt"><FONT style="FONT-SIZE: 9pt"> }</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 39pt; TEXT-INDENT: -21pt"><FONT style="FONT-SIZE: 9pt">4) </FONT><FONT style="FONT-SIZE: 9pt">服务器上下文(运行一组服务器对象的服务器上的保留空间,一个进程,管理控件的状态,在同一网页的控件之间可以共享) </FONT></P><P 0cm 0cm 0pt"><FONT style="FONT-SIZE: 9pt"> </FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><FONT style="FONT-SIZE: 9pt">7. </FONT><FONT style="FONT-SIZE: 9pt">理解Web控件与便利类(直接实例化服务器上下文)的关系 </FONT></P><P 0cm 0cm 0pt 21pt"><FONT style="FONT-SIZE: 9pt">Map(Overview)——WebMap(提供map和overview map的业务逻辑) </FONT></P><P 0cm 0cm 0pt 21pt"><FONT style="FONT-SIZE: 9pt">PageLayout——WebPageLayout</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 21pt"><FONT style="FONT-SIZE: 9pt">Toc——WebToc</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><FONT style="FONT-SIZE: 9pt">8. </FONT><FONT style="FONT-SIZE: 9pt">安全性(agsadmins,agsusers) </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">Web应用程序的安全性</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">ArcGIS Server的安全性</FONT><FONT style="FONT-SIZE: 9pt"> </FONT></P><P 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><FONT style="FONT-SIZE: 9pt">9. </FONT><FONT style="FONT-SIZE: 9pt">如何部署 </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">开发:2000/XP Pro,部署(推荐):Windows 2003 Server </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">在部署的机子上安装ADF.NET运行时 </FONT></P><P 0cm 0cm 0pt 18pt"><FONT style="FONT-SIZE: 9pt">使用ASP.NET的部署方法 (拷贝项目,设置虚拟目录等)</FONT> </P></FONT>
<p></DIV> |
|
|