Foros del Web » Programación para mayores de 30 ;) » Programación General »

Modelo 3 capas? PHP+C#+MSSQL?

Estas en el tema de Modelo 3 capas? PHP+C#+MSSQL? en el foro de Programación General en Foros del Web. Saludos! Para la universidad tengo que hacer una tarea de un software con un modelo de 3 capas. Los lenguajes son a libre eleccion, pero ...
  #1 (permalink)  
Antiguo 25/06/2006, 17:21
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 20 años
Puntos: 1
Modelo 3 capas? PHP+C#+MSSQL?

Saludos!

Para la universidad tengo que hacer una tarea de un software con un modelo de 3 capas. Los lenguajes son a libre eleccion, pero no se con cuales podria trabajar =S

Se puede trabajar con PHP + C# + MSSQL?

El modelo logico me dijeron que lo trabajara con J2EE, pero la verdad es que no conosco JAVA, aunque me dijeron que seria un plus trabajar con el. Conosco un mas C# y mas PHP que ASP.NET, por lo que... se puede trabajar PHP junto con C# ?? que lenguajes tengo para escojer para el modelo de 3 capas?

Thanks!
  #2 (permalink)  
Antiguo 25/06/2006, 18:08
 
Fecha de Ingreso: marzo-2006
Ubicación: Pucallpa-Perú
Mensajes: 15
Antigüedad: 18 años, 1 mes
Puntos: 0
Para tu proyecto o cualquiera que sea puedes trabajar con los lenguajes que mas domines, yo trabajé un proyecto cliente/servidor en 3 capas con php y sql server utilizando la metodología RUP y UML, al principio tenia unos problemas con los servlets, que en php no existe, pero los pude superar, con respecto a php y mssql, tranquilamente los puedes implementar son tecnologias que se pueden juntar, sería mejor si en tu proyecto pondrías procedimientos almacenados con php.
Atte. hp
  #3 (permalink)  
Antiguo 25/06/2006, 18:39
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 20 años
Puntos: 1
jeje... como es posible trabajar con cliente/servidor en 3 capas? jeje
el modelo logico y de despliegue los tienes juntos =S

se puede ocupar PHP+C#+MSSQL por ejemplo?
  #4 (permalink)  
Antiguo 25/06/2006, 20:35
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
Antigüedad: 18 años, 7 meses
Puntos: 0
Sino usas J2EE por el java, entonces haz el UI en ASP.Net, el modelo usando Enterprise Services y la base de datos.

Todo en C#

Saludos
  #5 (permalink)  
Antiguo 25/06/2006, 22:14
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Cita:
Iniciado por hpfloresj
Para tu proyecto o cualquiera que sea puedes trabajar con los lenguajes que mas domines, yo trabajé un proyecto cliente/servidor en 3 capas con php y sql server utilizando la metodología RUP y UML, al principio tenia unos problemas con los servlets, que en php no existe, pero los pude superar, con respecto a php y mssql, tranquilamente los puedes implementar son tecnologias que se pueden juntar, sería mejor si en tu proyecto pondrías procedimientos almacenados con php.
Atte. hp
Existen 2 patrones de diseño de capas muy usados:

2 capas: cliente/servidor
3 capas: presentacion/negocio/persistencia o tambien llamado interfaz/control/entidad.

Otro detalle, la capa de entidad o persistencia, no es un DBMS, la capa de persistencia es la que abstrae a la aplicacion de la bases de datos que usemos. Por lo tanto es imposible programar esta capa con MSSQL, ni con nigun otro motor de base de datos.

Como punto final, te recomiendo que si quieres usar php que utilize como soporte MSSQL, pues te recomiendo que programes las tres capas en php.

Saludos
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #6 (permalink)  
Antiguo 25/06/2006, 22:43
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 20 años
Puntos: 1
mmm.... es condicion de la tarea dividir el modelo logico (de control, como le llamas) de la capa de interfaz y de datos (por lo que tengo entendido es de datos, y en el caso que necesito, una base de datos MSSQL) por lo que tengo que ocupar PHP o ASP.NET u otro solamente para el despliegue y recivo de informacion.

Si tuviese la capade interfaz y de logica en PHP seria una aplicacion cliente-servidor, ¿no?
  #7 (permalink)  
Antiguo 25/06/2006, 23:05
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Cita:
Iniciado por Punchi
mmm.... es condicion de la tarea dividir el modelo logico (de control, como le llamas) de la capa de interfaz y de datos (por lo que tengo entendido es de datos, y en el caso que necesito, una base de datos MSSQL) por lo que tengo que ocupar PHP o ASP.NET u otro solamente para el despliegue y recivo de informacion.

