为什么Java on Server和C#on Client是一个受欢迎的选择?

时间:2009-04-25 04:32:12

标签: c# java client-server

我已经看到了一些例子,其中架构是服务器端有java,客户端有c# - 这个组合是如此优秀?为什么双方的.net都不是更好的选择(或者事实上,双方都是java?)

后来添加:在很多情况下,java托管在Windows服务器本身,我认为通过tomcat(不是100%肯定) - 这里的动机是什么?

8 个答案:

答案 0 :(得分:16)

Java经常在后端使用(并且已成为事实上的标准),原因有很多:

  • Java可以透明地运行在各种操作系统上,从Windows开发工作站到专用的unix服务器。
  • Java强制采用模块化,面向对象的编码方法,允许编写大型系统(希望如此)而不会变得难以管理。 (对于C#/ .NET也是如此,但对其他后端语言如Perl或Python则不然)
  • Java经常用于后端系统(对于特定应用程序来说,语言越流行,就越有可能为该特定应用程序使用该语言的成熟库和工具)

C#具有很好的工具和库,可用于在Windows中设计UI。 Java的操作系统(OS)独立性为操作系统UI的特定怪癖提供了更少的工具,而C#由Microsoft设计和维护,用于编写Windows应用程序。

答案 1 :(得分:5)

嗯,有很多情况下两端都使用了.NET(我猜想同样适用于Java)。但我对Java服务器/ .NET客户端架构背后的动机的猜测是,应用程序将Unix作为服务器操作系统,出于成本或可靠性的原因,或者因为它需要适应现有的Unix服务器环境(例如工作)与现有的Unix应用程序紧密相关),但将Windows作为客户端平台。 (我认为Java在使用Windows作为服务器平台的情况下可能不太常见;但是没有数据支持这一点。)

如果假设是Unix服务器操作系统,那么Java是一个非常有成效的选择,很多库都支持,但是具有更大的开发人员基础(至少在“企业”环境中),以及更多的“管理”识别例如Perl,Ruby或Python。

相反,.NET更适合Windows客户端,因为它对构建Windows GUI有更好的支持。它不仅仅是工具:Java GUI API本身(例如Swing)倾向于优先于原生外观的跨平台相似性,因此往往会导致应用程序看起来或行为不像Windows应用程序。 (我在这里概括了一点 - 对不起!)

答案 2 :(得分:2)

像JSON这样的数据交换格式使得连接两侧的系统都是相同的低级技术远没那么重要。

Java是一种经过良好测试和支持的服务器语言,而C#拥有构建GUI的强大工具。

答案 3 :(得分:2)

Java被认为是更成熟的,这是服务器的一个很好的属性,而C#与Windows和办公室(客户喜欢)有更好的集成/类似的外观和感觉

答案 4 :(得分:0)

大多数服务器都是基于Windows或* nix的。所以在服务器上,无论是Java还是.NET / C#(通过mono on * nix)都会非常好。

Java对不同的客户端设备提供了更好的支持,但在很多方面,大多数客户端的HTML支持都取代了这一要求 - 至少对于在线设备而言。

对于已安装的客户端应用程序,可以说Java具有更好的可移植性 - 但是使用Compact Framework,Micro Framework,Silverlight等等.NET正在迎头赶上。

就个人而言(由于工作角色),我主要关心 服务器上的内容; .NET / C#从未让我失望 - 但我不是Java开发人员,所以我无法直接对比。从开源项目的工作中我知道有一个很好的社区人在服务器上使用mono。

在客户端,像WPF这样的工具提供了一流的GUI体验,.NET支持winforms对常规Windows应用程序非常有用。但由于很多WPF架构在Silverlight中很常见(Moonlight作为* nix等单声道双胞胎),因此这种体验也可用于非Windows客户端。

答案 5 :(得分:0)

就Java而言,有两件事

  1. Linux操作系统。它可靠又便宜。企业使用大量Linux for Java的原因之一是因为他们不需要在Patch Tuesday之后重启盒子。
  2. 热点。它是现代世界的奇迹之一 - 惊人的表现。

答案 6 :(得分:0)

Fortyrunner,我还没有看到热点JVM将击败MS CLR的单一基准测试。

答案 7 :(得分:0)

在服务器端,Java已被证明具有强大的可扩展性,并且可以在.NET梦寐以求的平台上使用。因此,如果您想要硬件中最多的选择Java是一个很好的选择 - 这包括具有许多CPU的非常大的机器以及许多集群的廉价x86机箱。

如果你在服务器端有.NET,你必须使用Windows,而Windows根本不能很好地扩展硬件。