2015-12-09 4 views
0

У меня есть настройка клиент-сервер, модуль SomethingApp.exe, реализующий интерфейс IDL ISomething живет на сервере; в дополнение SomethingPS.dll создается компилятором IDL в качестве заглушки для ISomethingПри выполнении удаленного COM-вызова, где должна быть зарегистрирована DLL-заглушка прокси-сервера?

получить доступ ISomething от удаленного клиентского компьютера, который работает до SomethingApp.exe на сервере. Мое понимание заключается в том, что все материалы реестра COM в этом сценарии принадлежат серверу, верно? т.е. прокси-сервер не должен быть распространен/зарегистрирован на клиентском ПК, потому что реализация не на этом ПК?

ответ

1

Прокси-сервер необходимо установить на клиентский ПК - это прокси-сервер, который предоставляет интерфейс ISomething, который вызывается кодом на клиенте. Если он не зарегистрирован на клиентском ПК, клиентский код не будет знать, что вызывать, и вы получите исключение.

У нас есть аналогичная настройка - серверные приложения COM +, которые мы экспортируем в прокси и устанавливаем на клиентских компьютерах. Без прокси-сервера, установленного на клиенте, он не работает.

Редактировать: Теперь я вижу, что вы отредактировали, что SomethingPS.dll - это прокси-сервер, созданный с помощью компилятора IDL. Я считаю, что это должно быть установлено на клиентской машине.

+0

Я немного отредактировал. 'ISomething' реализуется на сервере (SomethingApp.exe), но получен и вызывается из клиента через DCOM. Похоже, что ProxyStub должен быть на каждом ПК, который называет 'CoCreate [Ex] (..., ISomething)', в основном? –

+0

@ Mr.Boy yes - Я не создаю прокси, используя компилятор IDL, но экспортируя приложения COM +, но это также использует DCOM, а вызов 'CoCreate' требует, чтобы интерфейс был установлен на клиентской машине. –