Si tuviese la capade interfaz y de logica en PHP seria una aplicacion cliente-servidor, ¿no?
Depende de como este programada la aplicacion.

La separacion de capas no tiene nada que ver con el lenguaje que usas, puedes programar toda una aplicacion en Java y que sea de 3 capas, la diferencia esta en que al programar en capas se realiza una separacion de funcionalidades. Las funciones de mostrar y leer datos, va en la capoa de interfaz, la tarea de procesar estos datos (sumas, calculo de totales, etc) va en la capa de negocio. y La tarea de guardar, leer y actualizar los datos en la BD, es tarea de la capa de datos.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #8 (permalink)  
Antiguo 26/06/2006, 14:54
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
Antigüedad: 18 años, 7 meses
Puntos: 0
@Tolaware
Me parece que cuando surgieron los manejadores de bases de datos como Oracle es cuando nacio el termino Cliente/Servidor y el Servidor como tal representaba una capa.

@Punchi
Si lo que estas implementando es el patron Capas ("Layers"), entonces:
Capa Interfaz -> UI: ASP.Net con C#
Capa Aplicacion -> Controlador: ASP.Net con C#
Capa Modelo: Enterprise Services con C#
Capa Middleware ("Servidores"): DAO en Enterprise Services con C#

Generalmente se usa capas para poder dividir la funcionalidad, evitar el acoplamiento y varios beneficios mas, pero uno de los puntos mas importantes es que la funcionalidad va a estar "potencialmente" distribuida. Esto es, el cliente en una maquina, el controlador en un servidor web, el modelo y DAO en otro servidor, etc, etc.

Por ultimo, te recomiendo que leas el libro: UML y Patrones 2da Ed.

Saludos
  #9 (permalink)  
Antiguo 26/06/2006, 15:00
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
Antigüedad: 18 años, 7 meses
Puntos: 0
Recorde una liga a un documento de "Layers" muy bueno de IBM, lo puedes encontrar aqui
http://groups.msn.com/ISWOO/arquitec...40244238649425
  #10 (permalink)  
Antiguo 26/06/2006, 17:27
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 20 años
Puntos: 1
jeje... nombraste 4 capas...

estaba viendo que en PHP se puede hacer la de interfaz y la logica mediante templates.. bueno eso lo voi a postear en el foro de PHP.

pero... ¿como diferencio una capa de otra? la capa de interfaz por ejemplo. Solo arroja y captura strings? luego esta capa llama a las funciones de la logica, la cual hace todos los calculos para luego llamar a la capa de datos y esta es la ke interactua con la BD?

alguna explicacion breve plis... creo que en la U no lo entendi bien entonces. Yo estaba convencido que eran solo 3 capas y que cada una tenia un lenguaje de programacion diferente.

grax!
  #11 (permalink)  
Antiguo 27/06/2006, 07:47
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
Antigüedad: 18 años, 7 meses
Puntos: 0
El numero de capas depende de tus necesidades. Se recomienda no mas de 7 capas.

Te recomiendo leer!, checa la liga que te pase para buscar el .pdf que esta en ese foro.
Luego comprate o ve en la biblio el libro UML y Patrones donde habla sobre el patron Capas ("Layers")

Saludos
  #12 (permalink)  
Antiguo 28/06/2006, 08:52
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Struts

Cita:
Iniciado por hpfloresj
Para tu proyecto o cualquiera que sea puedes trabajar con los lenguajes que mas domines, yo trabajé un proyecto cliente/servidor en 3 capas con php y sql server utilizando la metodología RUP y UML, al principio tenia unos problemas con los servlets, que en php no existe, pero los pude superar, con respecto a php y mssql, tranquilamente los puedes implementar son tecnologias que se pueden juntar, sería mejor si en tu proyecto pondrías procedimientos almacenados con php.
Atte. hp
Existe un patrón de diseño ampliamente utilizado que especifica una arquitectura de dos capas: el Modelo-Vista-Controlador.

Este patrón divide la aplicación en tres componentes: la interfaz (presentación) que sería la vista, la lógica de negocio que sería el modelo y el controlador que sería el encargado de gestionar los eventos de la interfaz para actuar sobre el módelo. Tanto la vista como el controlador se incluyen en una misma capa de interfaz.
Normalmente la tercera capa viene cuando se quiere incorporar un almacenamiento persistente (un almacen de datos). En ese caso es una buena práctica incluir una capa de abstracción más que independice al resto de tu aplicación del motor de BD que vayas a usar. En realidad no tienes por que usar tres lenguajes distintos, sino que cuando se habla de una aplicación en tres capas se definen tres niveles de abstracción bien separados: la presentación, la lógica de negocio y el modelo de datos. Estas capas deben estar completamentes separadas ofreciendo únicamente una serie de servicios al resto de capas sin que estas tengan que saber que hay por detrás.

