我真的无法理解您为什么要放弃 C# 和 .NET,唯一的原因是您不想通过要求他们安装 .NET 框架来“给客户带来不便”。
一方面,.NET 现在包含在 Windows 中。在 XP(当前服务包)中,您将获得 .NET 2.0。在 Vista 中,您将获得 .NET 3.0。假设您实际上不使用任何 .NET 3.5 功能,并且不需要 C# 3.0 中的任何功能,那么“给客户带来不便”的论点就没有实际意义了。他们不需要下载任何东西或安装任何额外的东西......它已经存在了。
如果您确实需要 .NET 3.5 和/或 C# 3.0,那么为您的客户创建一个预打包的安装程序来为他们处理这一切是非常容易的。对客户没有任何真正的“不便”,因为无论如何他们都必须安装您的程序。单一安装可以在单一、无缝、透明的安装过程中处理您的程序及其所有依赖项。如果您希望为您的客户提供更轻松的时间,您可以选择使用 .NET、C# 和 Visual Studio 进行一次单击部署。这将为您的客户创建一个简单的站点,让他们可以轻松快速地下载和安装您的应用程序,并在将来发布更新时对其进行更新。
正如其他人所提到的,C# 和 .NET 可以提供很多东西。Microsoft 在 .NET 平台上创建了一个广泛的开发生态系统,其中包含大量资源、工具、文档和社区帮助。C# 是一种非常干净、现代、具有前瞻性的语言,它提供了许多工具来帮助您和您的开发人员尽可能快速、简单和高效地解决问题。迁移到 C++ 意味着您不仅会失去这些有用的进步,而且还会继承手动内存管理的噩梦。迁移到 Java 意味着您失去了这些有用的进步,但通常也不会真正获得有用。您可以迁移到其他 .NET 语言,但是您并没有解决您提到的唯一问题:您的客户端对 .NET 框架的依赖。
如果你已经有一个用 C# 开发的系统,我会说不要改变任何东西。您将失去很多,并且不会真正获得任何会对您的客户产生重大影响的东西。从长远来看,任何更改都极有可能对您的公司和开发人员产生更显着的影响。您将承担重写或转换代码的成本,培训您的开发人员使用新语言和可能的新开发平台的成本,查找和修复很可能已经在您当前代码库中修复的错误所涉及的成本,以及名单还在继续……
在您决定它对您的客户来说太不方便之前,您需要了解更多关于 .NET 所提供的功能。在决定做出如此剧烈而昂贵的改变之前,您需要确保这确实给您的客户带来了不便。