![]() |
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! |
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 |
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? |
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 |
Cita:
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 |
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? |
Cita:
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 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 |
Recorde una liga a un documento de "Layers" muy bueno de IBM, lo puedes encontrar aqui http://groups.msn.com/ISWOO/arquitec...40244238649425 |
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! |
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 |
Struts Cita:
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 :-) |
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 |
Cita:
|
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. |
=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 |
Arquitectura en tres capas Cita:
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!! |
Buena explicación Valkam :) Voy a agregar unas imagenes para que sea mas grafico: Este es el patron MVC como esta implementado en Struts: http://www.ibm.com/developerworks/we...ges/image1.jpg Cada "Action" de struts ligado al controlador es en realidad el patron "Command". Este es el patron Capas: http://msdn.microsoft.com/library/en...ding_Fig04.gif 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 |
=O !! gracias por los post y en especial por los ultimos 2 =D !! :si: tengo una idea mucho mas clara ahora :-) grax!! =D ! |
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 |
| La zona horaria es GMT -6. Ahora son las 05:32. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.