Pregunta

He trabajado en un proyecto que implementa una arquitectura de tres niveles con el siguiente diseño:

  1. Capa de Presentación - Utiliza PHP con un framework MVC para la presentación mango frontend y la lógica de negocio. Esta capa hace que las llamadas a la capa de servicio, que tiene acceso a los datos.
  2. acceso a datos de Capa - Usos C # .NET y se separa en servicio, lógica de negocios, y la capa de datos. Llamado por la capa de presentación. Realiza llamadas a la base de datos y serializa respuestas para volver a la capa de presentación.
  3. capa de datos - La base de datos. Proporciona todos los datos de los anteriores dos capas.

Yo entiendo que una de tres niveles enfoque puede ayudar a la seguridad, ya que todavía no hay acceso a los datos si la capa de presentación se ve comprometida. Aunque esto es cierto, parece que este enfoque es complicar un poco, sobre todo porque yo estoy obligado a escribir dos modelos para el mismo objeto en las dos primeras capas.

Así que mi pregunta: ¿Es esta una mala implementación de una arquitectura de tres niveles? Si es así, ¿cómo podría ser mejorado? ¿Cuáles son los inconvenientes, en su caso, del simple hecho de tener una implementación MVC que tiene acceso a la base de datos? Lo approache (s) haga que utiliza para sus aplicaciones web?

Gracias por la ayuda!

¿Fue útil?

Solución

A mi me parece como sus 3 niveles son los mismos que Vista, Controlador Modelo. Si su PHP está haciendo principalmente las llamadas a su # 2 capas, entonces yo creo que en sí no tiene por qué ser MVC menos que tenga una capa de presentación muy complicado que sí debería ser organizados en MVC, por ejemplo, si ha complicado la navegación o usuario autenticación de la lógica.

Otros consejos

No hay nada necesaria en la programación. Pero hay un montón de prácticas, que fueron prooven por años como algo que lo que pueda para hacerse seguimiento a-mejores-resultados. separación de N-capas es sólo uno de que las prácticas.

http://en.wikipedia.org/wiki/Multitier_architecture

Su descripción sigue la descripción en el wiki, por lo que -. Que es la forma adecuada para implementar aplicaciones de 3 niveles

Pero recuerde, usted no debe hacer nada - sólo tienes que seguir el camino que es cómodo para usted. Y en el futuro tendrá su propio conjunto de prácticas que el trabajo para usted específicamente.

Creo que su complicación surge del hecho de que usted está usando PHP y .NET, que no son directamente compatibles. Si usted eliminó uno de los (sólo se utiliza PHP o .NET usada solamente) que simplificaría las cosas. De lo contrario, creo que está utilizando un enfoque bien.

El valor del enfoque no es sólo para la seguridad, sino que también facilita el mantenimiento.

No estoy seguro de que entiende la preocupación: "sobre todo porque estoy obligado a escribir dos modelos para el mismo objeto en las dos primeras capas." Esto parece deberse a que está utilizando dos lenguajes de programación diferentes para la interfaz de usuario y el back-end. Supongo C # "capa de acceso de datos" contiene un modelo de objetos completa que luego tiene que replicarse en su parte delantera.

El problema parece ser que tiene dos capas intermedias que reflejan entre sí, porque usted está utilizando dos idiomas, no es que usted está utilizando una arquitectura de n niveles

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top