2011-10-19 15 views
10

Tengo una buena aplicación escrita en Silverlight. Para permitir una mayor compatibilidad con navegadores cruzados, estamos considerando reescribir con una interfaz HTML5.¿Cuál es una forma razonable de usar patrones de codificación MVVM con HTML5

¿Cuál sería una forma razonable de pasar de Silverlight usando XAML y C# con patrones de codificación MVVM a una interfaz HTML5?

Por otro lado, si esto no es una buena idea y se debe abandonar el patrón MVVM, explique por qué.

+1

También me gustaría conocer un marco equivalente "Caliburn.Micro" para HTML/Javascript. Sé todo sobre Knockout, pero parece que este maneja el trabajo sucio de atar. ¿Qué ocurre con la carga de vistas, navegación, subvistas, etc.? Hasta donde puedo decir, extjs parece ser el único marco que ha intentado abordar esto. –

Respuesta

6

Knockout es una gran biblioteca de JavaScript que le ayuda a escribir el lado MVVM del cliente. Usted crea sus modelos de vista en javascript y se une a ellos usando plantillas html (con la ayuda de jquery templating). Sus modelos de vista pueden usar ajax para recuperar datos.

Es esencialmente lo mismo que el desarrollo de Silverlight: tiene HTML en lugar de XAML y javascript en lugar de C#/VB.Net. Incluso podría usar los mismos servicios web realmente ... lo cual podría ser útil si planea ofrecer ambas interfaces o la conversión más adelante.

Editar
pensé que me gustaría añadir que en mi humilde opinión MVVM no debe ser abandonada, ya que realmente hace un gran trabajo de separar las preocupaciones (supongo que cuando se aplica correctamente), pero sin duda una gran victoria es que tiene el desarrollador pensar o en la mentalidad o separar la responsabilidad en una aplicación. He usado Knockout.js para proyectos web y Caliburn.Micro para Silverlight y realmente he disfrutado ese estilo de desarrollo.

1

Knockout es el patrón MVVM implementado en HTML/Javascript con enlace de datos y todo. http://knockoutjs.com/

Si lo que quiere se puede lograr simplemente a través de la manipulación DOM, y está acostumbrado y le gusta el patrón MVVM, Knockout debería ser una buena opción.

1

Sí, el patrón de MVVM para HTML 5 se llama MVC. Más fácil de implementar con MVC3. Proporciona una capa de abstracción con respecto al código JavaScript, soporte para ViewModels (también conocido como Vistas) y separación de preocupaciones entre las vistas, el acceso a los datos y la lógica empresarial.

Lo mejor de todo es que la validación y el manejo de eventos de UI están conectados de forma sencilla, lo que le permite abstraerse de las complejidades de los controladores de eventos JavaScript para varios controles HTML.

Sin embargo, si estrictamente desea seguir con HTML & JavaScript, le sugiero rodar sus propias clases de JavaScript (sí JS es el lenguaje funcional, pero aún puede hacerlo) que representan su capa de interfaz de usuario y manejar eventos de IU. Luego, cree su propia biblioteca Ajax para obtener datos serializados de JSON desde las clases de la interfaz de usuario hasta el servidor. Finalmente crea tus propias clases de lógica de negocios (también en javascript) para controlar tus clases de UI y DataAccess (ajax). En resumen ... un montón de trabajo sucio.

1

También está la biblioteca experimental Model Driven Views (MDV) de Google. Desafortunadamente, solo está destinado a ser un escaparate prototipo. Conceptualmente, es realmente genial, pero prepárese para arreglar algunos errores por su cuenta.

http://code.google.com/p/mdv/

0

Existe también JSViews. Este no es tan ingenioso como Knockout, pero es más rápido al actualizar el DOM. El proyecto está vagamente relacionado con jquery ya que su autor estaba detrás de las plantillas de consulta ahora descartadas.

Cuestiones relacionadas