Retroceder   Foros del Web > Temas generales de computación > Programación > Ingeniería del software y Gestión de proyectos

Respuesta
 
Herramientas Desplegado
Antiguo 25-jun-2006, 17:21   #1 (permalink)
Punchi está en el buen camino
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 160
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!
Punchi está desconectado   Responder Citando
Antiguo 25-jun-2006, 18:08   #2 (permalink)
hpfloresj no se puede cailificar en este momento
 
Fecha de Ingreso: marzo-2006
Ubicación: Pucallpa-Perú
Mensajes: 15
Enviar un mensaje por MSN a hpfloresj Enviar un mensaje por Yahoo  a hpfloresj Enviar un mensaje por Skype™ a 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
hpfloresj está desconectado   Responder Citando
Antiguo 25-jun-2006, 18:39   #3 (permalink)
Punchi está en el buen camino
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 160
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?
Punchi está desconectado   Responder Citando
Antiguo 25-jun-2006, 20:35   #4 (permalink)
cbwarz ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
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
cbwarz está desconectado   Responder Citando
Antiguo 25-jun-2006, 22:14   #5 (permalink)
Colaborador
TolaWare tiene algunos puntos positivos de karma
 
Avatar de TolaWare
 
Fecha de Ingreso: julio-2005
Mensajes: 4.253
Enviar un mensaje por MSN a TolaWare
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
TolaWare está desconectado   Responder Citando
Antiguo 25-jun-2006, 22:43   #6 (permalink)
Punchi está en el buen camino
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 160
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?
Punchi está desconectado   Responder Citando
Antiguo 25-jun-2006, 23:05   #7 (permalink)
Colaborador
TolaWare tiene algunos puntos positivos de karma
 
Avatar de TolaWare
 
Fecha de Ingreso: julio-2005
Mensajes: 4.253
Enviar un mensaje por MSN a TolaWare
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.
TolaWare está desconectado   Responder Citando
Antiguo 26-jun-2006, 14:54   #8 (permalink)
cbwarz ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
@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
cbwarz está desconectado   Responder Citando
Antiguo 26-jun-2006, 15:00   #9 (permalink)
cbwarz ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
Recorde una liga a un documento de "Layers" muy bueno de IBM, lo puedes encontrar aqui
http://groups.msn.com/ISWOO/arquitec...40244238649425
cbwarz está desconectado   Responder Citando
Antiguo 26-jun-2006, 17:27   #10 (permalink)
Punchi está en el buen camino
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 160
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!
Punchi está desconectado   Responder Citando
Antiguo 27-jun-2006, 07:47   #11 (permalink)
cbwarz ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
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
cbwarz está desconectado   Responder Citando
Antiguo 28-jun-2006, 08:52   #12 (permalink)
Valkam ha deshabilitado el karma
 
Avatar de Valkam
 
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
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
Valkam está desconectado   Responder Citando
Antiguo 28-jun-2006, 15:39   #13 (permalink)
cbwarz ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
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-jun-2006 a las 15:46.
cbwarz está desconectado   Responder Citando
Antiguo 28-jun-2006, 16:24   #14 (permalink)
Valkam ha deshabilitado el karma
 
Avatar de Valkam
 
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
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!!
Valkam está desconectado   Responder Citando
Antiguo 28-jun-2006, 17:31   #15 (permalink)
cbwarz ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
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-jun-2006 a las 17:37.
cbwarz está desconectado   Responder Citando
Antiguo 28-jun-2006, 21:59   #16 (permalink)
Punchi está en el buen camino
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 160
=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
Punchi está desconectado   Responder Citando
Antiguo 29-jun-2006, 02:17   #17 (permalink)
Valkam ha deshabilitado el karma
 
Avatar de Valkam
 
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
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!!
Valkam está desconectado   Responder Citando
Antiguo 29-jun-2006, 07:39   #18 (permalink)
cbwarz ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 110
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-jun-2006 a las 07:46.
cbwarz está desconectado   Responder Citando
Antiguo 04-jul-2006, 19:59   #19 (permalink)
Punchi está en el buen camino
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 160
=O !!

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

tengo una idea mucho mas clara ahora

grax!! =D !
Punchi está desconectado   Responder Citando
Antiguo 24-abr-2008, 11:48   #20 (permalink)
indioalba ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 1
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
indioalba está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 3 votos, 4,33 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:59.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93