Yo te recomiendo que uses el Framework Struts. Es un framework de desarrollo que implementa el patron Modelo Vista Controlador y que te permite el desarrollo rápido de aplicaciones web. La interfaz la tendrías en JSP, la lógica de negocio en Java y puedes usar cualquier gestor de bases de datos (al que te recomiendo que te conectes con JDBC).

Todo es mundo Java, pero nunca es mal momento para aprender
  #13 (permalink)  
Antiguo 28/06/2006, 15:39
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
Antigüedad: 18 años, 7 meses
Puntos: 0
umm, el MVC es de 3 capas
1. Model
2. View
3. Controller

Generalmente se piensa que la vista y el controlador estan en la misma capa pero en realidad son capas diferentes, debes poder cambiar tu capa de vista sin cambiar la capa de control o puedes cambiar tu capa de control sin afectar tu vista o modelo.

El struts en particular "oculta" la capa de control, la hace automatizada, tu solo especificas "Comandos" y el struts se encarga de todo. Pero existe.

Saludos

Última edición por cbwarz; 28/06/2006 a las 15:46
  #14 (permalink)  
Antiguo 28/06/2006, 16:24
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Cita:
Iniciado por cbwarz
umm, el MVC es de 3 capas
1. Model
2. View
3. Controller

Generalmente se piensa que la vista y el controlador estan en la misma capa pero en realidad son capas diferentes, debes poder cambiar tu capa de vista sin cambiar la capa de control o puedes cambiar tu capa de control sin afectar tu vista o modelo.

El struts en particular "oculta" la capa de control, la hace automatizada, tu solo especificas "Comandos" y el struts se encarga de todo. Pero existe.

Saludos
Sí, estoy de acuerdo contigo, para mi son tres capas aunque en realidad si te vas a cualquier libro de patrones de diseño no se especifica una tercera capa como tal. Quizás sería más adecuado hablar de tres componentes separados ya que como dice dices deberíamos poder sustituir por ejemplo la vista sin tener que modificar el controlador. Esto de hecho es muy común aunque creo que es bastante dificil realizar cambios en la interfaz sin que te efecte en el controlador. Si lo consigues has hecho sin duda un buen diseño!!
  #15 (permalink)  
Antiguo 28/06/2006, 17:31
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
Antigüedad: 18 años, 7 meses
Puntos: 0
ummm, en realidad asi se documenta en los libros, 3 capas.

http://es.wikipedia.org/wiki/MVC

[Del wiki]
Es común pensar que una aplicación tiene tres capas principales: presentación (IU), dominio, y acceso a datos. En MVC, la capa de presentación está partida en controlador y vista. La principal separación es entre presentación y dominio; la separación entre V/C es menos clara.
[/Del wiki]

Saludos

NOTA: Creo que te refieres al principio de separacion de Presentacion y Modelo.

Última edición por cbwarz; 28/06/2006 a las 17:37
  #16 (permalink)  
Antiguo 28/06/2006, 21:59
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 20 años
Puntos: 1
=O !

que bien... estoi aprendiendo de a poco ahora a lo que se refieren ^^
es por eso que el profe recomendo utilizar J2EE... bueno, la verdad es que no tengo mucho tiempo como para aprender un nuevo lenguaje y completar la tarea, asi que lamentablemente me voi a tener que ir por lo que mas domino, que seria PHP.

interesantes posts... creo que voi aprendiendo jeje... una consulta para asegurarme plis: la separacion de capas se hace por medio de funciones que separen lo que es el despliegue, procesamiento y llamados a la base de datos?

osea que por ejemplo para el caso de PHP, tendria que crear la pagina HTML de tal manera que cuando inserte una funcion de despliegue de noticias por ejemplo, ocurra que de lo mismo en donde la despliegue ya que no va a afectar la capa de... logica? y cuando quiera cambiar la noticia cambio el codigo de la capa de la esa logica para que asimismo no me influya en nada el despliegue de la noticia en HTML. ¿estoy en lo correcto?.. si es asi.. ¿en donde queda la capa de datos? =S

grax! ^^U
  #17 (permalink)  
Antiguo 29/06/2006, 02:17
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Arquitectura en tres capas

Cita:
Iniciado por Punchi
=O !

