初始化ArcEngine,让它更快?

时间:2008-11-14 13:03:16

标签: c++ com arcgis

我目前正在使用ArcEngine(来自ESRI)开发C ++ / COM项目。除了在文档方面几乎没有支持这一事实(SDK就在那里。)无论如何,我想知道这里是否有人有任何经验可以更快地完成ArcEngine的初始化过程。现在只需要30-35秒来初始化引擎。现在我们将运行其中几个应用程序。有人对这个有经验么?

这是一个非常奇怪和奇怪的任务,但ESRI的开发者论坛没有帮助。我无法在谷歌上找到任何东西。

有什么想法吗?

6 个答案:

答案 0 :(得分:1)

自从我上次玩ESRI之后已经差不多十年了,所以我无法帮助你解决任何特定于ArcEngine的事情。

也许你可以汇集实例?在最好的情况下,您可以重用ArcEngine实例,并在完成后将实例返回池中。 如果那是不可能的,你至少可以尝试准备好一些实例,尽管这是否可能和/或有用取决于你的应用程序的具体细节。

答案 1 :(得分:1)

真的是COM吗?在这种情况下,ArcEngine将公开一组COM接口。 COM接口不是魔术,并不是唯一绑定到一个程序。实际上,COM明确支持代理。这是例如DCOM使用;您获得远程服务器的本地代理。

在这种情况下,应该可以编写一个自定义COM代理来伪造初始化内容,但转发其他所有内容。对于您的客户端,代理COM接口除了更快之外是相同的。对于ArcEngine,您的代理可以在两次通话之间等待很长时间。

答案 2 :(得分:1)

我发现有助于让ESRI产品更快启动(不一定是ArcEngine,但这可能适用)的东西是在注册表中定义许可证服务器的端口号(通常为27004)。

HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \许可证\ LICENSE_SERVER HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ ArcInfo的\工作站\ 8.0 \ LICENSE_SERVER

在安装中或通过桌面管理员进行设置时,通常类似于:@ yourserver.name 将其更改为27004@yourserver.name

同样,这可能无法解决您的问题,但如果您不这样做,则值得一试。我发现它可以在我们的环境中加快速度,既可以使用网络上的许可证管理器,也可以使用本地计算机上的硬件加密狗。

答案 3 :(得分:0)

从理解ArcEngine初始化开始,初始化一个特殊的COM环境。

您无法对初始化环境进行任何真正的处理。你能以某种方式存储COM环境并将其传递给其他程序。我目前的想法是:

使用已初始化的ArcEngine在后台运行的Windows服务。程序以某种方式查询服务,服务返回COM环境。这甚至可能吗?

答案 4 :(得分:0)

我对ESRI论坛感到非常悲痛,提供的帮助很少。感觉Arc *开发人员主要依靠自己。

使用ArcEngine + .Net在我们的环境中,应用程序的初始化时间是微不足道的(可能是1秒?) - 您使用的是慢速远程服务器还是仅仅是没有加载网络或地图的引擎? / p>

每当我不得不处理大数据集时,ESRI就会有一头猪。

很高兴看到有关ESRI产品SO的讨论!这里不是很多......

答案 5 :(得分:0)

究竟是什么线需要45秒?如果我不得不做一些通灵调试,我猜你的许可证服务器遇到了问题。

先检查一下。