Каковы преимущества загружаемых DLL динамично?

Поиск преимуществ загружаемых DLL динамично в противоположность разрешению загрузке приложения DLLs по умолчанию.

6
задан James 10 February 2010 в 11:46
поделиться

5 ответов

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

Предположим, например, что вы хотите написать службу, которая выполняет различные типы задач по расписанию. То, что делают эти задачи, на самом деле не имеет отношения к вашей основной службе, которая нужна только для того, чтобы запускать их в нужное время. И более чем вероятно, что вы захотите добавить поддержку для выполнения других типов задач в будущем (или другой разработчик может захотеть). В этом сценарии, реализуя плагиновый подход, он позволяет добавлять больше (совместимых по интерфейсу) dll, которые могут быть закодированы независимо от основной службы. Таким образом, добавление поддержки для новой задачи не требует новой сборки / развертывания всего сервиса. Если требуется изменить конкретную задачу, необходимо повторно развернуть только эту dll, а затем автоматически подобрать ее.

Это также требует, чтобы другие разработчики не интересовались самим сервисом, им просто нужно знать, какой интерфейс реализовать, чтобы его можно было использовать.

4
ответ дан 10 December 2019 в 02:47
поделиться

Динамическая загрузка общих объектов - это механизм, позволяющий плагинам ad hoc запускать приложения. Без плагинов модульное приложение пришлось бы собирать во время компоновки или компиляции (посмотрите на код nginx).

1
ответ дан 10 December 2019 в 02:47
поделиться

Ваш вопрос касается C # /. NET, поэтому в этом мире динамическая загрузка DLL требует продвинутых навыков программирования. Это могло бы компенсировать все потенциальные преимущества динамической загрузки DLL. Вам просто нужно будет написать много «низкоуровневого» кода.

В C ++ / Win32 мне часто приходится динамически загружать DLL, когда в этой DLL есть какая-то новая функция API, недоступная в старых операционных системах. В этом случае мне нужно обеспечить доступность этого API во время выполнения. Я не могу просто связать эту DLL, потому что это вызовет ошибки загрузки приложений в устаревших операционных системах.

Как уже упоминалось, у вас также могут быть некоторые преимущества в среде на основе плагинов. В этом случае у вас будет больше контроля над вашими ресурсами, если динамически загружать библиотеки DLL. По сути, COM - хороший пример динамической обработки DLL.

1
ответ дан 10 December 2019 в 02:47
поделиться

Если вы загружаете только нужные библиотеки DLL, время запуска приложения должно быть быстрее.

1
ответ дан 10 December 2019 в 02:47
поделиться

Мы используем эту архитектуру для наших приложений обработки, чтобы учесть различия, которые требуются нашим клиентам. Каждая DLL имеет аналогичную структуру и реализует один и тот же интерфейс и метод входа «Process ()». У нас есть XML-файл, который определяет, какой класс загружать, в зависимости от клиента и есть ли другие методы, помимо процесса, которые необходимо вызвать. Производительность не должна быть проблемой, пока количество транзакций не станет очень большим.

2
ответ дан 10 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

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