我目前正在使用ArcEngine(来自ESRI)开发C ++ / COM项目。除了在文档方面几乎没有支持这一事实(SDK就在那里。)无论如何,我想知道这里是否有人有任何经验可以更快地完成ArcEngine的初始化过程。现在只需要30-35秒来初始化引擎。现在我们将运行其中几个应用程序。有人对这个有经验么?
这是一个非常奇怪和奇怪的任务,但ESRI的开发者论坛没有帮助。我无法在谷歌上找到任何东西。
有什么想法吗?
答案 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秒?如果我不得不做一些通灵调试,我猜你的许可证服务器遇到了问题。
先检查一下。