Me gustaría comprender mejor las razones del modelo de servidor de aplicaciones de .NET en comparación con el utilizado por la mayoría de los servidores de aplicaciones Java.Diferencias entre los servidores de aplicaciones .NET frente a los servidores de aplicaciones Java
En la mayoría de los casos que he visto con aplicaciones web ASP.NET, la lógica de negocios se aloja en los procesos de host asp.net del servidor web. Otro enfoque común es tener un nivel físico o lógicamente diferente que aloja sus objetos comerciales y luego se exponen como servicios web o se accede a través de mecanismos como WCF. El último enfoque, por lo general, pero no siempre parece usarse cuando se requiere una escala mayor. En los días de los objetos COM, he visto Microsoft Transaction Server (MTS) y posterior COM + hosting utilizado para alojar objetos COM que contienen lógica de negocios, con MTS (teóricamente) administrando la duración del objeto, transacciones, concurrencia yada yada. Este modelo parece haber desaparecido en gran medida en ASP.NET land.
En el mundo de Java, es posible que tenga Apache con Tomcat como contenedor de servlets y sus objetos comerciales alojados en Tomcat. En este caso, Tomcat proporciona una funcionalidad similar a lo que proporciona MTS en el mundo .NET.
varias preguntas:
- Por qué la diferencia fundamental en el Microsoft contra Java se acerca a los servidores de aplicaciones? Esto debe haber sido una elección de arquitectura/diseño cuando se crearon estos marcos.
- ¿Cuáles son los pros y los contras de cada enfoque?
- ¿Por qué Microsoft se alejó del modelo de alojamiento MTS (que es similar al modelo de alojamiento de servlets de Tomcast) al enfoque actual más común que es simplemente tener objetos comerciales como parte del proceso ASP.NET del servidor web?
- Si desea implementar el enfoque tipo MTS o el enfoque de tipo Tomcat en aplicaciones ASP.NET hoy, supongo que un patrón común sería alojar objetos comerciales en algún proceso IIS (posiblemente en otro nivel físico o lógico diferente) y acceder a través de WCF (o servicios web estándar de asmx, lo que sea). ¿Es esta una suposición correcta?
Voy a dividir mi respuesta en 3 comentarios debido a la longitud. Entiendo totalmente tu punto sobre el enfoque de abrir/traer tu propio x frente al enfoque de pila integrada, pero lo que estoy preguntando es por qué, no debido a sus diferencias en el enfoque filosófico, sino más bien desde un nivel técnico y arquitectónico. No entiendo por qué el modelo de Microsoft satisface la necesidad de las aplicaciones de Microsoft y por qué el modelo de servidor de aplicaciones Java hace lo mismo para las aplicaciones Java. – Howiecamp
(Parte 2) - Arquitectónicamente (desde una perspectiva general de requisitos de la aplicación), las mismas preocupaciones/problemas deberían estar presentes en ambos casos. En cuanto a WCF, simplemente lo estaba usando como un ejemplo de cómo una aplicación web .NET podría hablar con algún otro proceso lógico o físicamente diferente. Podría ser una can-and-string. Eso no es central para mi pregunta. – Howiecamp
(Parte 3) Obviamente, el alojamiento de objetos dentro del proceso asp.net del servidor web funciona si no necesita una arquitectura distribuida. Solo digo que en Microsoft Land, este enfoque es más común. Querrá un sistema distribuido si quiere distribuir la carga de procesamiento, por ejemplo. Lo que me pregunto es si el enfoque original de Microsoft con MTS le dio esta capacidad, ¿por qué entonces básicamente se enfocaron en MTS y se enfocaron más en un enfoque totalmente local? – Howiecamp