Составители:
Рубрика:
К сожалению, проблемы в организации взаимодействия компонен-
тов зачастую перевешивают преимущества компонентного подхода. Дей-
ствительно, языки программирования используют различные несовмес-
тимые между собой модели данных, соглашения о вызове подпрограмм,
форматы исполняемых и объектных файлов и т.п. Поэтому взаимодейст-
вие компонентов, написанных на разных языках, требует от разработчика
дополнительных усилий и, кроме того, может существенно снизить эффе-
ктивность получаемого кода.
Отсутствие удовлетворительной технологии взаимодействия компо-
нентов приводит к следующим негативным явлениям:
• Для разработки программной системы используется только
один язык программирования, даже если часть системы удобней
было бы реализовать на другом языке.
• Программа выглядит как гигантский монолит, из которого тру-
дно выделить отдельные части и, соответственно, невозможно
заменить одну часть на другую.
• Появляются чрезмерно универсальные языки программирова-
ния, а существующие языки наделяются несвойственными им
возможностями. Например, функциональные и логические
языки оснащаются библиотеками для разработки графического
пользовательского интерфейса.
В компонентной системе можно выделить три вида взаимодействия
компонентов:
1. взаимодействие внутри адресного пространства одного процесса;
2. межпроцессное взаимодействие, при котором компоненты ра-
ботают в разных процессах;
3. взаимодействие в сети, когда компоненты запущены на разных
компьютерах.
В этом разделе мы ограничимся рассмотрением первого случая, то
есть изучим, как на платформе .NET реализовано взаимодействие компо-
нентов, работающих в рамках одного процесса. Межпроцессное и сетевое
взаимодействие используется, главным образом, в распределенных систе-
мах, изучение которых выходит за рамки нашего учебника.
2.3.1. Обзор компонентных технологий
Существует множество способов и технологий организации компо-
нентного программирования. Давайте проведем беглый обзор достижений
в этой области.
2.3.1.1. Библиотеки подпрограмм
Наиболее древний способ заключается в использовании библиотек
подпрограмм. Такие библиотеки создаются одной группой разработчиков,
Структура программных компонентов
73
Это поле содержит индекс в куче строк, по которому хранится
имя импортируемой сборки (в нашем случае это «mscorlib»).
2.2.3.6. Таблица импортируемых типов (TypeRef – 0x01)
Каждая запись в этой таблице соответствует одному из импортируе-
мых типов и содержит следующие поля:
short ResolutionScope;
Специальным образом закодированная информация о том, ка-
кой сборке или какому модулю принадлежит данный тип.
short Name;
Это поле содержит индекс в куче строк, по которому хранится
имя импортируемого типа (в нашем случае это «Console»).
short Namespace;
Это поле содержит индекс в куче строк, по которому хранится
имя пространства имен; данному пространству принадлежит
импортируемый тип (в нашем случае это «System»).
2.2.3.7. Таблица членов импортируемых типов (MemberRef – 0x0A)
В таблице членов импортируемых типов перечислены все методы,
поля и свойства этих типов, которые используются в программе. Каждая
запись этой таблицы содержит следующие поля:
short Class;
Специальным образом закодированная информация об импор-
тируемом типе.
short Name;
Это поле содержит индекс в куче строк, по которому хранится
имя члена импортируемого типа.
short Signature;
Индекс в куче двоичных данных, по которому расположена сиг-
натура члена импортируемого типа.
2.3. Взаимодействие программных компонентов
В настоящее время большой популярностью пользуется компонент-
ный подход к разработке программного обеспечения. Этот подход харак-
теризуется тем, что создаваемый программный продукт состоит из взаи-
модействующих компонентов. При этом различные компоненты могут
независимо разрабатываться разными группами программистов, и при со-
здании каждого компонента может применяться наиболее подходящий
язык программирования. В качестве примера можно привести Microsoft
Visual Studio .NET и Microsoft Office.
72
CIL и системное программирование в Microsoft .NET
72 CIL и системное программирование в Microsoft .NET Структура программных компонентов 73 Это поле содержит индекс в куче строк, по которому хранится К сожалению, проблемы в организации взаимодействия компонен- имя импортируемой сборки (в нашем случае это «mscorlib»). тов зачастую перевешивают преимущества компонентного подхода. Дей- ствительно, языки программирования используют различные несовмес- 2.2.3.6. Таблица импортируемых типов (TypeRef – 0x01) тимые между собой модели данных, соглашения о вызове подпрограмм, Каждая запись в этой таблице соответствует одному из импортируе- форматы исполняемых и объектных файлов и т.п. Поэтому взаимодейст- мых типов и содержит следующие поля: вие компонентов, написанных на разных языках, требует от разработчика short ResolutionScope; дополнительных усилий и, кроме того, может существенно снизить эффе- Специальным образом закодированная информация о том, ка- ктивность получаемого кода. кой сборке или какому модулю принадлежит данный тип. Отсутствие удовлетворительной технологии взаимодействия компо- short Name; нентов приводит к следующим негативным явлениям: Это поле содержит индекс в куче строк, по которому хранится • Для разработки программной системы используется только имя импортируемого типа (в нашем случае это «Console»). один язык программирования, даже если часть системы удобней short Namespace; было бы реализовать на другом языке. Это поле содержит индекс в куче строк, по которому хранится • Программа выглядит как гигантский монолит, из которого тру- имя пространства имен; данному пространству принадлежит дно выделить отдельные части и, соответственно, невозможно импортируемый тип (в нашем случае это «System»). заменить одну часть на другую. • Появляются чрезмерно универсальные языки программирова- 2.2.3.7. Таблица членов импортируемых типов (MemberRef – 0x0A) ния, а существующие языки наделяются несвойственными им В таблице членов импортируемых типов перечислены все методы, возможностями. Например, функциональные и логические поля и свойства этих типов, которые используются в программе. Каждая языки оснащаются библиотеками для разработки графического запись этой таблицы содержит следующие поля: пользовательского интерфейса. short Class; В компонентной системе можно выделить три вида взаимодействия Специальным образом закодированная информация об импор- компонентов: тируемом типе. 1. взаимодействие внутри адресного пространства одного процесса; short Name; 2. межпроцессное взаимодействие, при котором компоненты ра- Это поле содержит индекс в куче строк, по которому хранится ботают в разных процессах; имя члена импортируемого типа. 3. взаимодействие в сети, когда компоненты запущены на разных short Signature; компьютерах. Индекс в куче двоичных данных, по которому расположена сиг- В этом разделе мы ограничимся рассмотрением первого случая, то натура члена импортируемого типа. есть изучим, как на платформе .NET реализовано взаимодействие компо- нентов, работающих в рамках одного процесса. Межпроцессное и сетевое взаимодействие используется, главным образом, в распределенных систе- 2.3. Взаимодействие программных компонентов мах, изучение которых выходит за рамки нашего учебника. В настоящее время большой популярностью пользуется компонент- 2.3.1. Обзор компонентных технологий ный подход к разработке программного обеспечения. Этот подход харак- Существует множество способов и технологий организации компо- теризуется тем, что создаваемый программный продукт состоит из взаи- нентного программирования. Давайте проведем беглый обзор достижений модействующих компонентов. При этом различные компоненты могут в этой области. независимо разрабатываться разными группами программистов, и при со- здании каждого компонента может применяться наиболее подходящий 2.3.1.1. Библиотеки подпрограмм язык программирования. В качестве примера можно привести Microsoft Наиболее древний способ заключается в использовании библиотек Visual Studio .NET и Microsoft Office. подпрограмм. Такие библиотеки создаются одной группой разработчиков,
Страницы
- « первая
- ‹ предыдущая
- …
- 41
- 42
- 43
- 44
- 45
- …
- следующая ›
- последняя »