什么是.NET与Windows内核/操作系统和其他操作系统的关系

use*_*747 12 .net c# c++ winapi

我很困惑.NET究竟是什么.我是一名计算机科学专业的学生,​​他用C++完成了很多Win32(WinAPI)编程,并且非常了解Win32函数如何与COM和Windows内核本身进行交互.

但.NET在哪里适合所有这些?

  • 具体来说,如果Win32是用C编写的API,那么什么是.NET?它是用C编写的API吗?它只能在像Win32这样的Windows操作系统上运行吗?

  • .NET是否运行在Win32 API之上?例如,一个.NET函数showWindow()(显然我明白了)在后台调用Win32函数来显示窗口,还是直接调用内核来执行此操作?或者.NET是否像Java虚拟机一样?

  • .NET是否直接与Windows内核交互(如Win32)并与COM对象交互?.NET是否在沙箱中运行并且不允许某些操作系统访问某些操作系统区域?

  • 我可以使用Win32 API(如c/c ++,VB,Perl)编写不同语言的代码.我可以在.NET中编写哪些语言?

  • 这真的让我很难过.我听说用.NET编写的Web应用程序?什么,怎么样,哇?用什么语言写的?.NET是否运行在IE之上?.NET Web应用程序可以在Firefox或Safari(MacOS)上运行吗?像.NET applet这样的.NET Web应用程序,你是否也得到了.NET驱动程序.

slu*_*ter 11

一些简短的答案让你继续前进:

具体来说,如果Win32是用C编写的API,那么什么是.NET?它是用C编写的API吗?

.NET由多个部分组成.一部分称为CLR.该部分是用C++,C++/CLI和一些程序集编写的.这对运行.NET应用程序负责.实时(JIT)编译器是其中的重要组成部分.

然后是包含的库.这些主要是用C#编写的,但其中一些可能是用C++/CLI编写的.您实际上可以获得许多包含的库的源代码.

它只能在像Win32这样的Windows操作系统上运行吗?

也没有,有一个在Linux上运行的端口(称为Mono),有一个在WIndows Phone 7上运行的版本,然后还有在Silver上运行的Silverlight ....

.NET运行在win32 API的顶部吗?

在很大程度上,是的,尽管在某些地方它已经开始取代常规的WinAPI(当然微软的计划在一个阶段尝试和.Net-ify大部分或全部的WinAPI).我不打算用它编写驱动程序,你仍然会使用常规的C/C++接口到内核API.

这些库确实调用了win32 API的许多不同部分.这是与其他Windows应用程序平滑互操作所必需的.

.NET与COM对象交互吗?

是的,使用COM互操作.

.NET是否在沙箱中运行并且不允许某些操作系统访问某些操作系统区域?

运行时的某些变体可以是沙箱(Silverlight,WPF XBAP).拥有UnmanagedCode权限的.Net应用程序也可以调用用非托管C++编写的代码,并且可以完全不受限制地访问系统(尽管如此,你仍然必须遵守文件ACL之类的小问题).

我可以使用win32 API编写不同语言的代码,例如c/c ++,VB,Perl.我可以在.NET中编写哪些语言?

.Net是一个带有JIT编译的运行时库.您可以使用许多基于框架构建的语言.JIT编译也不是必需的 - 您仍然可以编译应用程序以针对特定的CPU体系结构.

我听说用.NET编写的Web应用程序?什么,怎么样,哇?用什么语言写的?.NET运行在IE上吗?.NET webapps可以在Firefox或Safari(MacOS)上运行吗?

这些应用程序可以用任何.Net语言编写,但实际上大多数都是使用C#和VB.Net.你一定听说过ASP吗?好吧,ASP.NET(和它的姐妹ASP.NET MVC)是下一代 - 它运行在服务器上并像许多其他服务器端语言一样呈现HTML + javascript.您还可以选择在客户端上运行Silverlight,它可以在浏览器内外运行.Silverlight绝对适用于Firefox,Safari和Chrome.


Mar*_*ell 7

  • .NET是CLI VM的MS品牌; 有其他平台的CLI VM; 主要是"单声道"; 然而,即使.NET比win32更广泛,因为.NET的版本存在于XNA(xbox 360),移动设备(CF),甚至更小的设备(MF),浏览器(SL)和电话(WP7等)..NET有时也被用作名称,而且大部分写在C#.在Windows 8中还有WinRT,它进一步混淆了事情.
  • (见上文也是)两者兼而有之; 它有需要操作系统功能的互操作(P/Invoke),但也可以自我支持.
  • 它通常是一个VM,所以是的,它是一个沙箱; 请注意,存在一些编译器(单声道AOT)直接编译为本机代码,例如ARM for iOS设备(请参阅:MonoTouch)
  • CLI编译器编译成IL; 有许多 CLI编译器(和动态语言的运行时).IL 通常根据需要对本机代码进行JIT,但可以提前完成(NGEN),或者根本不进行(MF是IL解释器)
  • "web应用程序" 可能指的是服务器部分; 这个网站有一个C#/.NET服务器实现.还有Silverlight和XBAP用于浏览器内客户端体验.Silverlight适用于多种浏览器,月光(单声道版本,适用于非Windows平台)也适用.