Je travaille sur une application Web ASP.NET qui utilise beaucoup de JavaScript côté client pour permettre à l'utilisateur de faire des choses comme réordonnancement glisser-déposer des listes, à la recherche des objets Pour ajouter à la liste (comme les suggestions dans la barre de recherche Google), supprimer des éléments de la liste, etc.Le maintien de la cohérence entre JavaScript et C# Modèles d'objet
J'ai une «classe» JavaScript que j'utilise pour stocker chacun des éléments de la liste du côté client ainsi que des informations sur l'action de l'utilisateur sur l'élément (ajouter, modifier, supprimer, déplacer). La seule fois où la page est publiée sur le serveur, c'est quand l'utilisateur a terminé, juste avant que la page ne soit soumise. Je sérialise toutes les informations sur les changements qui ont été faits dans JSON et les stocke dans des champs cachés sur la page.
Ce que je cherche quelques conseils généraux sur la façon de construire mes classes en C#. Je pense qu'il pourrait être sympa d'avoir une classe en C# qui corresponde à celle de JavaScript, donc je peux juste désérialiser le JSON aux instances de cette classe. Il semble cependant un peu étrange d'avoir des classes côté serveur qui à la fois dupliquent directement les classes JavaScript et n'existent que pour prendre en charge l'implémentation de l'interface utilisateur JavaScript.
Ce genre est d'une question abstraite. Je suis à la recherche de conseils de la part d'autres personnes qui ont fait des choses similaires en termes de maintenance des modèles d'objets latéraux client et serveur correspondants.
Merci, cela semble être une idée intéressante d'utiliser RelaxNG. J'ai récemment fait des choses avec Google Protocol Buffers, qui utilise son propre langage pour définir une classe comme celle-ci, afin que vous puissiez générer les versions appropriées pour toutes les langues dans lesquelles vous codez. Il est intéressant de savoir comment une telle idée peut être appliquée dans plusieurs scénarios et technologies différents. Je ne peux pas croire que je n'ai pas pensé à faire ça avant. –
ya, j'ai aussi pensé à protobufs. Je me demande si le code généré par un protobufs .idl est utilisable sans le sérialiseur protobufs. Si c'est le cas, vous pouvez utiliser JsonSerializer dans .NET, avec le code C# généré par l'outil protobufs. – Cheeso
Vous suggérez donc de comparer une instance sérialisée de la classe C# à un document statique contenant JSON qui représente ma structure de données. Si elles correspondent, je sais que la classe C# est correcte. Ensuite, je comparerais les instances de la même classe en JavaScript au document JSON et si elles correspondent, cela vérifie que je serai capable d'échanger des données d'un client vers un serveur sans problèmes de sérialisation et de désérialisation. –