【问题标题】:.NET or WinAPI [closed].NET 或 WinAPI [关闭]
【发布时间】:2009-05-26 12:50:38
【问题描述】:

我正在尝试构建一个桌面应用程序。最大的要求是它应该尽可能小。对于 Windows 用户,使用 .NET 还是 WinAPI 构建更好?我不是软件背景,如果这是一个无意义的问题,请原谅我,但我听说使用 .NET,有可能某些 Windows 用户的计算机上可能没有它,在这种情况下,他们将被要求下载大量软件,而使用 winAPI 绝不会如此。是对的吗?有多少百分比的 Windows 在他们的计算机上可能没有 .NET 2.0?另外,我听说在 WinAPI 中开发这个小应用程序需要更多的努力。这样做是否值得,还是 .NET 能让您接触到几乎同样多的用户? 谢谢

PS。我是这个论坛的新手(正如我上面提到的,来自非软件背景),但我不得不说这个论坛是我找到的最好的论坛,可以对我正在尝试构建的应用程序做出一些基本决策。但问题是,我学的越多,就越没有。我遇到的问题.. 感谢大家的帮助:-)

【问题讨论】:

  • 第一个错误:问答网站!= 论坛
  • 第二个错误:阅读faq,问题应该“详细而具体”,上面至少有4个问题! :)

标签: .net windows winapi desktop


【解决方案1】:

最大的要求是尽可能的小。

如果该要求是合法的,它几乎会迫使您进入 win32 API 级别。但我真的质疑这个要求。如今,下载几 MB 的空间已不再是过去的样子,如果您的大部分用户群仍在拨号上网,那么有一些方法可以缓解这些问题。将此与为 Win32 和 .Net 开发增加的难度(以及因此的时间)进行比较是很有意义的。

有多少百分比的 Windows 在他们的计算机上可能没有 .NET 2.0?

很难获得真正的渗透率,我看到的统计数据高达 >90% 和低至 20%。所以这一切都归结为你想相信什么。如果真的有那么大的交易,您可以为单声道开发并使用它来静态链接运行时。

【讨论】:

  • “你可以为单声道开发并使用它来静态链接运行时”——那么非常少,嗯? :)
  • mono 在过去的一年里成熟了很多。你可能想再看看。 Winforms 现在几乎完全实现了。
  • 我知道,我只是指构建一个占用空间尽可能少的应用程序可能与将整个 Mono 静态链接到其中相反:-)
【解决方案2】:

看看this的问题。

但是,如果您需要一个非常小的可执行文件,而无需安装完整的 .NET 框架,请选择 Win32。您没有在 Windows XP 上预装 .NET 框架。

【讨论】:

    【解决方案3】:

    由于 Windows Update 和用户可能已安装的其他程序,大多数计算机现在都以某种形式安装了 .NET。如果您是编码新手,我肯定会使用 WinForms/.NET 而不是直接为 Windows API 编码。它更简单,即使更大。

    【讨论】:

      【解决方案4】:

      另外,我听说正在开发 WinAPI 中的这个小应用程序将占用 更多的努力。

      好的,假设您要制造一辆汽车。

      1. 您转到汽车零件目录,为发动机订购正确数量的阀门、活塞、齿轮、风扇、散热器等。您订购了构建变速器所需的所有润滑剂、齿轮、轴承、螺母和螺栓。您订购前照灯、灯泡灯泡、刹车灯、转向灯、倒车灯。

      您订购了足够的钢材将底盘焊接在一起,订购了一些座椅,一些布来装饰它们,一个变速杆,踏板,灯开关,车门,窗户玻璃,最后是后视镜。

      一切都到了,你必须把它们放在一起。底盘的强度取决于最坚固的焊缝,而将它们组合在一起是一项艰巨的任务,而且出错的余地很大。直到你把所有东西放在一起,你才意识到你还没有订购任何轮毂或轮胎。

      这是 Win32,windows api。

      1. 您转到汽车零件目录,订购了一个底盘,上面安装了座椅、灯、轮子等。您订购了发动机和变速箱。三样东西到了。您仍然需要安装发动机并连接变速箱(这不是简单的任务),但这是一个简单得多的提议。

      这是 .net 框架。

      如果项目比幼儿遥控车大,请使用分发命中并使用.net

      【讨论】:

        【解决方案5】:

        如果需要很小,一定要使用“本机代码”。但是,这要困难得多,尤其是如果您不是软件背景的话。

        将这件工作外包可能会更好?

        【讨论】:

          【解决方案6】:

          编写调用 WinAPI 的本机(非托管)代码将为您提供更小的占用空间,而不依赖于 .NET 框架。

          但如果您想要更小的 .net 框架部署,请查看.net client profile。您通常使用的所有 .net 程序集都占用 28mb 的空间。 (使用 200kb 引导程序,仅安装客户端计算机上尚未安装的内容)

          另见this blogpost

          【讨论】:

          • 3.5 客户端配置文件仍然大于整个 2.0 运行时,您更有可能需要运行它。
          • 没错,但如果您需要任何包含在 3.5 框架中(但不是 2.0)的东西,这是一个选项。
          【解决方案7】:

          “尽可能小”是最重要的要求吗?走这条路时,您将拥有更少的依赖项(因此更小的可部署项目),但您的开发成本和时间会增加。

          我要冒昧地说大多数 Windows PC 已经安装了 .NET 框架(通过 Windows 更新或预安装)。如果您是针对 XP 或 Vista 进行开发,那肯定是这种情况。

          但更重要的是,最终包装的大小与实现价值的时间一样重要吗?您将更容易找到在 .NET 中快速编写好代码的开发人员。 WinAPI 开发可能是乏味的、缓慢的,并且在调试中花费大量时间。这并不是说 WinAPI 开发人员不擅长他们所做的事情,但 .NET 是软件开发的一个进步,它可以让您更多地关注业务问题,而不是技术领域。

          如果您是 PM 或项目负责人,您可能需要考虑进行成本分析,以确定在您的决策中真正重要的是什么。

          【讨论】:

            【解决方案8】:

            使用 Silverlight。 .Net 的易用性,不依赖于本地软件配置。将来甚至会在 Linux 上运行良好。并且在某种程度上在手机上:)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-12-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-08-28
              相关资源
              最近更新 更多