Какое отношение имеет .NET к ядру / ОС Windows и другим ОС? - PullRequest
12 голосов
/ 15 сентября 2011

Я не совсем понимаю, что же такое .NET на самом деле.Я студент, изучающий информатику, много занимался программированием на Win32 (WinAPI) на C ++ и хорошо понимаю, как функции Win32 взаимодействуют с COM и самим ядром Windows.

Но где же.NET вписывается во все это?

  • В частности, если Win32 - это API, написанный на C, что такое .NET?Это API написано также на C?Работает ли он только на ОС Windows, такой как Win32?

  • .NET работает поверх Win32 API?Например, функция .NET showWindow() (очевидно, я это придумал) вызывает функции Win32 за кулисами, чтобы показать окно, или это идет напрямую в ядро, чтобы сделать это?Или .NET похожа на виртуальную машину Java?

  • .NET взаимодействует непосредственно с ядром Windows (например, Win32) и взаимодействует с COM-объектами?Работает ли .NET в «песочнице» и не разрешает ли какой-либо доступ к определенным областям ОС?

  • Я могу кодировать на разных языках, используя Win32 API, такой как c / c ++, VB, Perl.Какие языки я могу кодировать в .NET?

  • Это то, что действительно ставит меня в тупик.Я слышал о веб-приложениях, написанных на .NET?Что, как, что?На каком языке это написано?Работает ли .NET поверх IE?Работают ли веб-приложения .NET в Firefox или Safari (MacOS)?Является ли веб-приложение .NET похожим на Java-апплет, вы тоже получаете диск .NET?

Ответы [ 5 ]

11 голосов
/ 15 сентября 2011

Несколько кратких ответов, чтобы вы продолжали:

В частности, если Win32 - это API, написанный на C, что такое .NET? Это API написано также на C?

.NET состоит из нескольких частей. Одна часть называется CLR. Эта часть написана на C ++, C ++ / CLI и некоторой сборке. Это отвечает за запуск приложений .NET. Компилятор Just-In-Time (JIT) является важной частью этого.

Тогда есть включенные библиотеки. Они в основном написаны на C #, но некоторые из них предположительно имеют части, написанные на C ++ / CLI. Вы можете фактически получить исходный код для многих из включенных библиотек.

Работает ли он только на ОС Windows, например на win32?

Также нет, есть порт, который работает в Linux (называется Mono), есть версия, которая работает на WIndows Phone 7, а также есть Silverlight, который также работает на Mac ....

.NET работает поверх Win32 API?

В значительной степени да, хотя в некоторых местах он начинает заменять обычный WinAPI (на одном из этапов Microsoft определенно планировал попробовать .Net-ify большую часть или весь WinAPI). Я бы не стал писать драйверы для него, но вы все равно будете использовать обычный интерфейс C / C ++ для взаимодействия с API ядра.

Библиотеки совершают вызовы для многих различных частей win32 API. Это необходимо для плавного взаимодействия с другими приложениями Windows.

.NET взаимодействует с ... COM-объектами?

Да, с помощью COM-взаимодействия.

.NET работает в песочнице и не разрешает доступ к определенным областям ОС?

Некоторые варианты среды выполнения могут быть помещены в «песочницу» (Silverlight, WPF XBAP). Приложения .Net, обладающие разрешением UnmanagedCode, также могут вызывать код, написанный на неуправляемом C ++, с полным беспрепятственным доступом к системе (хотя вам все равно придется соблюдать небольшие неприятные вещи, такие как файловые ACL).

Я могу кодировать на разных языках, используя Win32 API, такие как c / c ++, VB, Perl. Какие языки можно кодировать в .NET?

.Net - это библиотека времени выполнения с JIT-компиляцией. Есть много языков, которые вы можете использовать, которые построены поверх фреймворка. JIT-компиляция также не является обязательной - вы все равно можете скомпилировать свои приложения для конкретной архитектуры ЦП.

Я слышал о веб-приложениях, написанных на .NET? Что, как, что? На каком языке это написано? .NET работает поверх IE? Веб-приложения .NET работают в Firefox или Safari (MacOS)?

Эти приложения могут быть написаны на любом языке .Net, хотя практически большинство из них будут использовать C # и VB.Net. Вы, наверное, слышали об ASP? Хорошо, ASP.NET (и его сестра ASP.NET MVC) - это следующее поколение - оно работает на сервере и отображает HTML + javascript, как и многие другие языки на стороне сервера. У вас также есть возможность запуска Silverlight на клиенте, он может запускаться как в браузере, так и вне его. Silverlight определенно работает в Firefox, Safari и Chrome.

