Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 112

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 106 107 108 109 110 111 < 112 > 113 114 115 116 117 118 .. 320 >> Следующая

Для любой сборки как однофайловой, так и многофайловой, можно использовать два представления — физическое и логическое. При физическом представлении сборка — это набор файлов (модулей), которые содержат пользовательские типы и ресурсы (рис. 6.3).
266 Глава б • и домены приложении
Foo.dll
>- Bar.dll
Рис. 6.2. Многофайловая сборка
Физическое представление сборки
Foo.dll
Resource files
Bar.dll
Manifest
Рис. 6.3. Физическое представление: сборка как набор модулей
Как правило, физическое представление сборки выбирает ее создатель. Пользователю же сборки гораздо важнее ее логическое представление, в котором сборка — это набор открытых типов, используемых в приложении («внутренние» типы — это, как правило, служебные типы, используемые другими типами той же самой сборки). Логическое представление сборки показано нарис. 6.4.
В качестве примера можно взять сборку System.Drawing.dLl из библиотеки базовых классов .NET. На физическом уровне - это единственный файл dll, а в то, же время на логическом уровне — это иерархия взаимосвязанных типов, которые используются для вывода изображений (в чем легко убедиться при помощи ILDasm.exe - рис. 6.5).
Многофайловая сборка
Обзор сборок .NET 267
Logical View of an Assembly
Classes
Enumerations
Delegates
Interfaces
Resources
Structures
Рис. 6.4. Логическое представление; сборка как набор типов
f 0:\WINNT\Mltro*oltJ«T\Ffame«orl(\vl.U.2b.lS\
Yu1 as* Help
D MNNTtMierosoft NETtFrameworktvl 0.2615tSystem Drawing.dll
MANIFEST V System.Drawing EB 9 System.Drawlng.Design ; | Ш SYStem.Drawng.Drawlng2D я Щ System,Drawlnglmaglng ж Щ System.Drawing,Internal ш Ш System,Drawing.Printing а- Щ System.DrawJngTexl ж Ш Bitmap * ЩЕ Brush ЕЁ ? Brushes as-.' 3= CharacterRange
.assembly System.DrawIng
1__
Рис. 6.5. Логическое представление сборки System,Drawing.dll
После того как мы рассмотрели разные представления сборок, мы кратко познакомимся с теми преимуществами, которые обеспечивают сборки
Сборки обеспечивают повторное использование кода
Повторное использование кода - это проблема, которая стоит перед разработчиками уже очень долго. Следует признать, что решение этой проблемы, предложенное разработчиками концепции сборок .NLT, является лучшим из всего, что с vi ко
ствует на настоящий момент.
Как мы уже говорили, типы и ресурсы, находящиеся внутри сборки, могут вместно использоваться самыми разными приложениями — точно также, кактипы и ресурсы двоичных файлов СОМ. Однако в отличие от СОМ в ,NET вы можете не только разрешить такое повторное использование кода, но явно запретить Это делается путем разделения сборок на открытые (те, которые можно использе? вать для общего доступа) и частные (private) — используемые только в рамках един -ственного приложения. По умолчанию все сборки помечаются как Такая
возможность позволяет нам гораздо проще развертывать приложения и работать разными их версиями.
268 Глава б • Сборки, потоки и домены приложений
Как и в СОМ, в .NET повторное использование кода не ограничено рамками ,единственного языка программирования. Сборки .NET, которые будут успешно взаимодействовать друг с другом, можно создавать и на С#, и на Visual Basic.NET, и на любых других .NET-совместимых языках. Более того, в .Nb'і предусмотрен специальный набор правил (Common Language Specification, CLS), следование которому позволит гарантировать, что любой модуль на любом .NET-codmoctu-мом языке будет нормально взаимодействовать с любым другим модулем на любом другом языке, даже несмотря на различия в возможностях разных языков.
Повторное использование кода, независимое от языка, в .NEI реализовано гораздо лучше, чем в СОМ. Например, в классическом СОМ разработчики не могут производить тип в одном языке от типа из модуля, созданного на другом языке .(выражаясь яснее, СОМ не поддерживает классического наследования). В .NET это вполне возможно.
Сборки — контейнеры для типов
Сборки используются как контейнеры для содержащихся в них типов и ресурсов, обеспечивая их уникальность и исключая возможность возникновения конфликтов имен. В .NETtHHH идентифицируются в том числе и по сборке, в которой они находятся. Таким образом, если в вашем приложении используются две сборки, в каждой из которых есть тип (класс, структура и т. п.) с одинаковыми названиями, конфликта имен не возникнет: среда выполнения будет рассматривать эти два типа как полностью уникальные и независимые сущности.
В сборках предусмотрены встроенные средства самоописания и контроля версий
В мире СОМ вся ответственность за решение проблем, связанных с заменой старых версий компонентов новыми, лежала на программисте. Если новое приложение заменяло, к примеру, библиотеку версии 1.0 на версию 2.4 той же библиотеки, то вам оставалось только надеяться, что программист, создавший версию 2.4, позаботился о полной обратной совместимости с версией 1.0. Так, к сожалению, происходило не всегда, и иногда случалось, что при установке нового приложения старое переставало работать. Можно сказать, что проблема с версиями компонентов СОМ заключается в том, что ее решение возлагается полностью на программиста, а сама среда выполнения СОМ не предлагает для этого никаких средств.
Предыдущая << 1 .. 106 107 108 109 110 111 < 112 > 113 114 115 116 117 118 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100