0

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

这是一个非常奇怪和奇怪的任务,但 ESRI 的开发者论坛无济于事。我在谷歌上找不到任何东西。

有任何想法吗?

4

6 回答 6

1

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

HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\License\LICENSE_SERVER HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\ArcInfo\Workstation\8.0\LICENSE_SERVER

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

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

于 2009-02-23T17:49:13.907 回答
1

自从我上次玩 ESRI 以来已经快十年了,所以对于 ArcEngine 的任何特定内容我都无能为力。

也许您可以合并实例?在最佳情况下,您将能够重用 ArcEngine 实例,并在完成后将实例返回到池中。如果这不可能,您至少可以尝试准备好多个实例,尽管这是否可能和/或有用在很大程度上取决于您的应用程序的具体情况。

于 2008-11-14T13:26:02.677 回答
1

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

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

于 2008-11-14T14:48:55.007 回答
0

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

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

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

于 2008-11-14T13:44:31.127 回答
0

ESRI 论坛提供的帮助很少,我感到很伤心。感觉就像 Arc* 开发人员在很大程度上是靠自己的。

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

每当我不得不处理大型数据集时,ESRI 都会遇到麻烦。

很高兴看到一些关于 ESRI 产品 SO 的讨论!这里还没有很多...

于 2008-12-23T03:44:53.203 回答
0

究竟哪条线路需要 45 秒?如果我不得不做一些心理调试,我猜你的许可证服务器遇到了问题。

先检查一下。

于 2009-07-06T23:12:42.143 回答