c# - 支持或反对 .NET(野兽)的案例

标签 c# .net

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




9年前关闭。




我工作的公司使用 C++ Builder 6。我们从一开始就一直在开发 native 代码。我们的旗舰产品完全用 native 代码编写。

进入 .NET Framework 及其花里胡哨。我跌倒,钩,线和沉降片。我说服管理层,.NET 绝对应该成为我们所有新软件开发的新框架,我们应该尽快开始迁移我们现有的代码线。有了所有的好处,它不需要太多的说服力。他们照常接受我的提议。

在这一点上,我开始开发我的第一个 .NET 应用程序。一切都在按计划进行。该项目只是我们产品的一个组成部分。所以我开始为这个新组件创建一个安装程序。作为一家公司,我们以尽可能为用户提供便利而自豪。即使是拥有数千名开发人员的 Microsoft 也不会像我们一样创建安装程序。例如,当您安装 Microsoft CRM 时,您只会获得需要安装的失败和先决条件列表,然后才能继续。不是我们。从来没有。如果您需要什么,我们将为您安装。

这让我们的安装感觉如此简单。 .NET Framework 未安装?没问题!我们会为你做的。需要 SQL Native 客户端吗?好!

问题是,现在我们的解决方案的一个组件是用 .NET 编写的,它使安装过程非常复杂。在我什至开始安装我们的产品之前,我需要执行以下操作:

  • 检测是否安装了先决条件
  • 如果不是,请安装它
  • 验证是否安装成功
  • 下一个先决条件

  • 要安装 .NET Framework,我首先需要 Windows Installer 4.5。但是不同的操作系统有不同的版本,所以我添加了操作系统检测并启动了正确的 EXE。哦,.NET framework已经打包在2k8了,安装exe不能运行,需要运行OCSetup.exe带参数安装。

    就这样继续下去。然后需要安装 SQL Express 2005。依赖性再次增加。

    我与管理层争辩说,即使是 Microsoft 也不能​​让用户如此轻松。他们的回答是,我们没有理由在这方面做得比他们好。除了我觉得他们采用他们的方法有很好的理由外,我无法反驳。

    突然间,我们的安装程序变得庞大。 .NET 的所有先决条件,甚至没有谈论 64 位支持,它有一个完整的独立范围的 EXE 可以安装。所以现在到了我们希望用户能够下载“快速”评估的地步。真是个笑话。您需要下载 500MB 才能运行 30MB 的应用程序。大多数安装包都是先决条件。

    管理层认为我们有太多的依赖项/先决条件。我完全理解。他们建议我们放弃 .NET 框架,回到本土,在安装方面仍然“容易”。这就是我想为 .NET 站出来解释大局的好处、改进的开发体验、更容易的维护和整体代码质量的地方。我的另一部分全心全意地同意他们!在 .NET 中进行开发只需要安装太多其他使安装复杂化的先决条件。

    是的,一些 .NET 拥护者会声称一切都应该安装在打补丁和更新的操作系统上。这是真的,但并非所有客户都这样,仅仅说“对不起,先更新”并不能解决问题。请记住,我们为整体用户体验感到自豪。

    我们现在正在考虑再次编写 native 代码,我知道我们正在失去开发速度和 .NET 的所有优点。但是我们在这方面正在取得进展,无论是否从大局来看都是小事。由于我们拥有 native 代码开发技能,而 .NET 实际上对我们来说是一个新领域,因此回过头来甚至是有意义的。

    我的问题是:贵公司对这个问题的看法是什么,如果它甚至是一个问题,假设我想继续将我们的所有产品迁移到 .NET,我向管理层提出的商业案例会是什么样的?

    最佳答案

    这就是为什么许多公司转而使用从您的主页即时下载所有先决条件的 Web 安装程序的原因。因为在大多数情况下,操作系统拥有所需内容的 99%(如果它们已使用 Windows 更新进行更新)。

    我不会将 x64 和 x32 的所有内容都放在同一个安装程序中。创建两个安装程序,每个架构一个。

    关于c# - 支持或反对 .NET(野兽)的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470131/

    相关文章:

    c# - 无法启动 Windows 服务,错误 1064

    c# - Singleton 上的 StackOverflowException

    c# - 扩展方法解析 IQueryable 与 IEnumerable

    c# - 为什么 DynamicObject 类中的方法不是通用的?

    c# - 用户是通过 UI 更改了该值,还是通过依赖属性更改了该值?

    c# - 为 .net 编织的外部 AOP(如 AspectJ)?

    c# - 为什么连接空字符串有效但调用 "null.ToString()"无效?

    c# - 如何使用正则表达式从隐藏字段中获取值属性?

    C# WinForms 序列不包含元素

    c# - Windows azure Worker Role 每周发送电子邮件