我见过一些例子,其中的架构是服务器端有 java,客户端有 c# - 是什么让这种组合如此出色?为什么两边的 .net 都不是更好的选择(或者事实上,两边都是 java?)
后来补充:在很多情况下,java托管在windows服务器本身上,我认为是通过tomcat(不是100%肯定)——这里的动机是什么?
我见过一些例子,其中的架构是服务器端有 java,客户端有 c# - 是什么让这种组合如此出色?为什么两边的 .net 都不是更好的选择(或者事实上,两边都是 java?)
后来补充:在很多情况下,java托管在windows服务器本身上,我认为是通过tomcat(不是100%肯定)——这里的动机是什么?
Java 经常在后端使用(并已成为事实上的标准),原因有很多:
C# 具有用于在 Windows 中设计 UI 的出色工具和库。Java 独立于操作系统 (OS) 的性质为操作系统 UI 的特定怪癖提供了较少的工具,而 C# 是由 Microsoft 设计和维护的,目的是编写 Windows 应用程序。
好吧,在很多情况下,两端都使用 .NET(我猜 Java 也是如此)。但我对 Java-server/.NET-client 架构背后的动机的猜测是,该应用程序将 Unix 作为服务器操作系统,出于成本或可靠性原因,或者因为它需要适应现有的 Unix 服务器环境(例如工作与现有的 Unix 应用程序密切相关),但将 Windows 作为客户端平台。(我认为在 Windows 也被用作服务器平台的情况下,Java 可能不太常见;虽然没有数据支持这一点。)
如果假设是 Unix 服务器操作系统,那么 Java 是一个非常高效的选择,它受到许多库的良好支持,但拥有更大的开发人员基础(至少在“企业”环境中),并且比 Perl 等替代品更“管理”认可、Ruby 或 Python。
相反,.NET 更适合 Windows 客户端,因为它对构建 Windows GUI 有更好的支持。这不仅仅是工具:Java GUI API 本身(例如 Swing)往往更喜欢跨平台的相似性,而不是原生的外观和感觉,因此往往会导致应用程序看起来或行为不像 Windows 应用程序。(我在这里概括一下——对不起!)
像 JSON 这样的数据交换格式使得连接两侧的系统是相同的低级技术变得不那么重要了。
Java 是一种经过良好测试和支持的服务器语言,而 C# 具有用于构建 GUI 的出色工具。
Java 被认为更成熟,这对于服务器来说是一个很好的属性,而 C# 与 windows 和 office 具有更好的集成/相似的外观和感觉(客户喜欢)
大多数服务器都是基于 Windows 或 *nix 的。所以在服务器上,Java 或 .NET/C#(通过 *nix 上的 mono)都非常好。
Java 对不同的客户端设备有更好的支持,但在许多方面,这种要求正在被大多数客户端更好的 HTML 支持所取代——至少对于在线设备是这样。
对于已安装的客户端应用程序,可以说 Java 具有更好的可移植性——但随着 Compact Framework、Micro Framework、Silverlight 等,.NET 正在迎头赶上。
就个人而言(由于工作角色),我主要关心服务器上的内容;.NET/C# 从未让我失望——但我不是 Java 开发人员,所以无法直接对比。从开源项目的工作中,我知道有一个很好的社区在服务器上使用 mono。
在客户端,像 WPF 这样的工具提供了一流的 GUI 体验,.NET 对 winforms 的支持对常规 Windows 应用程序很有用。但是由于许多 WPF 架构与 Silverlight 通用(Moonlight 作为 *nix 等的单双胞胎),这也允许在非 Windows 客户端上使用体验。
就Java而言,有两件事
Fortyrunner,我还没有看到热点 JVM 会击败 MS CLR 的单一基准测试。
在服务器端,Java 已被证明是健壮且可扩展的,并且可以在 .NET 梦寐以求的平台上使用。因此,如果您想要硬件中的最多选择,Java 是一个很好的选择——这包括具有许多 CPU 的非常大的机器以及许多集群的廉价 x86 机器。
如果服务器端有 .NET,则必须使用 Windows,而 Windows 在硬件方面根本无法很好地扩展。