.NET是否优于Win32或其他方式? 这将是两者的优点和缺点,在什么情况下一个会比另一个更好。 微软是否已发布.Net作为Win32的替代品?
我不是在询问需要维护的项目数量,而是关于 正在开发的新项目,哪些项目会更好。 你认为.Net缺少win32的重要内容(不使用dllImport)吗? 你认为Win32将被.Net
取代我问这个,因为我和我的一个朋友争吵, 而且我们都同意这两点都必须深入研究 我的朋友辩称.Net是不完整的,我说它几乎可以管理任何任务 非司机相关。 .Net在哪里失败?
答案 0 :(得分:20)
这些都来自我的POV。您的里程可能会有所不同。
.NET的优点:
.NET的缺点:
WIN32的优点:
WIN32的缺点:
两者都有自己的位置,并且可能会继续存在,直到真正的替代操作系统(Midori?某种形式的基于Web的操作系统?)上线并获得广泛认可。
答案 1 :(得分:15)
.Net(或者WinForms部分,无论如何)位于 Win32之上。或者,换句话说,Win32用于构建.Net表单组件。所以从这个意义上说,你可以将.Net视为一组预先构建的win32小部件。您还可以将.Net视为MFC的逻辑继承者。
.Net还可以在必要时直接调用Win32 API,为您提供垃圾回收,BCL中非常好的类库,以及C#和VB.Net中C / C ++的许多优秀语言功能
获得所有这些东西所失去的是一定程度的独立性。 .Net是一个附加的框架,默认情况下不附带所有版本的Windows,因此您需要在部署时担心额外的依赖关系。在使用任何高级垃圾收集语言时,您还需要考虑性能因素,其中看似简单的代码可能比您在幕后所做的要多得多。对于某些winforms组件尤其如此。
答案 2 :(得分:9)
你似乎已经意识到简短的答案,但为了清楚起见,我将在此重申:
Win32:功能强大且完整。 Windows平台上的任何记录行为都可以通过Win32编写,但是功能带来了责任和难度。在创建丰富的Win32体验方面存在相当大的微妙和难度。
.Net:功能强大,但是Win32的一个子集。 .Net为绝大多数业务线应用程序提供了足够的功能,但是丰富的用户界面和特定的专业情况根本就不存在,因为无论出于何种原因,BCL都不相信它感觉支持它。我遇到的最常见的例子是新版Windows中的UI功能,尽管PInvoke还有其他领域很有用。 .Net是一个更简单的模型来掌握和工作,然而,(根据我的经验).net的微妙之处很少不太可能射击我的脚比Win32。
如果你包括dllimport和PInvoke,那么我猜想.Net是一个合理的替代方案,能够在90%以上的任务中表现得相当好,而且WPF为托管世界带来了完全不同级别的丰富UI。
答案 3 :(得分:7)
这不是一个公平的比较,两者之间没有比较好的,这一切都取决于你想要完成的事情。对于大多数开发任务,.Net非常复杂,甚至可能比Win32具有更好的性能。另一方面,.Net甚至可以在窗户外运行,只需看看Mono。现在,为了开发驱动程序和低级别的东西,你可以更好地使用Win32。
答案 4 :(得分:6)
.Net没有取代Win32。 Win32是操作系统级别的界面,您可以将.Net视为一个位于Win32之上的小型OS环境或虚拟机。 .Net提供硬件架构中立性(如果您的客户端运行在Pentium IV,Core 2 Duo,Itanium,32位,64位或其他任何设备上,则无关紧要。)。Net提供了一个了解这些环境的优化安装程序,因此如果一条指令说“移动一百万字节”,它将使用平台上可用的“最优化”移动指令。
.Net使开发人员更容易:内置垃圾收集可以防止一个非常常见的错误,即忘记释放内存。 Visual Studio IDE集成可以说是任何语言的最佳开发环境。原型屏幕和代码肯定很快。 (当然,Visual Studio为编写Win32 API的C / C ++编码器提供了许多相同的优势。)
但是.Net以性价格实现了这些目标。代码必须在最终用户的机器上进行“即时”编译(JITted)才能运行。 .Net框架需要5-15兆字节的RAM才能加载足够的代码来执行“Hello World”。 .Net框架在速度低于400MHz或RAM少于512 MB的机器上表现不佳(您可以在更小,更慢的盒子上运行它,但其性能必须在逐个应用程序的基础上进行评估。)
答案 5 :(得分:1)
.NET
隐含C#
或C++/CLI
?
.NET
C++/CLI
C#
是不自然的。另一方面使用.NET
与Win32
比使用{{1}}更舒服。
答案 6 :(得分:-3)
用于HW访问WIN API是最佳选择。它更快,因为它直接与低级设备对话但没有免费午餐;您的代码将更复杂,并且不会原谅糟糕的编码。