令我困惑的是...... .NET语言是Windows(独立)应用程序的主流语言吗?

Ape*_*ure 21 .net c c# c++ vb.net

我是一个好奇的.NET学生,没有任何商业工作知识,我一直对.NET语言的意义感到困惑?

问:如果你看一下求职网站,.NET似乎主要用于Web应用程序,对Windows应用程序来说并不多?(我梦寐以求的工作是开发独立的小型Windows应用程序.)

Q2.使用C/C++开发的大多数"主要"Windows应用程序?例如MS Word或OpenOffice等文字处理应用程序; 照片编辑软件,如ACD See或Photoshop; MSN或Yahoo Messenger; 光盘刻录机... .NET是否太慢而且太间接而无法处理这些任务?

Q3..NET语言主要仅用于涉及数据库后端的SIMPLE业务应用程序吗?例如工资单或GPS应用程序因为它对主要软件应用程序来说太慢而且太间接?

Q4.在过去的几年里,我认为.NET是微软为Windows应用程序鼓励的唯一开发工具,而C/C++是过时的语言?他们是否使用MFC来访问在新版本的Windows中过时的Windows API(向后兼容但不受Windows鼓励)?

Q5.如果C/C++是主要独立Windows应用程序的主要工具,那么(慢)托管代码方法只是一个笑话?或者C/C++的主导地位是由于大多数主要应用程序都比.NET更老?你能给我一些使用.NET开发的软件名称吗?

非常感谢您的工业见解!

Rex*_*x M 21

如果你看看求职网站,.NET似乎主要用于Web应用程序,对Windows应用程序来说并不多?

1).NET对于"主流"桌面应用程序来说并不常见,如果你认为主流是Photoshop等等.这通常更多是因为主流应用程序基于.NET早期编写的代码,这些应用程序永远不会被重写,只会增长.它们携带了以前版本的大量遗留代码.

是否使用C/C++开发了大多数"主要"Windows应用程序?

2a)见#1.

.NET是否太慢而且间接无法处理这些类型的任务?

2b)绝对不是..NET速度极快或速度慢.与任何工具一样,它取决于谁在使用它.

.NET语言主要仅用于涉及数据库后端的SIMPLE业务应用程序吗?例如工资单或GPS应用程序

3)薪资或GPS并不简单.业务线(LOB)应用程序可能非常复杂,而.NET通常很适合这些应用程序,因为它们非常复杂.

我想过去几年.NET是微软为Windows应用程序鼓励的唯一开发工具,而C/C++是过时的语言?

4)那是错的.C/C++并不过时,它们只是不同.它们为机器提供更精确的控制水平,以换取更长和更困难的开发时间.

如果C/C++是主要独立Windows应用程序的主要工具,那么(慢)托管代码方法只是一个笑话?或者C/C++的主导地位是由于大多数主要应用程序都比.NET更老?你能给我一些使用.NET开发的软件名称吗?

5)优势是非常遗传的.再一次,.NET并不慢.主流应用程序在很大程度上是众所周知的,因为它们比.NET长得多,因此没有理由期望许多(如果有的话).NET应用程序如Word或Photoshop所熟知或流行.未来几年,期待一些基于.NET的着名应用程序出现并不是不合理的.

编辑:

有些人似乎很困惑,并且相信在这个答案中的某个地方,断言.NET和c ++一样快.唯一的论点是,.NET和c ++都足够快,可以运行大多数主流应用程序.任何认为在c ++和.NET中开发时间相等的人,在其他条件相同的情况下,都没有在其中一个中做过多少开发:)

  • @pdusen:我猜你是一个C++开发人员,他没有使用过C#.如我错了请纠正我. (13认同)
  • @Qwertie讨论的不是.NET是否比c ++更快,而是.NET是否足够快以支持主流主流应用程序.答案是肯定的. (2认同)

Ree*_*sey 9

.NET越来越成为大多数Windows开发的首选语言,包括独立的桌面应用程序.

话虽这么说,C/C++仍然在这个领域大量使用.但是,在Windows上,许多"前沿"工作都是在.NET中完成的,或者是.NET与本机代码的混合.

坦率地说,后者可能是最激动人心的工作所在.它可以让你拥有的本地代码"靠近金属"感觉需要的时候,但仍然有一切为用户界面层和非性能关键部分被最新的.NET框架(如WPF)提供的功率.随着时间的推移,这变得越来越普遍 - 例如,Visual Studio仍然主要是本机(C++)代码,但整个用户界面是使用WPF(.NET)编写的.

我只做桌面Windows开发.我个人更喜欢使用.NET来实现我所能做到的一切 - 并且对于.NET没有意义的非常小(且越来越小)的部分,我们会回归到C/C++.


Dmi*_*mov 8

我对你的问题提出的一个问题是你问一个事实问题("大多数"是主要的"使用C/C++开发的Windows应用程序吗?")和判断/因果关系问题(".NET太慢而且间接过于处理这些问题任务?")一气呵成.

确实,大多数Windows桌面应用程序(例如Microsoft Office,Adobe Photoshop等)都是用本机代码编写的.然而,在服务器端,至少在Microsoft堆栈中,它都是ASP.NET,即托管代码,这也是事实.

现在考虑典型Web应用程序的性能要求比典型的桌面应用程序要严格得多 - 毕竟,当服务器应用程序可能有数千和数千时,桌面应用程序只有一个用户.因此你所暗示的因果关系听起来很脆弱.

正如其他人所指出的那样,在为桌面应用程序选择实现技术时,有许多要求正在发挥作用.它可能是可移植性,传统,现有代码库,开发人员培训,特定API的托管包装器的存在(历史上Windows通常缺乏后者)以及许多其他因素.

对于"所有托管"桌面应用程序的具体示例,我会引用ReSharper - 它是一个完全.Net桌面应用程序,具有非平凡的用户界面和逻辑.Visual Studio 2010还具有用托管代码编写的大量部分(包括UI /表示层).


Ash*_*Ash 5

我认为,有一些主要问题仍然导致相对缺乏商业.NET应用程序(您在本地软件商店的盒子中购买的类型):

  • 要求客户(可能)下载正确版本的框架运行时和/或在运行应用程序之前安装它.
  • 在需要超高性能的地方,.NET数组/集合边界检查(一般的托管代码保护)明显慢于不为您执行此操作的语言/工具.
  • JIT编译导致启动时间变慢的视图.
  • 在.NET中重写1000行的C/C++代码行通常没什么商业价值.

我不是说这些问题是否有效,只是试图回答你的问题,为什么还有一个相对缺乏商业(收缩包装)的.NET软件.


Jer*_*fin 4

  1. .NET 当然用于独立应用程序,但确定准确的百分比几乎是不可能的。
  2. 是的,它们主要是用旧语言完成的。许多工作当然可以使用 .NET 来完成,但是您需要很大动力才能从头开始重写像 Word、Photoshop 等这样大的东西。
  3. 不一定,但它看起来可能是这样,因为很大一部分业务应用程序可以(并且正在)编写为数据库前端。
  4. 我不认为 MS 在这里有一个真正统一的信息——他们确实在 .NET 上投入了大量的工作,但他们也继续开发和改进 MFC 等替代方案(可能至少部分是因为他们自己使用它) )。
  5. 两者都有一些。除了速度之外,C++ 和 C 还提供灵活性、可移植性(例如,Mac 版 Office)以及将您的应用程序与其他应用程序区分开来的更大能力。