Другими словами, среда .NET в конечном итоге делает вызовы где-то, чтобы выполнить свою работу? Или Microsoft полностью воссоздала все функции библиотеки win32 в своей платформе .NET.
Спасибо!
Другими словами, среда .NET в конечном итоге делает вызовы где-то, чтобы выполнить свою работу? Или Microsoft полностью воссоздала все функции библиотеки win32 в своей платформе .NET.
Спасибо!
Это смесь. Очевидно, что такие вещи, как winforms, в значительной степени обертывают функциональность Win32 (или сочетание обоих миров), но WPF намного более управляется (с точки зрения фактического кода управления; под капотом, как отмечает Mash, он может использовать DirectX для рендеринг). Аналогичным образом, такие вещи, как доступ к файлам/сети, являются (по необходимости) обертками вокруг объектов ОС, а также неуправляемыми объектами блокировки, такими как Mutex
, но многие другие вещи управляются на 100%.
Так что это не простой ответ.
(edit) Также - имейте в виду, что ".NET" - очень неопределенный термин; Compact Framework, Micro Framework, Silverlight и т.д. Могут иметь разные реализации, отличные от win32.
Приложение .NET - это еще один процесс Win32, поэтому нет никакой магии и, очевидно, он будет использовать операционную систему underline. Даже библиотеки .NET используют Win32 в значительной степени.
Примеры:
Управление памятью обрабатывается внутренне для управляемого кода, но для сам процесс обрабатывается просто как и любой другой процесс Win32.
Текущие управляемые потоки также реализованы как потоки ОС.
Обновление: реализовано. Я ответил на неправильный вопрос (вы сказали, что время исполнения не является библиотекой классов). О, я все равно буду держать guff ниже!
Это зависит от части библиотеки:
Это просто от возиться с рефлектором. Очевидно, что являясь COM-сервером, CLR корпорации Microsoft в значительной степени зависит от win32.
В некоторых случаях (возможно, большинство из них, возможно, не отражены во всей структуре),.NET Framework делает вызовы win32. Большинство элементов управления - это просто win32-элементы управления, обернутые несколькими новыми функциями.
Да, он вызывает внутренние функции win32. Например, метод OpenRead в классе File содержит:
return new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
и он в конечном итоге вызовет:
SafeFileHandle handle = CreateFile(lpFileName, dwDesiredAccess, dwShareMode, securityAttrs, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
который является родной функцией win32, в глубине метода.
Mono - это реализация среды выполнения .net, и она, безусловно, не отображает вызовы функций win32 (по крайней мере, на Linux)
Я предполагаю, что ваш вопрос касался внедрения среды .NET в .NET.
Он вызывает API.NET, как это делают все приложения Windows. Но это больше, чем просто простая оболочка или карта, она более точно описана как абстракция.