7 голосов
/ 15 сентября 2011
  • .NET - торговая марка MS для виртуальной машины CLI;есть виртуальные машины CLI для других платформ;в основном "моно";однако даже .NET шире, чем просто win32, поскольку версии .NET существуют для XNA (xbox 360), мобильных устройств (CF), даже небольших устройств (MF), браузеров (SL) и телефонов (WP7 и т. Д.)..NET также иногда используется как имя библиотеки , и большая часть , которая написана на C #.В Windows 8 есть также WinRT, который еще больше сбивает с толку.
  • (см. Также выше) сочетание обоих;он имеет взаимодействие (P / Invoke) для случаев, когда ему нужны функции ОС, но он также может быть самоподдерживающимся.
  • обычно это виртуальная машина, так что да, это песочница;обратите внимание, что существуют некоторые компиляторы (моно AOT) для компиляции непосредственно в нативный код, например, ARM для устройств iOS (см. MonoTouch)
  • компиляторы CLI компилируются в IL;существует много CLI-компиляторов (и сред выполнения для динамических языков).IL - , как правило, , JIT-код для нативного кода по мере необходимости, но может быть выполнен заранее (NGEN) или не выполнен вообще (MF является интерпретатором IL)
  • «веб-приложение» существует , вероятно , ссылаясь на серверную часть;этот самый сайт имеет реализацию C # /. NET сервера.Существует также Silverlight и XBAP для работы с клиентами в браузере.Silverlight работает во многих браузерах, как и Moonlight (моно версия для платформ, отличных от Windows).
1 голос
/ 15 сентября 2011

.NET Framework содержит механизм времени выполнения (JIT / Native Compiler) и имеет большую коллекцию библиотек, написанных преимущественно на C #.

Это позволяет языкам, разработанным с использованием Common Language Infrastructure (CLI - открытая спецификация), находиться на платформе, поскольку компиляторы для каждого отдельного языка компилируют код в MSIL (Microsoft Intermediate Language), который выполняет механизм .NET Runtime.

В настоящее время Novel разрабатывает Mono, который представляет собой кроссплатформенный Runtime Engine для языков .NET CLI, но, опять же, он все еще находится на ранней стадии. Большая часть спецификации .NET 3.5 реализована.

Что касается «веб-приложений», то все приложения, разработанные в ASP.NET, являются серверными и возвращают HTML и javascript браузерам в попытке эмулировать некоторые действия в стиле WinForm.

Но Silverlight - это подключаемый модуль для браузеров, отличных от IE, который содержит урезанную версию механизма .NET Runtime Engine и библиотек, которые, в свою очередь, выполняют приложения, написанные на языке .NET CLI, на локальном компьютере.

1 голос
/ 15 сентября 2011

Существует несколько частей того, что такое .NET.

  • Среда выполнения.Это написано на C (AFAIK) - это то, на чем работает приложение .NET.Имеет сборщик мусора.Это то, что взаимодействует с ядром Windows.
  • BCL (библиотека базовых классов) - это набор библиотек .NET.Некоторые из них являются обертками над COM.В более ранних версиях было больше оболочек COM, чем в более поздних.
  • CL / IL (общий язык / промежуточный язык).Это язык низкого уровня (похож на байт-код Java).Большинство языков .NET компилируются с этим, и это то, что исполняет среда выполнения.

Microsoft превратила части .NET в стандарт - части, которые были реализованы для Linux с проектом Mono.

Вы можете взаимодействовать с COM, используя .NET, используя pInvoke (Platform Invoke).В этом отношении это не песочница.Это означает, что вы можете вызывать любой исполняемый файл стиля PE, используя .NET.И, конечно, существует множество языков, которые компилируются в IL (так называемые языки .NET) - наиболее известны C #, VB.NET и F #, но есть реализации Python (Iron Pyton), COBOL и многие другие.

Что касается веб-приложений - на веб-сервере IIS работает несколько веб-сред (ASP.NET и ASP.NET \ MVC - созданные Microsoft)..NET не запускает в браузере, не изначально, но сервер генерирует HTML, который использует браузер.Как и во всех других веб-приложениях, если они разработаны таким образом, они могут работать во всех браузерах.

Вы можете использовать .NET в браузере с помощью плагинов (Silverlight и MoonLight наиболее известны).

0 голосов
/ 15 сентября 2011

просто вы можете думать об этом как обертке для win32 API "на самом деле это так!" а также это полный фреймворк, отделяющий программиста от старого API и его проблем

имеет среду выполнения, такую ​​как java, и способен работать на нескольких платформах

и, конечно, все, если это работает над Windows API

простая статья о точечной сети здесь http://www.codeproject.com/KB/dotnet/allaboutnet.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...