Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Справочник Добавлено: 10.01.04 15:38  

Автор вопроса:  Павел | Web-сайт: www.vbnet.ru | ICQ: 326066673 
На фоне работы над справочником по API у меня всплыла идейка..

На API меня совсем не тянет в виду его постепенного отмирания (по
заявлениям Microsoft, некоторые фишки в Longhorn будут доступны уже
только из Managed кода), а вот принять участие в написании
справочника по .NET Framework я бы не отказался. Понимаю, конечно, что
это очень широкое понятие, и если бы мы написали такой справочник, то
потом не угнались бы за исправлениями, т.к. новые версии FW клепают
через год! Но по крайней мере, можно взять отдельную часть, например,
Windows Forms или ADO .NET. И это было бы совсем не плохо!
Что вы об этом думаете, товарищи?

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 10.01.04 17:51

Обращаюсь к знатокам .NET - если код компилируется, то во что он компилируется и нельзя ли сразу распространять скомпилированный код? Это я к тому, что на машинном уровне взаимодействие приложение-FW по сути наверняка примерно то же самое, что и API, едва ли мелкомягкие придумали что-либо уж совсем революционное... Как скомпилированное FW приложение вызывает функции FW?

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 10.01.04 18:27
Хм. Сразу код компилируется компилатором языка (например, для vb это
vbc.exe) в промежуточный язык (Intermediate Language). При запуске
этого приложения в дело вступает JIT-компилятор (Just-In-Time). Он
этот IL переводит в чистый машинный код, который уже может
выполняться. Это происходит только при первом запуске программы, а
также, если изменилась конфигурация системы, например, какой-то
компонент был обновлен.

Такая программа все время опирается на CLR (Common Language Runtime) -
это что-то типа VB6-ного рантайма, но, естественно, в 1000 раз круче и
прицип его работы совсем другой. А .NET Framework - это набор классов,
которые и можно использовать в своей проге. Для справки - Стандартные
типы данных вроде Integer или String, а также формы, контролы - это
тоже классы и они тоже входят в состав .NEt Framework.

Собственно, сразу после компиляции в IL программу уже можно
распространять среди пользователей. А уже на машине пользователя на
конкретной конфигурации системы произойдет JIT-компиляция.

Принципы работы API и .NET Framework совершенно разные. API - это
неуправляемый код, а .NET Framework - как раз управляемый. Хотя на
данный момент .NET Framework в некоторой степени является оберткой для
АПИ.

Скомпилированные приложения взаимодайствуют с .NET Framework по
совершенно другому принципу - через CLR.

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 10.01.04 19:18

Первые 3 абзаца не содержат желаемой информации.

Что значит - неуправляемый код?

Как именно скомпилированные JIT приложения взаимодействуют с CLR? По тому же принципу, что и вызов функций из DLL?

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 10.01.04 21:36
Из справочника на GotDotNet.ru

=====
managed code - Управляемый код
Код, который запускается под "contract of cooperation" в среде
выполнения. Управляемый код должен содержать метаданные, необходимые
среде выполнения для того, чтобы обеспечить работу сервисов, таких,
как управление памятью, межъязыковая интеграция, проверка доступа кода
и автоматическое управление жизненным циклом объектов. Весь код,
представленный в виде промежуточного языка, выполняется как
управляемый код.

unmanaged code - Неуправляемый код
Код, который создан без следования соглашениям и требованиям среды
выполнения. Неуправляемый код выполняется в среде CLR с минимальными
сервисами (например, для них отсутствует сборщик мусора, ограничены
возможности по отладке и т.д.)
=====

То есть, управляемый код взаимодействует _только_ с CLR и все
низкоуровневые операции выполняет CLR. Это обеспечивает стабильность
кода. А неуправляемый код все делает сам и нет никакой гарантии, что
какой-то программист не решит, например, полезть в чужую память и этим
завалит все приложение.

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 10.01.04 22:41

Таким образом, управяемый код не может сделать ничего, кроме того, что может CLR?

Формат этих метаданных Microsoft, наверно, не сочла нужным документировать?

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 10.01.04 23:46
Из того же GotDotNet:

=====
common language runtime - Общеязыковая среда выполнения
Ядро выполнения управляемого кода. Среда выполнения поддерживает
управляемый код, обеспечивая его сервисами, такими как, межъязыковая
интеграция, безопасность доступа кода, управление жизненным циклом
объектов, отладка и профилирование.
=====

Все. Больше CLR не может ничего, да и не должен.

А то, что управляемый код может сделать, обеспечивается тем самым .NET
Framework - более 7 тысяч классов. Ну и компоненты сторонних
разработчиков.

Снова GotDotNet:

=====
metadata - метаданные
Информация, которая описывает каждый элемент, управляемый средой
выполнения: сборка, загружаемый файл, тип, метод и т.д. Включает
информацию, необходимую для отладки и сборки мусора, а также
определения классов, информацию о совместимости версий и другую
информацию, необходимую среде выполнения.
=====

Метаданные - это грубо говоря тот же манифест. В нем могут хранится
сведения об атрибутах объектов, хранятся сведения об используемых
версиях компонентов. В принципе, доступ к ним как-то и не нужен
разработчику - все это - головная боль для CLR и JIT.

Ответить

Номер ответа: 7
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #7
Добавлено: 12.01.04 05:49

>>Стандартные
типы данных вроде Integer или String, а также формы, контролы - это
тоже классы и они тоже входят в состав .NEt Framework.

===

Хм. Очень интересно. А не мог бы ты привести пример класса например типа Integer? Всегда было интересно как же эти стандартные типы клепают.

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 12.01.04 12:08
Не, такого я не знаю.

Тут дело все в том, что эти типы хранятся в стеке, а вот как получить
туда доступ, в MS вроде пока не гооврят. Но вот сделать подобное даже
можно - на C# можно перегрузить стандартные операторы типа +/-, а это
уже просто огромные возможности.

Ответить

Номер ответа: 9
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #9
Добавлено: 16.01.04 05:12
To Artyom: Я так понимаю, сделать так, чтобы твои данные хранились в
стеке, можно только сделав структуру и никак иначе (это я недавно
Эплмана перечитывал :) ).

To Cyrax: Всё в .NET - классы. Все типы данных - тоже классы, они
унаследованы от класса Object и имеют ряд его методов/свойств, типа
Equals, GetType, ToString и т.д.

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 16.01.04 22:32
Я немного не это имел в виду - я имел в виду создание абсолютно новой
переменной, причем именно моим кодом должно определяться, в каком виде
в стеке это будет храниться, как, например, сделать число сверхбольшой
точнисти - 100, 200 чисел после запятой. Конечно, сразу придумать
применеие такому трудно, но вот если такая ситуация возникнет, то нам
ничего не остается, как ограничиться кучей ... Хотя, может, не
настолько эта куча хуже и медленнее стека...

Ответить

Номер ответа: 11
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #11
Добавлено: 17.01.04 09:57
Применение - для решения олимпиадных задач :) Чтобы не извращаться с
длинной арифметикой.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам