Preguntas sobre las mejores prácticas arquitectónicas utilizando Knockout, Upshot y Entity Framework 4.3 [cerrado]

StackOverflow https://stackoverflow.com//questions/10693461

Pregunta

La pregunta

¿Cuáles son las mejores prácticas para diseñar una aplicación utilizando Knockout 2.0.1, Upshot.js y Entity Framework 4.3?

Pila de tecnología

Nuestra pila de tecnología actualmente se parece a:

• SQL Server 2008 R2 • ASP.NET MVC3 (usando C#) con Entity Framework 4.3 (usando el código primero) • JQuery 1.7.2 • jQuery-ui 1.8.2 • knockout 2.0.1 • upshot.js beta beta

Antecedentes (Muchos otros desarrolladores probablemente podrían sustituir aquí su propio proyecto por el nuestro).

Estamos desarrollando una nueva aplicación Web en la que la experiencia del usuario es sumamente importante.La aplicación involucra a muchas entidades estrechamente relacionadas.Por diversas razones, es muy deseable que muchas o la mayoría de estas entidades residan en el mismo contexto visual general (y muy probablemente en la misma “página”).Además, varios elementos de la página requieren una comunicación frecuente con el servidor.

Si bien originalmente teníamos la intención de usar ASP.NET MVC4 para nuestra capa de presentación, rápidamente decidimos que tal vez no fuera el mejor enfoque.Después de luchar sobre cómo hacer que MVC hiciera lo que queríamos, básicamente llegamos a la conclusión de que nuestro mejor enfoque sería mover prácticamente toda la lógica de la interfaz de usuario al cliente y simplemente pasar datos JSON de un lado a otro del servidor.Una aplicación de una sola página parece ser una buena opción para las necesidades de nuestros clientes.

Habíamos estado evaluando Knockout, pero no estábamos completamente “vendidos” debido a la cantidad de trabajo necesario para mapear entidades (en JavaScript) expuestas por nuestro controlador ASP.NET MVC (usando métodos de acción JSON).¡Con más de 100 entidades diferentes, este mapeo manual habría sido extremadamente doloroso!

Después de ver la increíble presentación de Steve Sanderson sobre “Aplicaciones de una sola página” de TechDays Holanda (http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2159), pensamos que la Navidad había llegado temprano.Knockout + Upshot parecía la solución perfecta.Sin tomarnos un tiempo razonable para pensar las cosas, informamos inmediatamente a nuestro cliente que haríamos algunos ajustes en nuestro conjunto de herramientas de interfaz de usuario.

A medida que comenzamos a profundizar en las cuestiones arquitectónicas más sutiles que acompañan a cualquier aplicación del mundo real, nos dimos cuenta de que había pocos ejemplos e incluso menos ideas sobre métodos de implementación y mejores prácticas.

Hemos recopilado una serie de cuestiones arquitectónicas espinosas que piden respuesta.Estamos muy agradecidos por cualquier idea o solución que pueda ofrecer.

¿Cuál es el mejor mecanismo para comunicarse entre resultado y .NET?

Según Denver Developer en su blog titulado "Digging into Upshot.js" (http://denverdeveloper.wordpress.com/2012/03/07/digging-into-upshot-js/), hay tres proveedores de datos expuestos por Resultado.js.Estos son:

• “el valor predeterminado es DataProvider() y usa el método /Submit y la operación que usted le proporciona para obtener datos usando el método $.ajax de jQuery.• El siguiente es riadataprovider (), similar al primero, pero utiliza el método /json /submitchanges y /json /{su operación} para obtener datos • Finalmente también tenemos odatadataprovider (), este es bastante diferente porque sí lo hace Actualmente no admite la actualización de datos, solo es de lectura ".

¿Qué proveedor de datos es mejor: el proveedor de datos predeterminado o el proveedor de datos RIA?¿Cuál es el recomendado?

¿Cómo se deben configurar los controladores para gestionar los datos entrantes y salientes?

Entendemos que los controladores WebAPI solo pueden tener un método "Obtener".Si tenemos quizás un par de cientos de consultas diferentes (sin incluir las variaciones de filtro) que se ejecutarán en el servidor, ¿significa esto que necesitaremos 200 clases de controlador diferentes?Si es así, ¿esto justifica el uso de un proveedor de datos que no sea riaDataProvider() de upshot?

¿Cómo se accede y vincula los metadatos disponibles para Upshot?

Uno de los supuestos beneficios de Upshot es su capacidad para consultar metadatos expuestos a través de anotaciones de datos.(Al menos ese es nuestro entendimiento actual). ¿Cómo se accedería a los metadatos de las propiedades de la entidad para la longitud de la cadena, los valores predeterminados, el nombre para mostrar, la información de descripción y si se requiere un campo?

¿Qué biblioteca de validación del lado del cliente debería usarse con Knockout y Upshot?

Supuestamente, el uso de la validación jQuery estándar requiere el enlace "uniqueName" en todos los campos de entrada del formulario.Parece que se puede desaconsejar el uso de jQuery Validation.La página de complementos de Knockout (https://github.com/SteveSanderson/knockout/wiki/Plugins) enumera dos complementos de validación: “Knockout.Validation” y “Knock-Knock Validation”.Para uso general, ¿qué herramienta o complemento se recomienda para la validación con Knockout?

¿Cómo aborda Upshot la creación y actualización de objetos en una jerarquía?

Cuando el resultado es volver a escribir datos en un servidor, ¿manejará automáticamente la adición simultánea de padres y sus hijos como ya se puede hacer en Entity Framework?Asumimos que la respuesta es sí, pero esto no es algo que hayamos probado todavía.

¿Fue útil?

Solución

Como se sugirió, estoy dividiendo esta publicación en varias preguntas más pequeñas.

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