2009-04-25 10 views
5

He visto algunos ejemplos donde la arquitectura es que hay java en el lado del servidor y C# en el cliente, ¿qué hace que esta combinación sea tan buena? ¿por qué .net en ambos lados no sería una mejor opción (o de hecho, Java en ambos lados?)¿Por qué Java on Server y C# on Client son una opción popular?

añadido después: en muchos casos, el java está alojado en un servidor de Windows, creo que a través de tomcat (no 100% seguro): ¿cuál es la motivación aquí?

Respuesta

16

de Java se utiliza con frecuencia en el back-end (y se ha convertido en el estándar de facto) por un número de razones:

  • Java puede correr en varios sistemas operativos de forma transparente, desde estaciones de trabajo de desarrollo de Windows hasta servidores de Unix dedicados.
  • Java aplica un enfoque de codificación modular y orientado a objetos, que permite que los sistemas a gran escala se escriban (con suerte) sin ser inmanejables. (Esto también es cierto para C#/.NET, pero no para otros lenguajes back-end como Perl o Python)
  • Java se usa con frecuencia en sistemas back-end (el más popular es un lenguaje para una aplicación en particular, cuanto más probable es que haya bibliotecas maduras y herramientas en ese idioma para esa aplicación en particular)

C# tiene excelentes herramientas y bibliotecas para diseñar interfaces de usuario en Windows. El sistema operativo (SO) independiente de Java proporciona menos herramientas para las peculiaridades particulares de la IU de un sistema operativo, mientras que C# está diseñado y mantenido por Microsoft, con el fin de escribir aplicaciones de Windows.

+3

Como punto aparte - IMO todos los puntos se aplican igualmente a Java y .NET ... así que no estoy seguro son las "razones"; simplemente, "Java llegó primero" explica gran parte de ello. .NET/C# todavía se usan mucho en el uso del servidor; no son solo aplicaciones de Windows. De hecho, dado que mucho desarrollo se basa en la web en estos días, se podría argumentar que (según los números) * la mayoría * del desarrollo de .NET/C# se usa en los servidores; desglosado en ASP.NET, Mono Rails, servidores WCF, servidores de socket, servidores remotos, ASP.NET MVC y otros. –

+0

Además del enfoque OO, el otro punto adicional * no * se aplica a .Net. Java es independiente de la plataforma y se puede usar en un pequeño servidor Linux cuando se inicia y se mueve a una enorme máquina Solaris o Aix cuando se necesita hierro pesado. .Net es de Microsoft, de Microsoft (Mono es un clon incompleto que no está a la altura de los datos que siempre se ponen al día). – nxadm

2

Los formatos de intercambio de datos como JSON hacen que sea mucho menos importante que los sistemas en ambos lados de la conexión tengan la misma tecnología de bajo nivel.

Java es un lenguaje muy bien probado y compatible para servidores, mientras que C# tiene grandes herramientas para compilar GUI.

+1

Corto y dulce. Personalmente, creo que C# está construyendo lentamente soporte en el servidor, pero la falta de plataforma cruzada es un gran escollo. Mono reproduce la mayoría de .Net, pero no todo o lo mismo. – kevindaub

+0

Re intercambio de datos: de hecho. Aunque para sistema a sistema, xml sería más omnipresente, con formatos binarios portátiles como "búferes de protocolo" poco a poco ganando impulso. Mientras que Java * está * bien probado y admitido; también lo es C#/.NET - pero sí, las herramientas como WPF permiten un desarrollo de cliente muy potente en C# /. NET –

5

Bueno, hay muchos casos en los que .NET se usa en ambos extremos (y supongo que lo mismo para Java). Pero creo que la motivación detrás de las arquitecturas Java-server/.NET-client es que la aplicación apunta a Unix como el sistema operativo del servidor, ya sea por razones de costo o confiabilidad, o porque tiene que encajar en un entorno de servidor Unix existente (por ejemplo, de cerca con las aplicaciones existentes de Unix), pero apunta a Windows como la plataforma del cliente. (Creo que Java es probablemente mucho menos común donde también se usa Windows como plataforma de servidor, sin cifras para respaldar esto.)

Si se supone un sistema operativo de servidor Unix, entonces Java es una opción muy productiva, bien compatible con muchas bibliotecas, pero con una base de desarrolladores más grande (al menos en entornos "empresariales") y más reconocimiento de "administración" que con alternativas como Perl, Ruby o Python.

Por el contrario, .NET es la mejor opción para el cliente de Windows, ya que tiene una compatibilidad mucho mejor para construir GUI de Windows. No se trata solo de las herramientas: las propias API de la GUI de Java (por ejemplo, Swing) tienden a preferir la similitud multiplataforma sobre una apariencia nativa, y por lo tanto tienden a generar aplicaciones que no se ven ni se comportan como las aplicaciones de Windows. (Estoy generalizando un poco aquí - lo siento!)

2

Java se considera más maduro, que es un buen atributo para un servidor, mientras que C# tiene una mejor integración con la mirada/parecidos y sentir a Windows y Office (que los clientes similares)

0

mayoría de los servidores son Windows o * basado en nix. Entonces, en el servidor, Java o .NET/C# (a través de mono on * nix) serían perfectamente buenos.

Java tiene mejor soporte para diferentes dispositivos de cliente, pero en muchos sentidos ese requisito se reemplaza por la compatibilidad con HTML mucho mejor en la mayoría de los clientes, al menos para dispositivos en línea.

Para una aplicación cliente instalada, se podría decir que Java tiene la mejor portabilidad, pero con cosas como Compact Framework, Micro Framework, Silverlight, etc. .NET se está poniendo al día.

Personalmente (debido a la función de trabajo), me importa principalmente lo que está en el servidor; .NET/C# nunca me ha defraudado, pero no soy un desarrollador de Java, así que no puedo contrastar directamente. Del trabajo en proyectos de código abierto sé que hay una buena comunidad de personas que usan mono en el servidor.

En el cliente, las herramientas como WPF ofrecen una experiencia de GUI de primer nivel, con el soporte de .NET para winforms siendo útil para las aplicaciones de Windows normales. Pero dado que gran parte de la arquitectura de WPF es común con Silverlight (con Moonlight como el gemelo mono de * nix, etc.), esto permite que la experiencia se use también en clientes que no son de Windows.

+0

Mono no se puede comparar con .Net. Mono es un clon incompleto, no actualizado y siempre actualizado. Hay personas que lo usan en servidores * nix, pero no mucho. Las personas de Windows prefieren desarrollar una pila completa y actualizada (.Net) y la gente de Unix no quieren ser ciudadanos de segunda clase (Mono juega ponerse al día para recordar), mientras que existen alternativas maduras, probadas y libres de riesgo (¡patentes!) Para su plataforma. Si le preocupa la independencia de la plataforma, Java es el camino a seguir, también en Windows. Si solo programa para Windows, .Net es una opción. – nxadm

+0

Bueno, .NET también está incompleto. Si estuviera completo, ¡dejarían de cambiarlo! Sé de primera mano de muchas personas que usan servidores mono en producción * nix. Y definitivamente hay áreas (aisladas) donde Mono tiene una ventaja (el compilador como un servicio, por ejemplo). Creo que simplifica demasiado las cosas al decir lo que quiere decir "gente de Windows" frente a "gente de Unix". En última instancia, todos queremos hacer el trabajo con las limitaciones de tiempo/presupuesto/etc. apropiadas, recibir pagos e irnos a casa. –

0

En lo que se refiere a dos cosas Java

  1. Linux. Es confiable y barato. Una de las muchas razones por las que las empresas usan una gran cantidad de Linux para Java porque no tienen que reiniciar las cajas después de Patch Tuesday.
  2. Hotspot. Es una de las maravillas del mundo moderno: un rendimiento increíble.
0

Fortyrunner, no he visto un único punto de referencia donde un punto de acceso JVM supere a MS CLR.

0

En el lado del servidor, Java ha demostrado ser robusto y escalable, y está disponible en plataformas que .NET solo puede soñar. Por lo tanto, si desea la mayor cantidad de opciones en hardware, Java es una excelente opción; esto incluye máquinas muy grandes con muchas CPU, así como muchas cajas x86 baratas agrupadas.

Si tiene .NET en el lado del servidor debe usar Windows, y Windows simplemente no escala bien el hardware.