Инициализация ArcEngine, сделать это быстрее? - PullRequest
0 голосов
/ 14 ноября 2008

В настоящее время я работаю над проектом C ++ / COM, используя ArcEngine (From ESRI). Помимо того факта, что практически нет никакой поддержки с точки зрения документации (SDK есть.) В любом случае, мне интересно, имел ли кто-нибудь здесь какой-либо опыт в ускорении процесса инициализации ArcEngine. Сейчас для инициализации двигателя требуется 30-35 секунд. Теперь мы собираемся запустить несколько из этих приложений. У кого-нибудь есть опыт, с этим?

Это очень странная и странная задача, но форумы разработчиков ESRI не помогают. и я не могу найти что-нибудь в Google.

Есть идеи?

Ответы [ 6 ]

1 голос
/ 23 февраля 2009

Что мне показалось полезным для ускорения запуска продуктов 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

Опять же, это может не решить вашу проблему, но если вы этого не делаете, стоит попробовать. Я обнаружил, что это ускоряет работу в нашей среде, как с помощью менеджера лицензий в сети, так и с помощью аппаратного ключа на локальной машине.

1 голос
/ 14 ноября 2008

Это действительно COM? В этом случае ArcEngine будет предоставлять набор COM-интерфейсов. COM-интерфейсы не волшебны и не связаны однозначно с одной программой. На самом деле, COM имеет явную поддержку прокси. Это, например, используется DCOM; Вы получаете локальный прокси для удаленного сервера.

В этом случае должна быть возможность написать собственный COM-прокси, который подделывает материал инициализации, но пересылает все остальное. Что касается вашего клиента, то COM-интерфейс прокси идентичен, за исключением более быстрого. Что касается ArcEngine, ваш прокси может довольно долго ждать между вызовами.

1 голос
/ 14 ноября 2008

Прошло уже почти десять лет с тех пор, как я в последний раз играл с ESRI, поэтому я не могу помочь вам с чем-то конкретным для ArcEngine.

Может быть, вы можете объединить экземпляры? В лучшем случае вы сможете повторно использовать экземпляры ArcEngine и можете вернуть экземпляр обратно в пул после того, как с ним покончено. Если это невозможно, вы можете, по крайней мере, попытаться подготовить несколько экземпляров, готовых к работе, хотя то, возможно ли это и / или полезно, во многом зависит от особенностей вашего приложения.

0 голосов
/ 07 июля 2009

Точно какая линия занимает 45 секунд? Если бы мне пришлось делать какую-то психическую отладку, я бы предположил, что у вас проблема с вашим сервером лицензий.

Сначала проверьте это.

0 голосов
/ 23 декабря 2008

У меня было много горя на форумах ESRI, которые оказывали очень мало помощи. Такое ощущение, что разработчики Arc * в основном сами по себе.

Используя ArcEngine + .Net, время инициализации приложения в нашей среде было тривиальным (может быть, 1 секунда?) - вы используете медленный удаленный сервер или это просто ПРОТИВ движка без загрузки сети или карт?

Всякий раз, когда мне приходилось иметь дело с большими наборами данных, у ESRI есть свинья.

Рад видеть обсуждение SO продуктов ESRI! Здесь не так много ...

0 голосов
/ 14 ноября 2008

Насколько я понимаю, инициализация ArcEngine инициализирует специальную среду COM.

Вы никогда не получите никакого реального контроля над инициализированной средой. Можете ли вы как-то сохранить окружение COM и передать его другим программам. Моя текущая идея:

Служба Windows работает в фоновом режиме с инициализированным ArcEngine. Программа каким-то образом запрашивает сервис, сервис возвращает COM-среду. Это вообще возможно?

...