2008-11-14 44 views
0

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

它是一个非常可怕而奇怪的任务,但ESRI的开发人员论坛没有任何帮助。我无法在谷歌上找到任何东西。

任何想法?

回答

1

自从我上一次使用ESRI的东西以来已经差不多十年了,所以我无法帮助您处理任何特定于ArcEngine的事情。

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

0

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

你永远不会在初始化环境中获得任何形式的真实句柄。你能以某种方式存储COM环境并将其传递给其他程序。我目前的想法是:

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

1

它真的是COM吗?在这种情况下,ArcEngine将暴露一组COM接口。 COM接口并不神奇,并且不能唯一地绑定到一个程序。事实上,COM对代理有明确的支持。这是例如由DCOM使用;您将获得远程服务器的本地代理。

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

0

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

使用ArcEngine + .Net在我们的环境中,应用程序的初始化时间微乎其微(可能是1秒?) - 您使用的是慢速远程服务器还是仅仅是没有网络或地图加载的引擎?当我不得不处理大型数据集时,ESRI有一头猪。

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

+0

初始化时间取决于正在使用的SDK,我认为C++只是过时和破碎。 ESRI无法解释为什么C++的初始化时间如此之高,我认为它只是草率的编码。 – UberJumper 2009-01-19 15:27:05

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 更改为[email protected]

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

0

究竟哪条线需要45秒?如果我必须进行一些心理调试,我会猜测您的许可证服务器出现问题。

先检查一下。