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

时间:2010-06-24 23:17:45

标签: c# .net c++ c vb.net

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

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

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

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

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

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

非常感谢您的工业见解!

11 个答案:

答案 0 :(得分:21)

  

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

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

  

大多数“主要”Windows应用程序是使用C / C ++开发的吗?

2a)见#1。

  

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

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

  

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

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

  

我认为最近几年.NET是Microsoft为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中开发时间相等的人,在其他条件相同的情况下,并没有在两者之一中做太多的开发:)

答案 1 :(得分:9)

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

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

坦率地说,后者可能是最激动人心的工作所在。它允许您在需要时具有“接近金属”的原生代码感觉,但仍具有最新.NET框架(例如WPF)为用户界面层提供的所有功能,非绩效关键部分。随着时间的推移,这变得越来越普遍 - 例如,Visual Studio仍然主要是本机(C ++)代码,但整个用户界面是使用WPF(.NET)编写的。

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

答案 2 :(得分:8)

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

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

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

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

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

答案 3 :(得分:5)

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

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

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

答案 4 :(得分:4)

  1. .NET当然用于独立应用程序,但确定确切的百分比几乎是不可能的。
  2. 是的,他们大部分是使用较旧的语言。很多肯定可以完成.NET,但你需要一个很多的激励来重写像Word,Photoshop等一样大的东西。
  3. 不一定,但它看起来很简单,因为很大比例的业务应用程序可以(并且被)写成数据库前端。
  4. 我不认为MS在这里有一个真正统一的信息 - 他们肯定会在.NET中投入大量工作,但他们也会继续开发和改进MFC等替代品(可能至少部分是因为他们自己使用它。)
  5. 其中一些。不仅仅是速度,C ++和C提供了灵活性,可移植性(例如,适用于Mac的Office)以及更强的区分应用程序与其他应用程序的能力。

答案 5 :(得分:4)

大多数大型Windows应用程序都是C ++,因为它们是在.NET存在之前编写的 。花费2年的开发时间在.NET中重写Microsoft Office(比如说)是没有意义的,只有两年前你的开始就是结果。

相反,大多数大型软件应用程序都在慢慢地构建.NET。例如,查看VSTO,了解C ++应用程序中.NET互操作性的一个很好的例子。

另一方面,微软已经发布了许多完全(或主要)用.NET语言编写的软件包。 Expression Blend可能是他们的第一个。 Visual Studio 2010(主要是基于WPF的)是最新的。

答案 6 :(得分:2)

  1. ASP.NET非常大,因为控制硬件。无论你的用户是在linux上还是在mac上都没关系。页面呈现并起作用。当您将硬件作为参数时,人们对.NET很谨慎(单声道)是非常独特的Windows。 (Mono'有效',但它不像其他x平台方法那样被接受)。

    .NET还需要下载为安装程序(.NET Framework)。对于安装使用东西的用户而言,存在很多摩擦,这在XP中是一个小障碍,但现在3.0 / 3.5已经融入了vista / win7,它已成为一个无问题。

  2. 过去,是的。这些天,没有那么多。 (纠正我,如果我错了,因为我很可能)我相信VStudio 2010和Office 2007+现在都是用.NET开发的,因为它们并不需要最大的性能。 C / C ++对于游戏来说仍然更快,但即使是一些独立开发者也在XNA上为xbox / pc构建游戏(DX for .NET,sorta)

  3. 没有。 .NET并不像以前那么慢。现在有很多大型应用程序在.NET中构建,因为它提供了各种各样的功能来开发更快,更好,更稳定的BIG应用程序。

  4. .NET不使用MFC。 Winforms挂钩GDI +,WPF挂钩Windows Presentation Foundation来执行api调用。 .NET在很大程度上是重写,但有些东西(比如直接文件i / o,被包装到windows API)

  5. 软件是用C / C ++开发的,因为它是a)快速b)众所周知的。但是对于今天的新程序员来说,我认为它正在发生变化。我也相信索尼维加斯的新版本已经为.NET重写了,但我可能再次错了。要记住的关键是.NET不像过去那么慢,MS一直在努力解决性能问题,因为他们想出售.NET for Windows开发。

答案 7 :(得分:1)

Windows本身不是用.NET编写的。这是有充分理由的......

答案 8 :(得分:1)

主流应用程序中.NET的一个主要问题是ISV生成它们想要具有可移植代码。例如,Photoshop有一个非常成功的Mac OSX版本。当然,这种可移植性恰恰不是微软的目标。

现在,对于网络而言,这并不重要。您可以在服务器端使用.Net,但仍然可以生成与Safari兼容的网站。

答案 9 :(得分:1)

恕我直言,只要IE成为托管应用程序,就会出现这种趋势。

答案 10 :(得分:1)

如果您想为无法雇用程序员的小型商店开发LOB应用程序,并且您希望提供最少的工作以进行最低限度的工作,请将其写入 MS-Access 。严重。

https://stackoverflow.com/questions/2437387/is-ms-access-still-the-most-efficient-rad-tool-for-small-scale-custom-apps