Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Параллельное программирование

Сборки

Обработка ошибок с помощью исключений

Среда.NET спроектирована для облегчения обработки ошибочных ситуаций на основе механизма, использующего исключения, который применяется также в языках Java и C++. Разработчики C++ должны отметить, что поскольку IL — строго типизированная система, в ней не происходит никакого снижения производительности, связанного с применением исключений, как это имеет место в C++. К тому же блок finally, о необходимости которого часто пишут разработчики C++, в.NET и С# поддерживается изначально.

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

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

Большая часть архитектуры обработки исключений, включая поток управления программы при возникновении исключительных ситуаций, обрабатывается языками высокого уровня (С#, Visual Basic 2010, C++) и не поддерживается никакими специальными командами IL. Так, например, С# обрабатывает исключения, используя блоки кода try { }, catch { } и finally{ }.

Сборка (assembly) — это логическая единица, содержащая скомпилированный код для.NET Framework. Сборка — это полностью самодостаточный и скорее логический, нежели физический элемент. Это значит, что он может быть сохранен в более чем одном файле (хотя динамические сборки хранятся в памяти, а вовсе не в файлах). Если сборка хранится в более чем одном файле, то должен существовать один главный файл, содержащий точку входа и описывающий остальные файлы.

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

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

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

В.NET Framework 4.0 появилась возможность использовать преимущества современных двухядерных и четырехядерных процессоров. Новые средства параллельных вычислений предлагают средства разделения рабочих действий и выполнения их на нескольких процессорах. Доступные сегодня новые API-интерфейсы параллельного программирования значительно упростили написание безопасного многопоточного кода, однако важно понимать, что они не избавляют от ситуаций состязаний, а также от таких вещей, как блокировки.Новые средства параллельного программирования предоставляются библиотекой Task Parallel Library, а также механизмом PLINQ Execution Engine.

Классы.NET Framework

Возможно, наибольшее преимущество написания управляемого кода — по крайней мере, с точки зрения разработчика — состоит в том, что вы получаете возможность использовать библиотеку базовых классов.NET. Базовые классы.NET представляют огромную коллекцию классов управляемого кода, позволяющие решать практически любые задачи, которые раньше можно было решать с помощью Windows API. Все эти классы следуют той же объектной модели IL с одиночным наследованием. Это значит, что можно либо создавать объекты любого из базовых классов.NET, либо наследовать от них собственные классы. Отличие базовых классов.NET заключается в том, что они спроектированы интуитивно понятными и простыми в использовании. Например, для запуска потока необходимо вызвать метод Start () класса Thread. Чтобы-сделать недоступным объект TextBox, свойству Enabled этого объекта присваивается значение false. Такой подход, хорошо знакомый разработчикам Visual Basic и Java, чьи библиотеки использовать столь же легко, принесет огромное облегчение разработчикам C++, которым в течение многих лет приходилось "воевать" с такими API-функциями, как GetDIBits (), RegisterWndClassEx () и IsEqualllD (), а также с множеством функций, которые требовали передачи дескрипторов окон. Однако разработчики на C++ всегда имели легкий доступ к полному набору Windows API, в то время как разработчики на Visual Basic 6 и Java были ограничены в использовании базовой функциональности операционной системы, доступ к которой они получали из своих языков. Что касается базовых классов.NET, то они комбинируют простоту использования, присущую библиотекам Visual Basic и Java, с относительно полным покрытием набора функций Windows API. Многие средства Windows не доступны через базовые классы, и в этих случаях придется обращаться к API-функциям, но, в общем, это касается лишь наиболее экзотических функций. Для каждодневного применения набора базовых классов, в основном, будет достаточно. Но если понадобится вызвать API-функцию, то для этого.NET предоставляет так называемый механизм вызова платформы (platform-invoke), гарантирующий корректное преобразование типов данных, поэтому теперь эта задача не труднее, чем вызов этих функций непосредственно из кода C++, причем независимо от того, на каком языке пишется код — С#, C++ или Visual Basic 2010.

Для просмотра классов, структур, интерфейсов и перечислений базовой библиотеки классов может применяться Windows-утилита WinCV. Базовые классы являются всесторонними. В качестве чернового наброска ниже перечислены области, которые обслуживаются базовыми классами.NET 3.5.

§ Ключевые средства, предлагаемые IL (включая примитивные типы данных CTS).

§ Поддержка и управление графическим пользовательским интерфейсом Windows Web Forms (ASP.NET).

§ Доступ к данным (ADO.NET).

§ Доступ к каталогам.

§ Доступ к файловой системе и реестру.

§ Взаимодействие с сетью и доступ в Интернет.

§ Атрибуты и рефлексия.NET.

§ Доступ к аспектам операционной системы Windows (переменные среды и тому подобное).

§ Способность взаимодействия с СОМ.

Согласно источникам Microsoft, значительная часть базовых классов.NET реализована на С#.

<== предыдущая лекция | следующая лекция ==>
Домены приложений | Создание приложений ASP.NET
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 360; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.