Как сделать COM без регистрации в сменной архитектуре

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

Это имеет два достоинства:

  1. , Чтобы позволить пользователю единственным "таблицам", содержащим данные, они ожидают довольно требующий относительно не технические пользователи разрабатывать потенциально сложные соединения (потому что база данных нормализована)
  2. , Это обеспечивает средство позволить определенную степень ах hoc доступ, не представляя данные или структуру конечным пользователям.

Даже со специальным созданием отчетов об иногда signicantly легче предоставить представление системе отчетности, которая содержит relveant данные, аккуратно разделяя производство данных из представления того же.

9
задан Community 23 May 2017 в 11:45
поделиться

1 ответ

Я бы не рекомендовал изменять файл манифеста приложения; это кажется довольно хрупким и будет работать, только если он находится в доступном для записи месте.

При запуске процесса манифест приложения используется для создания «контекста активации», который проталкивается как контекст активации всего процесса. Но каждый поток также имеет стек контекста активации, которым можно напрямую управлять. При поиске регистрационных данных COM операции в данном потоке смотрят как на самый верхний контекст в стеке, так и на контекст активации всего процесса.

Рекомендация состоит в том, что каждый раз, когда код подключаемого модуля должен вызывать COM, манифест конкретного подключаемого модуля должен быть активирован в потоке. Проще всего это сделать одним из двух способов:

  1. Вставьте специфичный для подключаемого модуля манифест как манифест ID2 в подключаемый модуль и скомпилируйте с определенным макросом ISOLATION_AWARE_ENABLED . Это в основном обертывает общие API-интерфейсы Windows, которым нужен контекст из манифеста для автоматической активации и деактивации правильного контекста активации вокруг вызова.

  2. Активация / деактивация правильного контекста активации в потоке вокруг всех точек входа в плагин. Это делается через API контекста активации . Это проще всего сделать с помощью объекта управления контекстом активации .

6
ответ дан 4 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: