2010-05-24 20 views
15

En el pasado, he construido principalmente todas mis aplicaciones web utilizando una arquitectura de N niveles, implementando las capas BLL y DAL. Recientemente, comencé a hacer algunos desarrollos de RoR y a examinar ASP.NET MVC.Razones para no utilizar la arquitectura MVC para la aplicación web

Entiendo las diferencias entre las diferentes arquitecturas (como se hace referencia en otras publicaciones SO), pero realmente no puedo pensar en ninguna razón por la que no elegiría un modelo MVC en el futuro para un nuevo proyecto.

¿Hay alguna razón/momento en su experiencia en que una arquitectura MVC no sea adecuada o alguna otra razón por la que elegiría una arquitectura BLL/DAL?

+0

¿Se trata de MVC de .NET específicamente, o MVC en general? Sé un poco sobre esto último, pero absolutamente nada sobre lo primero. –

+0

Realmente la pregunta es más acerca de la arquitectura MVC para una aplicación web en general, aunque me complace escuchar cualquier respuesta para implementaciones particulares también. – jaywon

+0

Leí esto como "100 razones para no usar la arquitectura MVC para la aplicación web" –

Respuesta

3

Uno de los factores podría ser la constancia de su aplicación web. Si se trata de una aplicación web básica que obtiene todo del servidor con unos pocos ganchos de JavaScript, como validaciones del lado del cliente, entonces Rails type MVC es realmente genial. No estoy familiarizado con MVC en ASP.NET, pero he escuchado que es similar a eso en Rails.

Si la aplicación web es muy explícita, un mejor enfoque sería tener una capa MVC dual, una en el lado del cliente y la otra para el servidor. El MVC en el servidor se ocupará principalmente de autenticación, autorización, producción de datos en formatos estándar, etc. El MVC del lado del cliente se ocupará de cosas tales como eventos DOM, acciones del usuario, cómo afectan el estado de la aplicación y cómo/cuándo deben solicitarse/enviarse los datos al servidor.

MVC es solo una forma de organizar el código, tal como lo harían BLL o DAL. MVC in Rails básicamente oculta DAL por completo mediante el uso de un conjunto de convenciones. Por lo general, la lógica empresarial reside en los modelos en sí. Sin embargo, si su aplicación exige BLL más complejo donde las interacciones entre objetos pueden ser intrincadas, entonces no hay ninguna razón por la que BLL no pueda coexistir pacíficamente con la M en MVC.

15

No creo que sus opciones sean mutuamente excluyentes. Puede utilizar perfectamente MVC mientras usa BLL/DAL para su lógica de modelo.

Puede implementar la parte M de MVC como prefiera, no hay ninguna restricción al respecto. Usar BLL y DAL sería una opción válida.

+0

Entiendo lo que dices, pero realmente creo que estoy tratando de descubrir las razones por las que no quisiera utilizar un período de modelo MVC ? Por ejemplo, ¿qué razones tendría para crear una aplicación web ASP.NET usando BLL/DAL, sobre una aplicación web ASP.NET MVC? La razón por la que pregunto es que la configuración de MVC parece ahorrar tiempo y esfuerzo en tareas repetitivas (independientemente de la plataforma), así que estoy tratando de ver si hay otros factores que debería considerar. – jaywon

+1

Claudio sigue siendo correcto. El modelo en MVC simplemente le permite abstraer y administrar sus datos de una manera reutilizable. Podría estar ocultando una base de datos, un servicio web o un sistema entero de n niveles detrás de él; MVC sigue siendo válido ya que se refiere solo a su aplicación web y no a toda la empresa. – Kurucu

+5

+1 para esta respuesta. N-Tier es una arquitectura y MVC es un patrón de diseño; puedes usar ambos juntos y no hay una razón real para no usar MVC en una página web, por lo que buscar una razón para no usarlo es inútil. – Fenton

7

¿Para mí? la única razón por la que no usaría MVC es porque la aplicación en la que estoy trabajando ya se inició en formularios web. No soy un gran defensor de la chatarra/reescritura, pero cualquier cosa nueva que haga es en MVC.

4

No uso MVC solo en proyectos muy pequeños que constan de ~ 1-2 archivos y ~ 10-20 líneas de código. Y difícilmente evolucionarán en algo más grande.

Pero si lo hacen, será el momento de volver a crearlos en uno MVC.

0

Ya usamos el MVC para la aplicación de Windows. Ahora tenemos que convertir eso en la aplicación web, no tenemos ningún problema en absoluto. Estamos utilizando el servicio web y cada lógica comercial está en el servicio web. Para que pueda usar el MVC en la aplicación web. M-Model (Funciones y procedimientos que se comunican con la lógica de negocios) V-View (Diseño) C-Controller (lógica de formulario) para que no haya conexión en el DAL, BLL y en MVC. puede definir su lógica empresarial y utilizarla en cualquier lugar del MVC. Ese es mi punto de vista MVC es muy útil para la reutilización, prefiero que su aplicación sea grande, entonces debe usar MVC.

3

El único inconveniente que hemos tenido es que MVC lo empuja hacia una interfaz html/javascript donde las aplicaciones de Internet sofisticadas se vuelven más difíciles. Por ejemplo, si desea presentarle al usuario un control de calendario, es posible que tenga que implementar el suyo ya que no puede colocar uno en la caja de herramientas. Dicho eso, MVC es genial. Cuando realmente necesitamos aplicaciones de RIA usamos MVVM y Silverlight.

+2

Eso depende completamente de tus herramientas. MVC es un término genérico, no específico de .NET. –

0

No utilizaría el patrón MVC solo en el caso cuando tengo una aplicación de escritorio existente creada con MVP y tengo que convertirla a un entorno web. Eso es porque ya he escrito la lógica para el presentador.
En cualquier otro caso usaría MVC.

1

Life above the service tier sugiere que debe usar el patrón MVC de una manera que se adhiere a los principios SOFEA, y tenga cuidado con los marcos de tipo "Controlador frontal" que se esconden detrás del acrónimo MVC. (o, aún puede usarlos, pero al menos lea el artículo, entienda las diferencias y elija sabiamente).

1

La respuesta simple es, no.

MVC tiene una mejor arquitectura que la arquitectura n-tier de la vieja escuela, por muchas razones.Es el enfoque estándar en otros modelos de UI (por ejemplo, Swing). La única razón por la que tardó tanto tiempo en llegar a las aplicaciones web fue porque la comunidad de software, colectivamente, tardó un poco en acostumbrarse a la apatridia de la web y poder manejar las vistas y los controladores de una manera que Tuvo sentido.

1

Personalmente, lo calificaría según la complejidad de la aplicación de destino. Los MVC (o más enfoques estructurados en general) se prestan muy bien a aplicaciones a gran escala en las que la consistencia del diseño y la segregación del código es un beneficio que supera el costo de respaldar el diseño.

Si es un sitio pequeño, o muy pocas páginas/controles, evitaría seguir estrictos patrones de diseño. Pero esa es solo mi preferencia.

Como dijo un afiche, también debe tener en cuenta el estado de las aplicaciones existentes y las habilidades/experiencia de su equipo de desarrollo.

2

Para ciertas páginas, MVC puede ser un poco exagerado:

  • páginas de bienvenida
  • páginas de aterrizaje
  • páginas de marketing que van a ser desechados después de un uso
  • de una sola vez de

Es fácil envolverse creando una hermosa arquitectura MVC, cuando una página pequeña, escrita de manera concisa, puede estar bien en el se situaciones.

MVC también puede ser poco práctico si tiene problemas de tiempo, y necesita algo REALMENTE rápido. Al igual que su equipo de marketing está en una conferencia, están teniendo problemas y necesitan algo que mostrar en su stand este segundo antes de perder a su mayor cliente.

Cuestiones relacionadas