react net mvc model-view-controller reactjs flux

model-view-controller - net - react native mvc



MVC vs. Flux? Bidireccional vs. Unidireccional? (4)

Algunas personas adoptaron el término MVC para referirse a marcos de JavaScript que otros habían señalado que no eran MVC puros, sino que eran una variación que podría denominarse MVP (Backbone), MVVM ( Angular 1 ) o más ampliamente MV * (ver también la respuesta de Arun )

Cuando Facebook introdujo Flux , lo compararon con MVVM / MVP / MV * , pero de manera confusa usó el término MVC.

Para los desarrolladores de MVC puros que veían este video, los problemas establecidos de Facebook con MVC no tenían sentido, y la descripción de Facebook de Flux estaba más cerca de MVC que el sistema de MVVM que describieron:

El problema central es que estaban "haciendo" mal MVC. Luego lo arreglaron, pero decidieron cambiarle la marca y decir que habían inventado el patrón de desacoplamiento de datos, visualización y manejo de eventos.

Comentario de YouTube

Parece que los programadores crearon flujo porque no sabían cómo utilizar correctamente MVC y despachadores de eventos.

Comentario de YouTube

Mirando el siguiente diagrama (que explica MVC), veo flujo de datos unidireccional.

Entonces, ¿por qué consideramos que MVC tiene flujo de datos bidireccional mientras se justifica Flux?


Debido a que en frameworks Javascript el MVC no funciona de la forma en que lo describiste. La IU generalmente se comunica bidireccionalmente con el modelo, como en:

  1. Tipos de usuario en la entrada de Ver
  2. El marco MVC vincula onchange () para actualizar un modelo.
  3. La solicitud Ajax trae nuevos datos de modelos.
  4. Actualizaciones de marco MVC Ver el valor de la entrada para hacer coincidir el modelo.

En la arquitectura de Flux, la IU solo activaría una acción independiente con tipo y datos asociados a un despachador que luego actualizaría el modelo de la misma manera que cualquier método ajax de fondo actualizaría el modelo.

Referencia: http://www.thesoftwaresimpleton.com/blog/2013/03/23/client-side-mvc/

"Client Side MVC es completamente diferente a Server Side MVC"

"Estamos estableciendo una comunicación bidireccional entre dos objetos ..."

"En resumen, estamos conectando el valor de la propiedad firstName del objeto Person con la propiedad value de la entrada".

http://guides.emberjs.com/v1.10.0/object-model/bindings/

los enlaces en Ember.js se pueden usar con cualquier objeto, no solo entre vistas y modelos .


Real y Pure MVC es unidireccional. Está claro desde el diagrama de wikipedia pegado en la pregunta.

Hace más de una década, cuando los frameworks del lado del servidor como Apache Struts implementaron una variante de MVC llamada patrón Model View Presenter (MVP), hicieron que cada solicitud pasara por el controlador y cada respuesta regresara a través del controlador. Todos siguieron llamándolo MVC. Debido a la naturaleza inherente de la web, cualquier cambio en el modelo no se puede propagar a la vista sin ver enviar una solicitud o actualización. Entonces Pure MVC no está implementado. Por el contrario, MVP está implementado.

Hace unos años, cuando frameworks como Angular, Ember, Knockout implementaron MVC en front end, implementaron otra variante de MVC llamada modelo View View Model (MVVM), pocos seguían llamándolo MVC. (y pocos se dieron cuenta de que la terminología no es importante y la llamaron MVW (W significa lo que sea)), ninguno de ellos implementó MVC puro.

Cuando nació React, aprovecharon la oportunidad de implementar MVC puro (no MVP o MVVM), y lo renombraron como Flux con pocos cambios. Siento que Flux es una variante más de MVC. Aunque, el equipo de Flux / React dice que no es MVC, veo mucha paridad entre ambas arquitecturas: Flux y MVC.


Soy un desarrollador integrado y utilizo el patrón MVC en mi aplicación. Mi aplicación es muy pequeña y he configurado mi arquitectura para que sea MVC casi unidireccional. Pero, leí este artículo, explicando MVC del lado del cliente, y algunas reflexiones sobre las diferencias entre MVC y FLUX.

Referencia: http://www.christianalfoni.com/articles/2015_08_02_Why-we-are-doing-MVC-and-FLUX-wrong

MVC tradicional

|------| request |------------| request |-------| | | ---------> | | ---------> | | | VIEW | response | | response | | | | <--------- | | <--------- | | |------| | | | | | CONTROLLER | | MODEL | |------| request | | request | | | | ---------> | | ---------> | | | VIEW | response | | response | | | | <--------- | | <--------- | | |------| |------------| |-------|

FLUJO

COMPONENTS ACTION CREATORS STORES |----------------------<<<<-------------------| | | |------| |------------| |-------| | | request | | request | | | VIEW | ---------> | | ---------> | MODEL |---- | | | | | | | |------| | | |-------| | | CONTROLLER | | |------| | | |-------| | | | request | | request | | | | VIEW | ---------> | | ---------> | MODEL | | | | | | | | | |------| |------------| |-------| | | | | | | |--------------------<<<<-------------------| | |----------------------<<<<----------------------------|