que bien... estoi aprendiendo de a poco ahora a lo que se refieren ^^
es por eso que el profe recomendo utilizar J2EE... bueno, la verdad es que no tengo mucho tiempo como para aprender un nuevo lenguaje y completar la tarea, asi que lamentablemente me voi a tener que ir por lo que mas domino, que seria PHP.

interesantes posts... creo que voi aprendiendo jeje... una consulta para asegurarme plis: la separacion de capas se hace por medio de funciones que separen lo que es el despliegue, procesamiento y llamados a la base de datos?

osea que por ejemplo para el caso de PHP, tendria que crear la pagina HTML de tal manera que cuando inserte una funcion de despliegue de noticias por ejemplo, ocurra que de lo mismo en donde la despliegue ya que no va a afectar la capa de... logica? y cuando quiera cambiar la noticia cambio el codigo de la capa de la esa logica para que asimismo no me influya en nada el despliegue de la noticia en HTML. ¿estoy en lo correcto?.. si es asi.. ¿en donde queda la capa de datos? =S

grax! ^^U
Vamos a olvidarnos un poquito del patrón MVC (aunque te recomendaría utilizarlo siempre y además yo creo que puede ser el de uso más extendido) y nos centramos en las tres capas. Tradicionalmente un diseño en tres capas consta de las que ya se ha hablado: presentación, lógica de negocio y persistencia o almacen de datos. Para que sea realmente un diseño en tres capas tienen que estar totalmente separadas. Cada capa debe ofrecer una serie de servicios (que los puedes ver como una API) a las capas superiores. Por ejemplo, defines que acciones se pueden hacer sobre una noticia. Pongamos que solo tienes una función en tu lógica que es publicarNoticia. Ese servicio debe ofrecerse a la capa de presentación para ser llamado desde la interfaz. Quizás para poder publicar una noticia debes hacer algunas cosas mas que almacenarla en la base de datos y mostrarla. Esa serie de acciones deben ser llamadas desde publicarNoticia pero nunca debería a estar accesibles a la capa de presentación. Es decir tu ofreces una API al exterior que abstrae de como se hacen las cosas en tu lógica de negocio. De esta forma la desacoplas de la presentación. Si el día de mañana quieres cambiar por completo la interfaz no te afectará al resto de la aplicación.
Todo esto se hace utilizando el patrón Fachada. Te recomiendo que lo busques y le eches un vistazo (aun no puedo poner links).

Para el acceso a datos también se puede utilizar el patrón fachada, aunque hay uno específico para abstraer la capa de persistencia que es el patrón DAO (Data Access Object). En plataformas como .NET ya te viene implementado y solo hay que adaptarlo. Si sigues ese patrón correctamente, el día de mañana te podrías dar cuenta de que tu aplicación por ejemplo no almacena una gran cantidad de datos y podrías aliviarla sustituyendo el motor de base de datos por un fichero XML por ejemplo sin que eso afecte para nada al resto de la aplicación. Solo tendrías que programar la forma de acceder al XML, pero tu logica de negocio en ningun momento sabe que forma de almacenamiento estas usando. Ella llama a una función que podría ser guardarNoticia siempre y el DAO se encarga de almacenarla correctamente en una BD o en un fichero, lo que estes utilizando en ese momento.

Un Saludo!!
  #18 (permalink)  
Antiguo 29/06/2006, 07:39
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
Antigüedad: 18 años, 7 meses
Puntos: 0
Buena explicación Valkam :)

Voy a agregar unas imagenes para que sea mas grafico:

Este es el patron MVC como esta implementado en Struts:

Cada "Action" de struts ligado al controlador es en realidad el patron "Command".

Este es el patron Capas:

Aun cuando el ejemplo muestra 3 capas (que es lo tipico) podrias tener muchas mas, se recomienda no mas de 7.
Si has tenido chance de conocer como funciona las redes segun OSI veras que tiene una arquitectura de capas, es algo semejante a lo que tratamos de hacer con el software usando "Capas".

Saludos

Última edición por cbwarz; 29/06/2006 a las 07:46
  #19 (permalink)  
Antiguo 04/07/2006, 19:59
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 20 años
Puntos: 1
=O !!

gracias por los post y en especial por los ultimos 2 =D !!

tengo una idea mucho mas clara ahora

grax!! =D !
  #20 (permalink)  
Antiguo 24/04/2008, 11:48
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Re: Modelo 3 capas? PHP+C#+MSSQL?

Hola, me he aclarado mucho con vuestras explicaciones pero querría saber si el patrón layer y el patron MVC son incompatibles, o por el contrario son complementarios.

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 4 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 02:46.