每一个用ArcObjects开发的独立的应用程序都需要用一个合适的license来初始化自己,使得它能够在各个分发的机子上成功的运行。license的配置必须在应用程序开始的时候完成。
一、 License 初始化
license的初始化必须在应用程序开始的时候执行,也就是说在所有的ArcObjects开始使用之前。除了下面两种情况,应用程序都需要配置一个License:
有两种license文件可以用来考虑初始化一个应用程序:产品licenses和扩展licenses。这些licenses可以是Engine Single Use,Desktop Single Use或者是Desktop Concurrent licenses。
二、对于不使用 ArcGIS Extension 应用程序的考虑
一旦一个应用程序用一个license初始化以后,它不能被重新初始化;一个应用程序在它的生命周期内只能用一种license初始化。当用一个license初始化应用程序时,下面几个情况需要考虑:
三、对于使用ArcGIS Extension应用程序的考虑
当一个应用程序用一个的产品license初始化,对license服务器的连接就会产生。后序的对于扩张模块的检入检出都是针对于这个相同的license服务器。
在初始化之前执行对license服务器(desktop Concurrent或者Single Use)和Engine Single Use的查询是可能的,这样可以知道你需要的licenses是否可用。如果使用Engine Single Use license就能满足你所需要的所有的licenses,那么推荐你使用它而优先于Desktop Concurrent和Desktop Single Use licenses。这样就意味着你不会占用可desktop concurrent licenses的个数。
下面的extension是Engine Single Use licenses可用的:
对于使用ArcGIS Controls开发应用程序,表格1描述了每一个控件运行时的license需要。
表格1
四、Engine Single Use的designer扩展
Engine Single Use Designer扩展在使用ArcObjects开发应用程序的时候是必要的,这个扩展模块和其他扩展模块的使用是不一样的:
对于使用ArcGIS Controls开发应用程序,表格2描述了每一个控件在开发时的license需求。
表格2
五、用license初始化应用程序
用license初始化一个应用程序必须按照下面的步骤:
AoInitialize类和IAoInitialize接口是提供给开发人员进行license进行初始化的。
六、检查产品license的可用性
产品license的选择决定了应用程序可以实现的功能。一旦产品license被初始化,在它的生命周期内是不能更改的。
七、检查扩展 license 的可用性
如果应用程序用到了扩展模块的功能,你就需要在应用程序的初始化之前检查扩展模块license的可用性。检查扩展模块的license必须和应用程序最终初始化的产品license的协调进行,因为它们是对应的。
八、初始化应用程序
当我们检查需要的产品license和扩展license都是可用时,应用程序应该用产品的license来初始化。一旦初始化以后,在生命周期内将不能重新被初始化。
九、检出,检入扩展模块
当应用程序需要扩展模块的功能的时候,扩展模块可以被检出。一旦应用程序完成功能以后可以检入。或者扩展模块可用在应用程序初始化的时候直接检出,在应用程序关闭时检入。扩展模块的检入和检出的方法依赖于应用程序初始化的产品license的类型。
十、关闭
在应用程序关闭之前,AOInitialize对象必须被关闭。这样能保证被使用的ESRI libraries被卸下。
十一、 License 初始化失败
如果一个产品和扩展模块检出时失败,license的状态会表明失败的原因。License检出失败有下面几个原因:
文章摘自:http://www.esrichina-bj.cn/library/arcnews16/ArcGIS%20Engine1.htm