Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Что же такое .NET ?

Поиск:
Т.к. последнее время я неоднократно встречал вопросы «Что же такое .NET» то, IMHO, единственным правильным решением было написание заметки о том, что же это такое - .NET.
В данной статье я не буду использовать всевозможные рекламные словечки типа "распределенные", "Internet",
"высокопродуктивная", "безопасная" и прочая. Это оставим на совести продавцов. Постараюсь коснуться именно главного – из чего состоит и как работает.
Дальнейшие статьи (а я надеюсь, что я буду делать это более регулярно, чем раньше) буду посвящать различным аспектам программирования под .NET. Само собой все ваши замечания будут приняты с благодарностью и учтены в дальнейшей работе.

Итак, начнем.

Из чего состоит .NET Framework.
.NET Framework состоит из двух основных частей:
1. Среда исполнения
2. Библиотека классов

Среда исполнения
Наверно самое простое объяснение будет выглядеть так – это программа, которая выполняет команды Вашей программы. По сути это интерпретатор. Когда с помощью компилятора какого-либо языка для .NET вы собираете (компилируете) Вашу программу Вы получаете не реальные команды процессора, а некие абстрактные команды, байт-код, промежуточный ассемблер – как Вам удобнее понимать. Т.е. кто помнит QBasic, тот должен помнить, что там команды исполнялись по строчкам. Строка сразу интерпретировалась и исполнялась. В .NET это несколько оптимизировано – среда исполнения работает не с текстом программы, а с уже оптимизированным байт-кодом на языке MSIL - Microsoft Intermediate Language.
На само деле все несколько сложнее – Ваше приложение загружает библиотеку mscorlib.dll и передает управление ей. И уже эта библиотека (которая работает само собой не на MSIL, а на реальных командах процессора)выполняет Ваш код. Кроме этой библиотеки в каталоге с установленной средой исполнения находится еще немало библиотек, но о них речь сегодня мы вести не будем. После загрузки Вашего приложения в память начинается его исполнение. Но и здесь продолжается оптимизация его работы – используется JIT компилятор (Just In Time). Этот компилятор занимается тем, что при первой загрузке кода на MSIL, преобразует его в реальные команды процессора и в дальнейшем Ваше приложение будет использовать уже не MSIL, а полученный код. Такое поведение особенно хорошо видно, когда вы открываете форму с большим количество компонентов, потом закрываете ее и после открываете опять. Первый раз, даже на глаз видно, что система работает гораздо медленнее, чем в последующие.

Как Вы наверно уже поняли, для того, что бы программы написанные под .NET могли быть запущены на другом компьютере, на нем должна быть установлена среда исполнения (устанавливается она в каталог \WINDOWS\Microsoft.NET\Framework\<номер версии>).
Если на компьютере, на котором Вы запускаете свою программу .NET Framework не установлена, то будет выдано, что система не может найти библиотеку mscorlib.dll (о которой я уже упоминал) и само собой дальше этого ничего не пойдет.
По поводу совместимости - на самом деле нормально все это работает начиная с Windows 2000. Хоть и объявлено, что должно работать на Windows 98, Me и Windows NT 4 SP6, но (во всяком случае первая версия .NET) работало это с большим количеством глюков. Так что используйте 2000 или XP.

Что же это нам дает:
1. Возможность повышенной безопасности – Ваша программа не может делать больше того, что ей разрешается. Вы можете с меньшими опасениями использовать незнакомые программы из Internet.
2. Возможность использовать любые языки программирования, которые подпадают под спецификацию - Common Language Specification (CLS) в одном проекте. Почему такое возможно должно быть достаточно очевидно – компилятор любого высокоуровневого языка, удовлетворяющий спецификации, может породить корректный код на MSIL, который в свою очередь без каких-либо проблем будет интерпретироваться средой выполнения.
3. Т.к. код является управляемым, то возникают дополнительные возможности типа метаданных, т.е. данных о самих данных. Вы можете на лету определить тип данных, и даже создать новый тип, скомпилировать и выполнить его.
4. Исчезает «ад dll». Кто уже писал много программ или хотя бы устанавливал много программ, знает, что часто динамические библиотеки могут иметь разные версии, могут быть вообще разными, но иметь одно имя. И все они почему-то хотят стоять в каталоге WINDOWS\System32. Чтобы уметь управлять всем этим хаосом надо немало потрудится. В .NET предполагается, что все, что относится к Вашему приложению должно лежать в одном каталоге и никаких противоречий быть не должно. Мало того, используя механизм метаданных, Вы можете установить точно – какой версии dll будет использоваться Вашим приложением. И никакая другая версия ему не подойдет.
5. Из вышеизложенного должно быть понятно, что система исполнения работает поверх ОС. Таким образом Ваша программа не должна работать с ОС напрямую. Это обеспечивает устойчивость и безопасность системы в целом. Но тем не менее без каких-либо особых затрат Вы можете писать приложения, которые будут работать в операционной системой напрямую. Это может быть обращение к обычным dll или использование так называемого «неуправляемого кода», который будет выполняться как обычный код.

Думаю, что этого объяснения должно быть достаточно для понимания того, что из себя представляет среда исполнения.

Рассмотрим Библиотеку классов
Библиотека классов охватывает просто огромные объемы всевозможных классов и компонент, которые служат для облегчения работы со всевозможными системами и технологиями. Это XML и базы данных, работа с сетевыми ресурсами, технологии SOAP, графическая подсистема. Используя эту библиотеку, Вы можете писать всевозможные виды приложений. Вот список от Microsoft:

- Console applications.
- Windows GUI applications (Windows Forms).
- ASP.NET applications.
- XML Web services.
- Windows services

Как видите, выбор покрывает практически все, что только можно себе представить. На нашем форуме уже есть темы, где рассматриваются некоторые классы этой огромной библиотеки.

Наверно на этом можно закончить предварительное знакомство с .NET. До скорых встреч.
Автор: AntonSaburov






Просмотров: 6946

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную