阅读:3482回复:10
ArcGIS Engine的license部署策略
<P ><FONT size=2><FONT face=Arial>每一个用ArcObjects开发的独立的应用程序都需要用一个合适的license来初始化自己,使得它能够在各个分发的机子上成功的运行。license的配置必须在应用程序开始的时候完成。</FONT></FONT></P>
<P ><b>一、 License 初始化 </b></P> <P ><FONT size=2><FONT face=Arial>license的初始化必须在应用程序开始的时候执行,也就是说在所有的ArcObjects开始使用之前。除了下面两种情况,应用程序都需要配置一个License: </FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果应用程序不是一个独立的可执行文件,换句话说,如果应用程序是一个dll程序。</FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果应用程序是一个ArcMap或者是第三方产品的扩展模块。 </FONT></FONT></LI></UL> <P ><FONT size=2><FONT face=Arial>有两种license文件可以用来考虑初始化一个应用程序:产品licenses和扩展licenses。这些licenses可以是Engine Single Use,Desktop Single Use或者是Desktop Concurrent licenses。</FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>Engine Single License是提供到达ArcGIS Engine或者是带Geodatabase编辑功能的ArcGIS Engine。</FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>Desktop Concurrent licenses提供到达桌面的concurrent ArcView,ArcEditor和ArcInfo。 </FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>Desktop Single Use licenses和Desktop Concurrent licenses使用相同的技术,提供到达Single Use ArcView,ArcEditor和ArcInfo。它可以和Desktop Concurrent licenses相同的对待。</FONT></FONT> </LI></UL> <P>二、对于不使用 ArcGIS Extension 应用程序的考虑 </P> <P align=justify><FONT size=2><FONT face=Arial>一旦一个应用程序用一个license初始化以后,它不能被重新初始化;一个应用程序在它的生命周期内只能用一种license初始化。当用一个license初始化应用程序时,下面几个情况需要考虑:</FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>应用程序能被运行的产品license的类型。例如,一个企业级的带geodatabase编辑功能的应用程序在ArcGIS Engine license或者ArcView license就不能运行。它只能够在用ArcGIS Engine with Geodatabase Editing license,ArcEditor或者ArcInfo license情况下才能运行。</FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>对于应用程序可用的产品license的类型。例如,一个应用程序在ArcGIS Engine license下可以被运行,当然,在ArcView,ArcEditor和ArcInfo license情况下也可以运行。但是,你可能不想被这样的应用程序下消耗掉一个ArcInfo的license。 </FONT></FONT></LI></UL> <P>三、对于使用ArcGIS Extension应用程序的考虑 </P> <P ><FONT size=2><FONT face=Arial><FONT size=2><FONT face=Arial>当一个应用程序用一个的产品license初始化,对license服务器的连接就会产生。后序的对于扩张模块的检入检出都是针对于这个相同的license服务器。</FONT></FONT></FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果一个应用程序是用Desktop Concurrent License初始化的话,应用程序后来就只能到达Desktop Concurrent license服务器和它的扩展licenses。</FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果一个应用程序是用Desktop Single Use license初始化的话,应用程序后来就只能到达Single Use license服务器和它的扩展licenses </FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果一个应用程序是用Engine Single Use license初始化的话,应用程序后来就只能到达Engine Single Use扩展的licenses。</FONT></FONT> </LI></UL> <P ><FONT size=2><FONT face=Arial>在初始化之前执行对license服务器(desktop Concurrent或者Single Use)和Engine Single Use的查询是可能的,这样可以知道你需要的licenses是否可用。如果使用Engine Single Use license就能满足你所需要的所有的licenses,那么推荐你使用它而优先于Desktop Concurrent和Desktop Single Use licenses。这样就意味着你不会占用可desktop concurrent licenses的个数。</FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>下面的extension是Engine Single Use licenses可用的:</FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>3D Analyst</FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>Spatial Analyst </FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>Street Map</FONT></FONT> </LI></UL> <P align=left><FONT size=2><FONT face=Arial>对于使用ArcGIS Controls开发应用程序,表格1描述了每一个控件运行时的license需要。</FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>表格1</FONT></FONT></P> <P align=center><FONT face=Arial size=2><IMG src="http://www.esrichina-bj.cn/library/chinanews/image/ArcGIS%20Engine1.gif"></FONT></P> <P>四、Engine Single Use的designer扩展</P> <P align=left><FONT size=2><FONT face=Arial>Engine Single Use Designer扩展在使用ArcObjects开发应用程序的时候是必要的,这个扩展模块和其他扩展模块的使用是不一样的: </FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>这个扩展模块仅仅在设计和开发应用程序的时候需要,它从来不会在运行的时候需要。</FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>这个扩展模块不需要检出,它会自动的为你检出。</FONT></FONT> </LI></UL> <P align=left><FONT size=2><FONT face=Arial>对于使用ArcGIS Controls开发应用程序,表格2描述了每一个控件在开发时的license需求。</FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>表格2</FONT></FONT></P> <P align=center><FONT face=Arial size=2><IMG src="http://www.esrichina-bj.cn/library/chinanews/image/arcgis%20engine2%20.gif"></FONT></P> <P>五、用license初始化应用程序</P> <P align=left><FONT size=2><FONT face=Arial>用license初始化一个应用程序必须按照下面的步骤:</FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>1. 检查产品license是否可用 </FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>2. 检查扩展license是否可用(如果需要) </FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>3. 用产品license初始化应用程序</FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>4. 如果需要,执行扩展的检出和检入</FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>5. 关闭应用程序</FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>AoInitialize类和IAoInitialize接口是提供给开发人员进行license进行初始化的。</FONT></FONT></P> <P>六、检查产品license的可用性</FONT></FONT></P> <P align=left><FONT size=2><FONT face=Arial>产品license的选择决定了应用程序可以实现的功能。一旦产品license被初始化,在它的生命周期内是不能更改的。</FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果你需要的产品license不可用,你可以选择用更高的产品license来初始化。 </FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果没有可用的license,应用程序应该通知使用人员,允许使用人员去解决这个问题或者退出应用程序。</FONT></FONT> </LI></UL> <P>七、检查扩展 license 的可用性 </b></P> <P align=left><FONT size=2><FONT face=Arial>如果应用程序用到了扩展模块的功能,你就需要在应用程序的初始化之前检查扩展模块license的可用性。检查扩展模块的license必须和应用程序最终初始化的产品license的协调进行,因为它们是对应的。</FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果应用程序需要的扩展license是不可用的,应用程序应该通知用户,并退出应用程序。 </FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果扩展模块的功能对于应用程序的运行不是必须的,当扩展模块license是不可用时,应用程序应该使依赖于扩展模块的功能不能使用。</FONT></FONT> </LI></UL> <P>八、初始化应用程序 </b></P> <P align=left><FONT size=2><FONT face=Arial>当我们检查需要的产品license和扩展license都是可用时,应用程序应该用产品的license来初始化。一旦初始化以后,在生命周期内将不能重新被初始化。</FONT></FONT></P> <P>九、检出,检入扩展模块 </b></P> <P align=left><FONT size=2><FONT face=Arial>当应用程序需要扩展模块的功能的时候,扩展模块可以被检出。一旦应用程序完成功能以后可以检入。或者扩展模块可用在应用程序初始化的时候直接检出,在应用程序关闭时检入。扩展模块的检入和检出的方法依赖于应用程序初始化的产品license的类型。</FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果应用程序用Engine Single Use licenses初始化,被应用程序使用的任何扩展模块也将是Engine Single Use的,因此任何扩展模块都可以在应用程序初始化后直接检出,在应用程序关闭时检入。 </FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果应用程序是用license服务器初始化的,而且扩展模块对于应用程序的正确运行是必须的话,那么扩展模块可以在应用程序初始化后直接检出,在应用程序关闭时检入。</FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>如果应用程序是用license服务器初始化的,扩展模块的功能对于应用程序是可选的话,那么扩展模块可以在应用程序初始化后直接检出,也可以在扩展模块的功能需要的时候检出。当然当扩展模块检入的时候,相关扩展模块的功能将不能用。</FONT></FONT> </LI></UL> <P>十、关闭 </b></P> <P align=left><FONT size=2><FONT face=Arial>在应用程序关闭之前,AOInitialize对象必须被关闭。这样能保证被使用的ESRI libraries被卸下。</FONT></FONT></P> <P>十一、 License 初始化失败 </b></P> <P align=left><FONT size=2><FONT face=Arial>如果一个产品和扩展模块检出时失败,license的状态会表明失败的原因。License检出失败有下面几个原因:</FONT></FONT></P> <UL> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>产品没有得到许可 </FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>license不可用,因为它正在被使用(仅仅指得是Desktop Concurrent Licenses)</FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>不可预制的失败由于系统管理的原因</FONT></FONT> <LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>license已经被初始化。一个应用程序在它的生命周期之内不能更改license的初始化</FONT></FONT> </LI></UL> |
|
|
1楼#
发布于:2007-07-20 18:06
西门吹血,有了鼓风机,就不用吹啦!
|
|
2楼#
发布于:2007-04-19 00:21
<P>我用VB6运行一个arcgis engine 产品时,显示“这是一个无效的Arcgis engine产品,程序不能运行”这是怎么回事???</P>
|
|
|
3楼#
发布于:2007-04-14 10:13
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
|
|
4楼#
发布于:2004-10-27 18:52
<P>好文章</P>
|
|
5楼#
发布于:2004-10-26 10:04
收藏啦
|
|
6楼#
发布于:2004-10-26 09:43
<P>晕</P>
|
|
7楼#
发布于:2004-08-15 22:53
ok<img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
8楼#
发布于:2004-08-07 13:10
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em06.gif" />
|
|
9楼#
发布于:2004-08-06 08:35
xiexie
|
|
上一页
下一页