我对.NET究竟是什么感到困惑。我是一名计算机科学专业的学生,他在C ++和C ++中完成了很多Win32(WinAPI)编程。非常了解Win32功能如何与COM& amp; 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驱动程序。
答案 0 :(得分:11)
一些简短的答案让你继续前进:
具体来说,如果Win32是用C编写的API,那么什么是.NET?它是用C编写的API吗?
.NET由多个部分组成。一部分称为CLR。该部分是用C ++,C ++ / CLI和一些程序集编写的。这对运行.NET应用程序负责。 Just-In-Time(JIT)编译器是其中的重要组成部分。
然后是包含的库。这些主要是用C#编写的,但其中一些可能是用C ++ / CLI编写的。您实际上可以获得许多包含的库的源代码。
它是否仅在win32等Windows操作系统上运行?
也不是,有一个在Linux上运行的端口(称为Mono),有一个在WIndows Phone 7上运行的版本,然后还有可以在Mac上运行的Silverlight ....
.NET是否在win32 API的ontop上运行?
在很大程度上,是的,虽然在某些地方它已经开始取代常规的WinAPI(当然微软计划在一个阶段尝试和.Net-ify大部分或全部的WinAPI)。我不打算用它编写驱动程序,你仍然会使用常规的C / C ++与Kernel 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。
答案 1 :(得分:7)
答案 2 :(得分:1)
.NET有几个部分。
微软已将.NET的部分内容纳入标准 - 其中部分内容已通过Mono项目为Linux实现。
您可以使用pInvoke(平台调用)使用.NET与COM进行交互。在这方面,它不是沙盒。这意味着您可以使用.NET调用任何PE样式的可执行文件。当然,有无数语言可以编译成IL(称为.NET语言) - 最着名的是C#,VB.NET和F#,但是有python(Iron Pyton),COBOL等等的实现。
对于Web应用程序 - 在IIS Web服务器上运行有几个Web框架(ASP.NET和ASP.NET \ MVC是Microsoft创建的)。 .NET不会在浏览器中运行,而不是本机运行,但服务器会生成浏览器使用的HTML。与所有其他Web应用程序一样,如果以这种方式开发,它们可以在所有浏览器上运行。
您可以使用插件在浏览器中使用.NET(Silverlight和MoonLight是最知名的)。
答案 3 :(得分:1)
.NET Framework包含一个运行时引擎(JIT / Native Compiler),并且有大量主要使用C#编写的库。
这允许使用公共语言基础结构(CLI是开放式规范)开发的语言位于框架上,因为每种语言的编译器将代码编译为.NET运行时引擎执行的MSIL(Microsoft中间语言)。 p>
目前,Novel正在开发Mono,这是一个用于.NET CLI语言的跨平台运行时引擎,但它仍然很早,大多数.NET 3.5规范都已实现。
就“网络应用程序”而言,在ASP.NET中开发的应用程序都是服务器端,并向浏览器提供HTML和javascript,以试图模拟一些WinForm样式的操作。
但Silverlight是非IE浏览器的浏览器插件,它包含.NET Runtime引擎和库的缩减版本,后者又可以在本地计算机上执行用.NET CLI语言编写的应用程序。
答案 4 :(得分:0)
只是你可以把它想象成win32 API的包装“实际上就是它!” 它也是将程序员与旧API及其问题分开的完整框架
它有像java这样的运行时,它能够在多个平台上工作
当然所有这些都在Windows API的
之上这是一篇关于dot net的简单文章 http://www.codeproject.com/KB/dotnet/allaboutnet.aspx