Si voy a configurar mi sistema en dos capas físicas, ¿cómo se comunican el 'controlador' que esta en un servidor con el 'modelo' que se encuentre en otro servidor?
Por desgracia puede haber maneras diferentes de entender el MVC (Modelo Vista-Controlador). Pero la más habitual es en la que la vista es una interfaz o unas páginas web, el controlador es la lógica que recoge la información de la vista y la pasa al modelo y viceversa, y el modelo representa a los datos a guardar del sistema, por lo que normalmente es simplemente una base de datos. Según este modelo la separación es bastante "facil". Sólo habría que poner la BD en otra máquina y el controlador se conectaría a esa otra máquina, para lo cual las BD modernas están todas preparadas. Espero que te haya servido para aclararte. Cualquier cosa pregunta. Recuerda cerrar la pregunta si no necesitas más.
Hola, gracias por contestar mi pregunta, pero tengo una duda... si la separación de las capas no fuera solo poner la BD en un server aparte sino también la lógica de negocio con sus respectivos Beans, como haría que estos se comunicaran(capa vista y controlador en un server con modelo del negocio en otro server). Gracias
Veo que algo sabes del tema y te estás refiriendo a un modelo más avanzado del MVC. Si he entendido bien, te estás refiriendo al modelo MVC típico de J2EE, en el que aparte de la BD se quiere separar también la lógica de negocio, es decir, los Beans. Pues en esos casos la separación es relativamente fácil y bastante habitual. Lo mejor es ver un ejemplo más real para observar esa separación. El caso de una aplicación J2EE con todas las partes: Vista: Las páginas JSP Controlador: Las clases que controlan lo que se recibe y envía de las JSP. En frameworks como Struts y Spring son los famosos Action. Estos dos primeros no tiene mucho sentido separarlos por lo que irían juntos en la misma máquina. Lo normal y extendido para esta parte es usar Apache Tomcat. Lógica de negocio (Beans o en el mundo Java los EJB): Éstos controlan la lógica y el posible acceso a la BD. Pueden estar en otra máquina que ejecute un servidor de EJB's (JBoss o Apache Geronimo por ejemplo, a nivel gratuito. Tomcat no serviría ya que sólo soporta aplicaciones "básicas", es decir, la vista y el controlador) Y por último los datos en sí en cualquier tipo de BD (a nivel gratuito están extendidas MySql y PostgreSQL) que lógicamente pueden ir en otra máquina. Las comunicaciones entre los servidores están totalmente preparadas y documentadas. La que tú indicas sería la comunicación Tomcat-JBoss en la que nuestra Vista-Controlador simplemente pide el Bean al JBoss y trabaja con él. El desarrollo puede ser totalmente independiente y modular prácticamente sin afectarse (mientras no cambie la interfaz del Bean). Espero que esto fuera lo que buscabas. Sobre estos temas hay muchísima información y espero haberte guiado correctamente hacia ella.
Muchas gracias por contestar a mis preguntas, espero no incomodar... Lo que me has respondido es de mucha utilidad. Aunque en lo ultimo que respondes en la comunicación entre servidores, yo realmente me refiero a las aplicaciones... me explico: Si yo tengo un jsp que crea la vista y otro jsp que atiende las solicitudes de los clientes en un servidor... cuando el control sepa que tiene que llamar a un objeto bean que esta en otro servidor... ¿cómo lo hago? ¿Utilizo un redirect a un jsp que maneja los jbeans? ¿Utilizo xml para comunicar ambas aplicaciones?. Gracias :D
No hace falta usar ningún otro Jsp. En el controlador mismo llamarías al servidor JBoss para pedirle el EJB que quisieras (en realidad recibirá un manejador del EJB). Con ese EJB en el controlador lo usas con los datos recibidos del jsp o los que sean. Al ejecutar métodos del EJB, es el JBoss el que ejecutará la lógica y te devolverá los resultados al controlador que los llama. Espero que esto haya terminado de aclararte el asunto. Es algo complicado porque implica muchas cosas diferentes, pero es cuestión de pegarse con él y saber buscar manuales y demás.