Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что же такое .NET ? Краткое описание 
:(
    Опции темы
AntonSaburov
Дата 3.2.2004, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



Т.к. последнее время я неоднократно встречал вопросы «Что же такое .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. До скорых встреч.
PM MAIL WWW ICQ   Вверх
Kurt
Дата 26.2.2004, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



Никак не могу понять - является ли .NET просто оболочкой над WinAPI?
Мне кажется, что весь этот байт-код в конечном итоге ДЛЯ Windows переводится все в те же вызовы API. Т.е виртуальная машина работает с API..
Или я не прав? Тут все функции переписаны?.. confused.gif


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Paradox
Дата 27.2.2004, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: 2
Всего: 1



Оболочкой для WinAPI является MFC
При программировании с использованием FCL забудьте об API,MFC,COM,CORBA и так далее
это совет от MICROSOFT



--------------------
---
PM MAIL WWW   Вверх
Dana
Дата 4.6.2004, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.6.2004

Репутация: нет
Всего: нет



Цитата(AntonSaburov @ 3.2.2004, 17:44)
По поводу совместимости - на самом деле нормально все это работает начиная с Windows 2000. Хоть и объявлено, что должно работать на Windows 98, Me и Windows NT 4 SP6, но (во всяком случае первая версия .NET) работало это с большим количеством глюков. Так что используйте 2000 или XP.


А как на счет Linux'a?
PM MAIL   Вверх
Kurt
Дата 4.6.2004, 01:08 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



Под Linux?
Тяжко, хотя теоретически реализуемо.
Под Linux есть проект mono.
Но за 3 (по-моему..) года они не смогли обеспечить работу Windows Forms, а вот консольные приложения работают..
Оно и понятно, ведь поддержки толком никакой.
Вот если б M$ позаботился об этом также как Sun о Java.. rolleyes.gif

З.Ы. Сам еще не пробовал.. rolleyes.gif


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
chipset
Дата 4.6.2004, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4067
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 1
Всего: 164



Слышал что приложения .NET под Линухом бегают очень быстро...
К сожалению сам не опровергнуть не потвердить информацию не могу... sad.gif


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
arilou
Дата 16.7.2004, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Цитата(Kurt @ 26.2.2004, 20:00)
Никак не могу понять - является ли .NET просто оболочкой над WinAPI?
Мне кажется, что весь этот байт-код в конечном итоге ДЛЯ Windows переводится все в те же вызовы API. Т.е виртуальная машина работает с API..
Или я не прав? Тут все функции переписаны?.. ???

На текущей платформе Windows .NET действительно в конечном итоге вызывает WinAPI. А вот когда выйдет Longhorn, все станет наоборот - WinAPI будет эмулироваться средствами .NET. В MS говорят, что WinAPI развиваться дальше не будет, а вся ОС будет работать в managed среде.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Deeoni$
Дата 5.8.2004, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2003

Репутация: нет
Всего: нет



Цитата(arilou @ 16.7.2004, 05:37)
На текущей платформе Windows .NET действительно в конечном итоге вызывает WinAPI. А вот когда выйдет Longhorn, все станет наоборот - WinAPI будет эмулироваться средствами .NET. В MS говорят, что WinAPI развиваться дальше не будет, а вся ОС будет работать в managed среде.

а что будеь с ассемблером когда выйдет Longhorn??? как на нем будет писать под .NET не используя эмуляции WinAPI
PM ICQ   Вверх
arilou
Дата 6.8.2004, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Deeoni$
Честно говоря, даже не знаю, как-то не задумывался о судьбе ассемблера. Наверное, IL придет ему на замену wink.gif


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
ReSeT
Дата 19.8.2004, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 17.8.2004

Репутация: нет
Всего: нет



Цмтата с одного инф сервера:
Цитата
...Windows Longhorn будет основан на технологии .NET, а приложения Win32(API) будут выполняться в режиме эмуляции...

Но вот вопрос насколко хорошо будет реализована эмуляция???
Кстати, скажите ,плз, что такое IL?

PM MAIL   Вверх
arilou
Дата 19.8.2004, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Цитата(ReSeT @ 19.8.2004, 14:46)
Но вот вопрос насколко хорошо будет реализована эмуляция???
Кстати, скажите ,плз, что такое IL?


Насчет качества эмуляции не знаю, но наверное хуже чем Win 95 - Win 3.11 не будет smile.gif
А нсчет MSIL -
Цитата(AntonSaburov @ 3.2.2004, 17:44)
Среда исполнения
Наверно самое простое объяснение будет выглядеть так – это программа, которая выполняет команды Вашей программы. По сути это интерпретатор. Когда с помощью компилятора какого-либо языка для .NET вы собираете (компилируете) Вашу программу Вы получаете не реальные команды процессора, а некие абстрактные команды, байт-код, промежуточный ассемблер – как Вам удобнее понимать. Т.е. кто помнит QBasic, тот должен помнить, что там команды исполнялись по строчкам. Строка сразу интерпретировалась и исполнялась. В .NET это несколько оптимизировано – среда исполнения работает не с текстом программы, а с уже оптимизированным байт-кодом на языке MSIL - Microsoft Intermediate Language.




--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
DeeZ
Дата 26.11.2004, 01:55 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.11.2004

Репутация: нет
Всего: нет



Цитата

На текущей платформе Windows .NET действительно в конечном итоге вызывает WinAPI. А вот когда выйдет Longhorn, все станет наоборот - WinAPI будет эмулироваться средствами .NET.

Цитата

Честно говоря, даже не знаю, как-то не задумывался о судьбе ассемблера. Наверное, IL придет ему на замену

У меня уже стоИт Longhorn build 4074, эмуляция эта работает ч\з раз, а то и ч\з два - некоторые программы (в частности, использующие RASAPI, IMAP и т.п.) иногда вообще не запускаются, т.е. процесс создается, а форма не рисуется - может программа и работает, но отсутствие GUI делает общение с приложением весьма затруднительным smile ... а иногда все нормально пашет.
Что касается ассемблера, то fasm программы у меня работают нормально (правда ничего серьезного не запускал, так - свои побрякушки). IL придет на смену API, скорее всего придется нам учить этот новый "Microsoft Intermediate Language" и в include пхать модули с описанием IL констант и функций.
Ну а за судьбу чистого асма (ч\з прерывания, стэк, регистры и т.д. работающего) я спокоен smile
Если только M$ не прикупит вслед за Borland еще и Intel с AMD smile
-
Надо срочно искать D8.
PM MAIL   Вверх
Exception
Дата 9.2.2005, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата
По сути это интерпретатор

Не совсем согласен. Интерпретатор исполняет текстовые команды, а в .НЕЕЕЕЕЕТ сначала происходит JIT-компиляция. Т.е. при вызове какогонить метода Just-In-Time компилятор сначала компилит IL-код а потом исполняет уже откомпиленный код.
PM   Вверх
AntonSaburov
Дата 9.2.2005, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



Цитата(Run @ 9.2.2005, 12:20)
Не совсем согласен. Интерпретатор исполняет текстовые команды, а в .НЕЕЕЕЕЕТ сначала происходит JIT-компиляция.


А внимательнее читать не пробовал ?

Цитата(AntonSaburov @ 3.2.2004, 17:44)
После загрузки Вашего приложения в память начинается его исполнение. Но и здесь продолжается оптимизация его работы – используется JIT компилятор (Just In Time). Этот компилятор занимается тем, что при первой загрузке кода на MSIL, преобразует его в реальные команды процессора и в дальнейшем Ваше приложение будет использовать уже не MSIL, а полученный код.


PM MAIL WWW ICQ   Вверх
Петрович
Дата 9.2.2005, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: нет
Всего: 55



Цитата(arilou @ 16.7.2004, 14:37)
На текущей платформе Windows .NET действительно в конечном итоге вызывает WinAPI. А вот когда выйдет Longhorn, все станет наоборот - WinAPI будет эмулироваться средствами .NET.

Интересно посмотреть как высокоуровневыми средствами можно эмулировать низкоуровневый WinAPI.


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1942 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.