2008-11-14 82 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秒?如果我必須進行一些心理調試,我會猜測您的許可證服務器出現問題。

先檢查一下。