• arcengine License部署


    每一个用ArcObjects开发的独立的应用程序都需要用一个合适的license来初始化自己,使得它能够在各个分发的机子上成功的运行。license的配置必须在应用程序开始的时候完成。

    一、 License 初始化

    license的初始化必须在应用程序开始的时候执行,也就是说在所有的ArcObjects开始使用之前。除了下面两种情况,应用程序都需要配置一个License:

    • 如果应用程序不是一个独立的可执行文件,换句话说,如果应用程序是一个dll程序。
    • 如果应用程序是一个ArcMap或者是第三方产品的扩展模块。

    有两种license文件可以用来考虑初始化一个应用程序:产品licenses和扩展licenses。这些licenses可以是Engine Single Use,Desktop Single Use或者是Desktop Concurrent licenses。

    • Engine Single License是提供到达ArcGIS Engine或者是带Geodatabase编辑功能的ArcGIS Engine。
    • Desktop Concurrent licenses提供到达桌面的concurrent ArcView,ArcEditor和ArcInfo。
    • Desktop Single Use licenses和Desktop Concurrent licenses使用相同的技术,提供到达Single Use ArcView,ArcEditor和ArcInfo。它可以和Desktop Concurrent licenses相同的对待。

    二、对于不使用 ArcGIS Extension 应用程序的考虑

    一旦一个应用程序用一个license初始化以后,它不能被重新初始化;一个应用程序在它的生命周期内只能用一种license初始化。当用一个license初始化应用程序时,下面几个情况需要考虑:

    • 应用程序能被运行的产品license的类型。例如,一个企业级的带geodatabase编辑功能的应用程序在ArcGIS Engine license或者ArcView license就不能运行。它只能够在用ArcGIS Engine with Geodatabase Editing license,ArcEditor或者ArcInfo license情况下才能运行。
    • 对于应用程序可用的产品license的类型。例如,一个应用程序在ArcGIS Engine license下可以被运行,当然,在ArcView,ArcEditor和ArcInfo license情况下也可以运行。但是,你可能不想被这样的应用程序下消耗掉一个ArcInfo的license。

    三、对于使用ArcGIS Extension应用程序的考虑

    当一个应用程序用一个的产品license初始化,对license服务器的连接就会产生。后序的对于扩张模块的检入检出都是针对于这个相同的license服务器。

    • 如果一个应用程序是用Desktop Concurrent License初始化的话,应用程序后来就只能到达Desktop Concurrent license服务器和它的扩展licenses。
    • 如果一个应用程序是用Desktop Single Use license初始化的话,应用程序后来就只能到达Single Use license服务器和它的扩展licenses
    • 如果一个应用程序是用Engine Single Use license初始化的话,应用程序后来就只能到达Engine Single Use扩展的licenses。

    在初始化之前执行对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可用的:

    • 3D Analyst
    • Spatial Analyst
    • Street Map

    对于使用ArcGIS Controls开发应用程序,表格1描述了每一个控件运行时的license需要。

    表格1

    四、Engine Single Use的designer扩展

    Engine Single Use Designer扩展在使用ArcObjects开发应用程序的时候是必要的,这个扩展模块和其他扩展模块的使用是不一样的:

    • 这个扩展模块仅仅在设计和开发应用程序的时候需要,它从来不会在运行的时候需要。
    • 这个扩展模块不需要检出,它会自动的为你检出。

    对于使用ArcGIS Controls开发应用程序,表格2描述了每一个控件在开发时的license需求。

    表格2

    五、用license初始化应用程序

    用license初始化一个应用程序必须按照下面的步骤:

    1. 检查产品license是否可用
    2. 检查扩展license是否可用(如果需要)
    3. 用产品license初始化应用程序
    4. 如果需要,执行扩展的检出和检入
    5. 关闭应用程序

    AoInitialize类和IAoInitialize接口是提供给开发人员进行license进行初始化的。

    六、检查产品license的可用性

    产品license的选择决定了应用程序可以实现的功能。一旦产品license被初始化,在它的生命周期内是不能更改的。

    • 如果你需要的产品license不可用,你可以选择用更高的产品license来初始化。
    • 如果没有可用的license,应用程序应该通知使用人员,允许使用人员去解决这个问题或者退出应用程序。

    七、检查扩展 license 的可用性

    如果应用程序用到了扩展模块的功能,你就需要在应用程序的初始化之前检查扩展模块license的可用性。检查扩展模块的license必须和应用程序最终初始化的产品license的协调进行,因为它们是对应的。

    • 如果应用程序需要的扩展license是不可用的,应用程序应该通知用户,并退出应用程序。
    • 如果扩展模块的功能对于应用程序的运行不是必须的,当扩展模块license是不可用时,应用程序应该使依赖于扩展模块的功能不能使用。

    八、初始化应用程序

    当我们检查需要的产品license和扩展license都是可用时,应用程序应该用产品的license来初始化。一旦初始化以后,在生命周期内将不能重新被初始化。

    九、检出,检入扩展模块

    当应用程序需要扩展模块的功能的时候,扩展模块可以被检出。一旦应用程序完成功能以后可以检入。或者扩展模块可用在应用程序初始化的时候直接检出,在应用程序关闭时检入。扩展模块的检入和检出的方法依赖于应用程序初始化的产品license的类型。

    • 如果应用程序用Engine Single Use licenses初始化,被应用程序使用的任何扩展模块也将是Engine Single Use的,因此任何扩展模块都可以在应用程序初始化后直接检出,在应用程序关闭时检入。
    • 如果应用程序是用license服务器初始化的,而且扩展模块对于应用程序的正确运行是必须的话,那么扩展模块可以在应用程序初始化后直接检出,在应用程序关闭时检入。
    • 如果应用程序是用license服务器初始化的,扩展模块的功能对于应用程序是可选的话,那么扩展模块可以在应用程序初始化后直接检出,也可以在扩展模块的功能需要的时候检出。当然当扩展模块检入的时候,相关扩展模块的功能将不能用。

    十、关闭

    在应用程序关闭之前,AOInitialize对象必须被关闭。这样能保证被使用的ESRI libraries被卸下。

    十一、 License 初始化失败

    如果一个产品和扩展模块检出时失败,license的状态会表明失败的原因。License检出失败有下面几个原因:

    • 产品没有得到许可
    • license不可用,因为它正在被使用(仅仅指得是Desktop Concurrent Licenses)
    • 不可预制的失败由于系统管理的原因
    • license已经被初始化。一个应用程序在它的生命周期之内不能更改license的初始化

    文章摘自:http://www.esrichina-bj.cn/library/arcnews16/ArcGIS%20Engine1.htm

  • 相关阅读:
    c++ isdigit函数
    c++ swap函数
    1.2Hello, World!的大小
    1.2整型与布尔型的转换
    1.2打印ASCII码
    leetcode[170]Two Sum III
    leetcode[167]Two Sum II
    leetcode[1]Two Sum
    leetcode[2]Add Two Numbers
    leetcode[3]Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/hl3292/p/1904347.html
Copyright © 2020-2023  润新知