2009-06-09 2 views
1

J'ai une bibliothèque avec des objets que j'utilise à la fois en C# et en JavaScript. Il y a plusieurs objets, appelons l'un d'eux Foo, avec la même implémentation de base en C# et JavaScript. Lorsque je veux transmettre un objet de ce type du serveur au navigateur, j'appelle simplement Foo.ToJson() pour sérialiser cet objet en JSON, puis relancer l'objet du côté du navigateur avec une opération eval() sécurisée.Comment puis-je réduire la maintenance lorsque mes codes JavaScript et C# se chevauchent?

Tout va bien, mais la bibliothèque devient complexe et la nécessité de garder les bases de code JavaScript et C# synchronisées est de plus en plus difficile et source d'erreurs. Je suis intéressé par des idées pour simplifier cette architecture ou la rendre facile à entretenir. Pensées?

Répondre

3

Vous pouvez regarder en utilisant un script #: http://projects.nikhilk.net/ScriptSharp

Étant donné que vos classes sont toutes codées en C#, vous pourriez réutiliser le même fichier .cs pour les deux projets de serveur et client. De cette façon, lorsque vous effectuez des modifications, il est automatiquement compilé dans le javascript :-)

+0

Le numéro de script est très joli. Ce serait bien de générer mon code JavaScript à partir du C#. – PeterAllenWebb

2

avez-vous envisagé de faire votre "code partagé" dans un service Web, de cette façon, toutes vos applications peuvent y accéder, et vous pouvez tout faire distribué pour aider à la performance.

Juste une solution.

http://en.wikipedia.org/wiki/Web_services

+0

Donc, dans le cadre de votre stratégie, je ne conserverais pas une copie du côté client de l'objet, mais je ferais plutôt des demandes de service Web pour mettre à jour et interroger l'état d'un objet côté serveur, oui? – PeterAllenWebb

+0

correct, de cette façon vous réduisez la quantité de code client et pouvez partager vos utilitaires communs dans toutes vos applications. Un autre avantage est que vous pouvez accéder à votre service Web en utilisant pratiquement n'importe quel langage de programmation. –

1
  1. Faire les parties de votre application qui se chevauchent en tant que données axée possible. À une certaine taille, il est plus facile d'exécuter un interpréteur de machine à états des deux côtés qui peut analyser les mêmes données.
  2. Écrivez le code une fois. Il y a quelques compilateurs C# vers JavaScript que vous pouvez regarder. Script# et jsc.
1

Utilisez les DTO. Objets de transfert de données. De cette façon, si vos objets JScript ou C# changent, vos DTO ne doivent pas nécessairement être modifiés à moins que cette propriété ne soit immédiatement requise sur le client. Et même alors, vous avez une séparation claire entre ce qui est destiné à être sérialisé et ce qui ne l'est pas.

Dave Ward at Encosia speaks a lot about this.

+0

C'est un article génial. – Nosredna