2012-02-28 12 views
6

Mirando el uso de JSON para un nuevo sistema basado en .NET REST y se ve genial, pero hay una cosa que alude mi comprensión. ¿Cuál es la estrategia para mantener el JSON en cualquier lado de la aplicación sincronizado?Arquitectura basada en JSON, la mejor manera de sincronizar front end y back-end

Lo que quiero decir es que si haces un GET para: www.mysite.com/item/12345. Luego, el lado .net de la aplicación se va al archivo db, recupera el elemento con id 12345 y lo resuelve en su objeto modelo. Ítem que luego se serializa en JSON y se devuelve.

Si lo hace un POST a: www.mysite.com/item y pasan -

{ 
    "Id": "12346", 
    "ItemName": "New Item", 
    "ItemCost": 45 
} 

A continuación, el lado de la aplicación .NET lo recoge, deserialises a un objeto de artículos y luego lo entrega para ser agregado al db.

¿Cómo se puede sincronizar ambos lados, su modelo de objeto JS y su serialización de modelo de objetos .net? ¿Esto solo se debe mantener a mano o existe una forma inteligente de proporcionar una plantilla para el JSON basada en la serialización del modelo .net?

Estoy buscando las mejores prácticas y qué es lo que se hace y no veo cómo el lado del cliente sabe lo que JSON pasar al lado del servidor.

+0

Muy buena pregunta. Me hace pensar en construir este tipo de puente a través de la reflexión y JavaScript generado de forma dinámica ... – Humberto

+0

He estado jugando con la idea de tener un servicio delgado que un consumidor puede llamar que devolverá un objeto JSON (basado en el serializado. Objeto neto) puede poblar y enviar de regreso. Pero todavía hay un elemento místico en el que el consumidor sabe que existirán ciertas propiedades y que pueden ser manipuladas. Supongo que sería una referencia web JSON? – David

Respuesta

1

Personalmente, me ha resultado más fácil "controlar" estos cambios para el entorno .NET. No deseando enseñarte a chupar huevos, pero Javascript es un lenguaje muy flexible significa que los cambios/funcionalidad/propiedades se pueden agregar en la pezuña, mientras que en .NET es mucho más fácil probar y estabilizar tus POCO de una manera más rígida.

Un método con el que recientemente jugué es generar POCOs vacías de mi servicio al crear objetos, manipularlos según corresponda antes de volver a enviarlos al servicio para su persistencia, etc. Todavía no resuelve ese sentimiento salvaje-oeste de trabajar en Javascript, pero al menos los DataContracts pueden coincidir en un nivel superficial.

+1

I literaria acaba de responder a otra persona con una noción muy similar. En teoría, la forma en que lo vería funcionar sería del lado del cliente, tendría algo como 'var item = GetItemTemplate()' que llama a un servicio muy delgado que devuelve un objeto serializado en blanco. El lado del cliente luego lo manipula y lo envía sabiendo que solo puede ser el formato correcto. – David

+0

Sí, eso es más o menos. – SeanCocteau

Cuestiones relacionadas