Автор работы: Пользователь скрыл имя, 15 Января 2011 в 20:03, реферат
.NET Framework — программная платформа компании Microsoft, предназначенная для создания обычных программ и веб-приложений. Описание.
1 ПЛАТФОРМА .NET FRAMEWORK 2
2 ОБЩЕЯЗЫКОВАЯ ИСПОЛНЯЮЩАЯ СРЕДА 2
2.1 Независимость от платформы 3
2.2 Повышение производительности 3
2.3 Языковая способность к взаимодействию 4
2.3.1 Visual Basic 2008 4
2.3.2 Visual C++ 2008 5
2.3.3 COM и COM+ 6
3 ОСОБЕННОСТИ ПРОМЕЖУТОЧНОГО ЯЗЫКА (IL) 6
3.1 Поддержка объектной ориентации и интерфейсов 7
3.2 Различие типов значений и типов ссылок 9
3.3 Строгая типизация данных 9
3.3.1 Важность строгой типизации данных для межъязыкового взаимодействия 10
3.3.2 Общая система типов 10
3.3.3 Общая спецификация языка 12
3.3.4 Сборка мусора 13
3.3.5 Безопасность 15
3.3.6 Домены приложений 16
3.4 Обработка ошибок с помощью исключений 19
3.5 Применение атрибутов 20
4 СБОРКИ 20
4.1 Приватные сборки 21
4.2 Разделяемые сборки 22
4.3 Рефлексия 23
5 КЛАССЫ .NET FRAMEWORK 24
6 ПРОСТРАНСТВА ИМЕН 25
ЗАКЛЮЧЕНИЕ. 26
СПИСОК ЛИТЕРАТУРЫ 27
ОГЛАВЛЕНИЕ
1 ПЛАТФОРМА .NET FRAMEWORK 2
2 ОБЩЕЯЗЫКОВАЯ ИСПОЛНЯЮЩАЯ СРЕДА 2
2.1 Независимость от платформы 3
2.2 Повышение производительности 3
2.3 Языковая способность к взаимодействию 4
2.3.1 Visual Basic 2008 4
2.3.2 Visual C++ 2008 5
2.3.3 COM и COM+ 6
3 ОСОБЕННОСТИ ПРОМЕЖУТОЧНОГО ЯЗЫКА (IL) 6
3.1 Поддержка объектной ориентации и интерфейсов 7
3.2 Различие типов значений и типов ссылок 9
3.3 Строгая типизация данных 9
3.3.1 Важность строгой типизации данных для межъязыкового взаимодействия 10
3.3.2 Общая система типов 10
3.3.3 Общая спецификация языка 12
3.3.4 Сборка мусора 13
3.3.5 Безопасность 15
3.3.6 Домены приложений 16
3.4 Обработка ошибок с помощью исключений 19
3.5 Применение атрибутов 20
4 СБОРКИ 20
4.1 Приватные сборки 21
4.2 Разделяемые сборки 22
4.3 Рефлексия 23
5 КЛАССЫ .NET FRAMEWORK 24
6 ПРОСТРАНСТВА ИМЕН 25
ЗАКЛЮЧЕНИЕ. 26
СПИСОК
ЛИТЕРАТУРЫ 27
.NET
Framework — программная платформа компании
Microsoft, предназначенная для создания обычных
программ и веб-приложений.
Microsoft,
мировой лидер в области разработки ПО
начала работать над созданием .NET Framework
в конце 90-х. Тогда проект носил название
Next Generation Windows Services (NGWS). Бета версия
.NET 1.0 была представлена публике в 2000 году,
окончательный же релиз состоялся в 2002-м.
Последующие поколения программного пакета
.NET выходили в 2003-м (Visual Studio .NET 2003), 2005-м
(Visual Studio 2005), 2006-м (в рамках адаптации Visual
Studio 2005 к Windows Vista), и в 2007-м (релиз Visual Studio
2008). Последняя на момент написания этого
текста версия .NET Framework 4.0 была выпущена
12 апреля 2010 г. вместе с окончательной
версией Visual Studio 2010.
Ниже рассмотрим основные черты платформы .NET Framework.
Центральной частью каркаса .NET является его общеязыковая исполняющая среда, известная как Common Language Runtime (CLR) или .NET runtime. Код, выполняемый под управлением CLR, часто называют управляемым кодом.
Однако перед тем как код сможет выполняться CLR, любой исходный текст (на С# или другом языке) должен быть скомпилирован. Компиляция в .NET состоит из двух шагов.
1. Компиляция исходного кода в IL.
2. Компиляция IL в специфичный для платформы код с помощью CLR.
Этот двухшаговый процесс компиляции очень важен, потому что наличие IL (управляемого кода) — это ключ ко многим преимуществам .NET.
Промежуточный язык Microsoft (MSIL) разделяет с байт-кодом Java идею низкоуровневого языка с простым синтаксисом (базирующегося на числовых кодах вместо текста), который может быть очень быстро транслирован в родной машинный код. Наличие этого кода с четко определенным универсальным синтаксисом дает ряд существенных преимуществ.
Во-первых, это значит, что файл, содержащий инструкции байт-кода, может быть размещен на любой платформе; во время выполнения финальная стадия компиляции может быть легко осуществлена, что позволит выполнить код на конкретной платформе. Другими словами, компилируя в IL, вы получаете платформенную независимость .NET — во многом так же, как компиляция в байт-код Java обеспечивает независимость от платформы программам на Java.
Следует отметить, что независимость .NET от платформы в настоящее время лишь теоретическая, поскольку на данный момент полная реализация .NET доступна только для ОС Windows. Однако уже существуют частичные реализации для других платформ (например, проект Mono— попытка создать реализацию .NET с открытым кодом).
В сравнении IL с Java, все же IL на самом деле лучше, чем байт-код Java. IL всегда компилируется оперативно (Just-In-Time, известно также, как JIT-компиляция), в то время, как байт-код Java еще часто интерпретируется. Одним из недостатков Java было то, что во время выполнения программ процесс трансляции байт-кода Java в родной машинный код приводил к снижению производительности (за исключением самых последних версий, где Java компилируется JIT на некоторых платформах).
Вместо компиляции всего приложения за один проход (что может привести к задержкам при запуске), JIT-компилятор просто компилирует каждую порцию кода при ее вызове (just-in-time — оперативно). Если промежуточный код однажды скомпилирован, то результирующий машинный исполняемый код сохраняется до момента завершения работы приложения, поэтому его перекомпиляция при повторных вызовах не требуется. Microsoft аргументирует, что такой процесс более эффективен, чем компиляция всего приложения при запуске, поскольку высока вероятность того, что большие куски кода приложения на самом деле не будут выполняться при каждом запуске. При использовании JIT-компилятора такой код никогда не будет скомпилирован.
Это объясняет, почему можно рассчитывать на то, что выполнение управляемого кода IL будет почти настолько же быстрым, как и выполнение родного машинного кода. Однако это не объясняет того, почему Microsoft ожидает повышения производительности. Причина состоит в том, что поскольку финальная стадия компиляции происходит во время выполнения, JIT-компилятор на этот момент уже знает, на каком типе процессора будет запущена программа. А это значит, что он может оптимизировать финальный исполняемый код, используя инструкции конкретного машинного кода, предназначенные для конкретного процессора.
Традиционные компиляторы оптимизируют код, но они могут выполнить лишь оптимизацию, не зависящую от конкретного процессора, на котором код будет выполняться. Это происходит потому, что традиционные компиляторы генерируют исполняемые программы до того, как они поставляются пользователям. А потому компилятор не знает, на каком типе процессора они будут работать, за исключением самых общих характеристик вроде того, что это будет х86-совместимый процессор либо же процессор Alpha. Так, например, Visual Studio 6 оптимизирует код для обобщенной машины Pentium, поэтому сгенерированный код не может использовать аппаратные преимущества процессора Pentium III. Однако JIT-компилятор может выполнять всю оптимизацию, которую реализует Visual Studio 6, и вдобавок может оптимизировать код под конкретный процессор, на котором он будет работать.
Применение IL не только обеспечивает независимость от платформы; оно также обеспечивает способность к взаимодействию. Другими словами, можно скомпилировать программу на одном языке в код IL, и этот скомпилированный код сможет свободно взаимодействовать с IL-кодом, скомпилированным из другого языка.
Так же очень полезным является и то, что с .NET совместимы и другие языки помимо С#. Ниже кратко описано, как некоторые языки общего назначения стыкуются с .NET.
Visual Basic .NET 2002 подвергся полной переделке по сравнению с Visual Basic 6 для синхронизации его с первой версией среды .NET Framework. Сам язык Visual Basic серьезно эволюционировал по сравнению с VB6, и это значит, что VB6 — неподходящий язык для разработки программ .NET. Например, VB6 в значительной степени интегрирован с моделью компонентных объектов (Component Object Model — COM) и работает, предоставляя в распоряжение разработчика только исходный код обработчиков событий — большая часть лежащего в основе кода недоступна в виде исходных текстов. Помимо этого существуют и другие ограничения. Так, VB6 не поддерживает реализацию наследования, а стандартные типы Visual Basic 6 не совместимы с .NET.
Visual Basic 6 был обновлен до Visual Basic .NET в 2002 г., и изменения в языке были настолько значительны, что Visual Basic теперь можно рассматривать как совершенно новый язык. Существующий код Visual Basic 6 не компилируется в современный код Visual Basic 2008 (или в Visual Basic .NET 2002, 2003 и 2005 - по той же причине). Преобразование программ Visual Basic 6 в Visual Basic 2008 требует серьезных изменений исходного кода. Однако Visual Studio 2008 (обновленная среда разработки Visual Studio для использования с .NET) может выполнить большую часть этой работы. Если вы попытаетесь загрузить проект Visual Basic 6 в среду Visual Studio 2008, она самостоятельно обновит проект. Это значит, что она перепишет исходный код Visual Basic 6 на Visual Basic 2008. Хотя это избавляет от рутинной работы, все же после такого преобразования придется проверить новый код Visual Basic 2008 на работоспособность, поскольку преобразование может оказаться далеким от идеала.
Один побочный эффект такого преобразования языка состоит в том, что теперь уже нельзя скомпилировать исходные текст Visual Basic 2008 в родной машинный код. Теперь Visual Basic 2008 компилирует только в код IL, как это делает и С#. Если вам нужно продолжать кодировать на Visual Basic 6, вы можете это делать, но полученный исполняемый код будет полностью игнорировать .NET Framework и вам придется держать на машине инсталлированным Visual Basic 6, если вы хотите продолжать разработку в этой среде.
Visual C++ 6 уже имел множество специфичных для Microsoft расширений Windows. С появлением Visual C++ .NET были добавлены новые расширения, обеспечивающие поддержку среды .NET. Это значит, что существующий исходный код C++ будет по-прежнему компилироваться в родной машинный код безо всяких модификаций. Однако это значит также, что он будет работать независимо от среды выполнения .NET. Если вы хотите, чтобы ваши программы C++ запускались внутри среды .NET, вы можете поместить в начало исходного кода следующую строку:
#using <mscorlib.dll>
Вы также можете передать флаг /clr компилятору, который предположит, что вы хотите компилировать в управляемый код, и потому сгенерирует IL вместо родного машинного кода. Интересно, что во время компиляции C++ в управляемый код, компилятор может сгенерировать IL, включающий в себя исполняемый машинный код. Это означает, что в есть возможность коде на C++ смешивать управляемые (managed) типы с неуправляемыми (unmanaged). To есть управляемый код C++
class MyClass
{
объявляет простой класс C++, в то время как код
ref class MyClass
{
приведет к появлению управляемого класса, как если бы он был написан на С# или Visual Basic 2008. Преимущество применения управляемого кода C++ перед С# состоит в том, что можно вызывать неуправляемые классы C++ из управляемого кода C++ без необходимости обращаться к средствам взаимодействия СОМ.
Компилятор выдает ошибку при попытке использования средств, которые не поддерживаются .NET или управляемыми типами (например, шаблонов или множественного наследования классов). Кроме того, вы столкнетесь с необходимостью применения нестандартных средств C++ при работе с управляемыми классами.
Из-за свободы, которую представляет C++ в отношении низкоуровневых манипуляций с указателями и тому подобного, компилятор C++ не может генерировать код, который успешно пройдет тесты CLR на безопасность типов. Если для вас важно, чтобы код распознавался CLR как безопасный в отношении типов, при написании вашего исходного кода вам лучше отдать предпочтение какому-то другому языку (такому как С# или Visual Basic 2008).