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

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

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

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

Но что именно подразумевается под требованием допускать расширение? Рассмотрим Visual Studio 2005. При разработке этого приложения в нем были предусмотрены различные "гнезда" для подключения к IDE пользовательских модулей других производителей программного обеспечения. Ясно, что команда разработчиков Visual Studio 2005 не имела при этом возможности установить ссылки на внешние компоновочные блоки .NET, которые эта команда не разрабатывала (так что о статическом связывании не могло быть и речи). Поэтому закономерен вопрос: как именно это приложение смогло предложить необходимые гнезда подключения?

• Во-первых, расширяемое приложение должно предлагать некоторый входной механизм, который мог бы позволить пользователю указать модуль для подключения (это может быть, например, диалоговое окно или опция командной строки). При этом требуется динамическая загрузка.

• Во-вторых, расширяемое приложение должно выяснить, обладает ли модуль подходящими функциональными возможностями (например, набором необходимых интерфейсов), чтобы этот модуль можно было добавить в окружение. При этом требуется отображение.

• Наконец, расширяемое приложение должно получить ссылку на требуемую инфраструктуру (например, типы интерфейса) и вызвать члены, необходимые для запуска соответствующих функций. При этом часто требуется динамическое связывание.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Создание пользовательских атрибутов

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Создание пользовательских атрибутов Первым шагом процесса построения пользовательского атрибута является создание нового класса, производного от System.Attribute. В продолжение автомобильной темы, используемой в этой книге, мы создадим новую библиотеку классов C# с именем


Генерирование динамического компоновочного блока

Из книги Pinnacle Studio 11 автора Чиртик Александр Анатольевич

Генерирование динамического компоновочного блока Чтобы проиллюстрировать процесс определения компоновочного блока .NET в среде выполнения, давайте создадим одномодульный динамический компоновочный блок с именем MyAssembly.dll. В этом модуле будет содержаться класс HelloWorld.


Инструмент Свойства клипа для статического изображения

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

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


Программный способ связывания данных

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

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


Использование динамического режима

Из книги C++. Сборник рецептов автора Диггинс Кристофер

Использование динамического режима Динамический режим, очевидно, наиболее общий, и он необходим для ОО-программирования. Его используют многие не ОО-языки. В частности:[x]. Pascal использует статический режим для массивов, режим, основанный на стеке, для переменных, не


О реализации динамического связывания

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

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


11.8. Представление динамического числового вектора

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

11.8. Представление динамического числового вектора ПроблемаТребуется иметь тип для манипулирования динамическими числовыми векторами.РешениеВы можете использовать шаблон valarray из заголовочного файла <valarray>. Пример 11.15 показывает, как можно использовать шаблон


Разрешение конфликтов посредством связывания

Из книги Как сделать свой сайт и заработать на нем. Практическое пособие для начинающих по заработку в Интернете автора Мухутдинов Евгений

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


Преимущества и недостатки связывания

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

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


1.17. Отображение статического текста с помощью UILabel

Из книги автора

1.17. Отображение статического текста с помощью UILabel Постановка задачи Необходимо отображать для пользователя текст. Кроме того, вы хотели бы управлять шрифтом и цветом этого текста. Статическим называется такой текст, который пользователь не может напрямую изменять во


2.5. Добавление эффекта динамического зацепления к компонентам пользовательского интерфейса

Из книги автора

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


7.7. Директива связывания extern "C" A

Из книги автора

7.7. Директива связывания extern "C" A Если программист хочет использовать функцию, написанную на другом языке, в частности на С, то компилятору нужно указать, что при вызове требуются несколько иные условия. Скажем, имя функции или порядок передачи аргументов различаются в