2008-11-14 9 views
0

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

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

Любые идеи?

ответ

1

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

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

0

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

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

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

1

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

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

0

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

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

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

Приятно познакомиться с обсуждением SO продуктов 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 секунд? Если бы мне пришлось провести какую-то психическую отладку, я бы предположил, что у вас возникла проблема с вашим сервером лицензий.

Проверьте это первым.