Подтвердить что ты не робот

Что такое отношение .NET к ОС Windows Kernel/OS и другим ОС

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

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

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

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

  • Является ли .NET взаимодействовать с ядром Windows напрямую (например, Win32) и взаимодействовать с объектами COM? Выполняется ли .NET в изолированной программной среде и не позволяет получить доступ к определенным областям ОС?

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Выполняет ли .NET запуск API win32?

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

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

Поддерживает ли .NET взаимодействие с объектами COM?

Да, это так, используя COM-взаимодействие.

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

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

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

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

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

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

Ответ 2

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

Ответ 3

Для .NET существует несколько частей.

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

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

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

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

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

Ответ 4

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

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

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

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

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

Ответ 5

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

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

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

простую статью о dot net здесь http://www.codeproject.com/KB/dotnet/allaboutnet.aspx