|
|
1
24
答案很简单:更高层次的抽象和与幕后“真实”事物的脱钩。这就是为什么.NET可以在其他操作系统上实现。 事实上,如果没有.NET,这一切都是可能的,但这是不可行的。简单示例:NET中的WCF为您提供了一个人人都可以使用的一流IPC和SOA框架。它是内置的功能。在win32中,您可以使用第三方库或其他方式获得相同的自编码。用户群很小,你没有那么大的社区支持你的问题,而且很难实现。.NET框架为您提供了开箱即用的功能。 对于大量的应用程序,.NET将加快开发时间,使开发更加便宜。 对于特殊类型的应用,情况正好相反。用.NET开发实时应用程序几乎是不可能的,因为二级GC冻结了所有线程。
补充的:
不幸的是,Mono垃圾收集器并没有那么先进,所以基本语句对于Mono来说仍然是正确的。 |
|
|
2
15
只有开发Win32超过15年的人才能称之为简单和健壮。如果您愿意自己编写整个250000行代码而不是使用组件,那么您的应用程序将很容易安装。我不确定折衷是否一定值得。 由于种种原因,.NET给你的是更快的开发。更高的抽象性,优秀的组件,没有指针问题,不需要管理自己的内存或句柄。如果你已经开发Win32 15年了,也许你不需要这些。你有没有雇佣过新的初级程序员?我相信他们会比Win32更快地学习.NET。在你说“你好世界”之前,Win32还有很多东西要学。 |
|
|
3
6
使用方便。与.NET框架的其他部分(与Win32无关的部分)轻松互操作。 .NET没有什么神奇之处,它只是大量的预定义类,用于轻松地执行常见任务。其中许多任务都是类似“创建窗口”或其他Win32功能的东西。 至于Win32是“直截了当和健壮的”,我不这么认为。 下面是一个很好的例子:程序员将需要的最基本的功能之一:检索与刚刚发生的错误相关联的错误消息: http://msdn.microsoft.com/en-us/library/ms679351%28VS.85%29.aspx
只是为了实现这个简单的功能?这就是“直截了当”? Win32 API是最糟糕的设计、最复杂和难以使用的(至少正确的)API之一。它唯一能始终如一地做到的就是让简单、直观的用法出错,并且需要大量的步法来实现正确性。 但当然,任何花了十年时间使用API的人都已经面临这些问题,并且已经习惯了这些问题。对你来说可能没问题。更好的是,既然你已经有了你的申请,你还是坚持吧。没有理由扔掉它重新开始.NET 但是 如果 你今天白手起家,然后
|
|
|
4
6
在ASP.NET或ASP.NET MVC切换到Web开发之前,我在C++开发了大约8年的游戏。从我的观点来看,当使用.NET代替本地C++代码时,这些是最重要的优点:
|
|
|
5
6
两个字的总结: |
|
|
6
2
WinAPI用于在最底层与Windows交互,它涵盖了Windows操作系统向用户提供的所有功能。 .Net是一个框架、一个运行时和一个大型库集合,这些库服务于不同的目的并抽象Windows API。它基本上提供了隐藏windows API的OO抽象。 如果你使用.Net 仍然 透明地使用WinAPI,如果您选择通过PInvoking进入本机API,则可以直接使用它。 是否选择.Net而不是WinAPI取决于要生成的应用程序的类型。如果它是一个重外壳集成的应用程序,那么使用WINAPI,如果不是,但是您需要使用Post XML、连接(WCF)、图形(WPF)或数据访问(ADO.NET、LINQ)库,并且需要生产力提升.NET提供和交易过一些灵活性(您需要确保.NET在目标计算机上运行),这已经不是什么大事了)不是问题,然后选择了.Net。 |
|
7
2
.NET本身实际上包装了Win32API,因此原则上,使用.NET不能做任何使用Win32API不能做的事情。NET的优点是易于开发,这也意味着更快的交付和更少的bug。NET中的调试功能也要好得多。 NET的安装速度和运行速度并不是什么大问题。你可以用任何语言编写糟糕的软件,就像你可以用任何语言编写好的软件一样。在.NET中有不同的技巧和窍门,而不是C++中的技巧(因此这是一个学习曲线),但最终两者都是一样好的。 我甚至听到一个谣言,一个写得好的C语言程序实际上可以比一个等价的C++程序快,因为JIT编译器可以优化特定CPU的程序集,而C++优化器只能进行一般的优化。我不知道这是不是真的。 .NET软件的兼容性也类似于C++。一方面,它要求安装.NET框架,但另一方面,由于强名称和GAC,不再需要DLL hell。很多东西已经在默认安装中,通常你需要C++中的第三方库(比如XML解析、DB连接、SOAP Web Services、RPC等)。 |
|
8
2
如果不了解应用程序的性质,很难回答这个问题。如果它是一个典型的内部业务应用程序,具有大量的数据库访问和报表生成功能,我会说.NET给我们带来了很多好处。如果是游戏,图像处理,或者一般来说是你卖给广大客户的东西,我会坚持使用Win32。 |
|
|
9
1
.NET使您能够用真实语言编写Sql Server存储过程。尝试在Win32 DLL中执行此操作。 |
|
|
10
0
一些优点:
|
|
11
0
当我在开发MS-DOS应用程序时,我还想知道Windows开发的一些类似的东西。Windows很有趣,但我觉得DOS更实用。也就是说,直到我开始编写Windows应用程序并注意到Windows API非常有用。我在Windows中使用的RAD环境(Delphi)使我很容易为我的应用程序开发一个漂亮的GUI。对于Borland Pascal,虽然Turbo Vision确实为DOS提供了一个非常有用的环境,但这有点复杂。 大约8年前.NET被引入时,我认为它是一个用于Windows应用程序的大型运行时库,就像Windows本身是一个用于MS-DOS的很酷的图形库一样。这不是一个银弹或金锤打击你的问题,以解决方案。它只是让开发变得更容易的东西。 不过,当我将Windows应用程序与MS-DOS进行比较时,我仍然觉得DOS更加健壮。但是窗户让我更容易做到。当您将.NET与WIN32进行比较时,同样适用。事情变得更容易发展了。 |
|
|
12
0
除了你已经提出的观点。。
实际上,我想你会发现.NET包含了很多win32功能。 |
|
|
13
0
我发现VisualStudioExpress 8中的表单编辑器总是在我用.NET编码C++时崩溃整个IDE。当我用普通Win32做C++时,这种情况不会发生。当我使用.NET和C#编写表单时,不会发生这种情况,因此我被迫不再使用.NET,除非使用C#。 |
|
|
14
0
像.NET这样的虚拟机非常适合跨平台编码。如果不向.NET以外的函数发出任何非托管调用,则它可以在支持.NET的任何地方运行。 就像X-Box 360。或者Windows CE/Mobile/Whatever。 这对微软和Windows开发人员来说将是一件好事,因为使用类似于ARM的CPU,低功耗设备将更加高效。手臂是 不 将运行您的IA32 Windows应用程序,但它将在MS通过building.NET for ARM WinCE后运行您的.NET应用程序。 当然,Java也会这样做,而且如果您希望这样做的话,它在跨平台支持方面会更好、更成熟。 |
|
0___________ · 我可以在整个程序生命周期内保持句柄打开吗 2 年前 |