2010-01-14 4 views
2

Nous développons un jeu multijoueur Silverlight utilisant des connexions TCP. Nous avons tous nos objets de jeu et le moteur stockés dans un assemblage séparé que nous avons signifié pour le client SL et l'application serveur à partager. Cependant, il semble que les assemblys SL spéciaux ne peuvent pas être partagés avec des applications .NET et vice versa.Client-serveur sans base de code partagée

Alors, quelles sont nos options? Nous savons que la version bêta de SL 4.0 offre des assemblages partagés partiels des espaces de noms les plus basiques, mais nous ne sommes pas intéressés à travailler avec une version bêta à ce stade.

Serait-il même possible d'exécuter toute la logique du jeu du côté du serveur, puis de laisser le client SL envoyer l'entrée au serveur et rendre les graphiques comme dictés par le serveur?

Répondre

0

application .NET pure sont en mesure de relier même des ensembles 3.0 Silverlight, juste essayer. C'est seulement qu'ils font le marketing pour cette fonctionnalité maintenant pour 4.0. ;-)

Cependant j'ai éprouvé quelques problèmes mineurs avec cela (semble que certains délégués Func<>/Action<> n'étaient pas compatibles). En outre, les assemblys Silverlight 3.0 ne sont pas optimisés lorsque vous choisissez cette option de compilateur.

Ce que vous pouvez faire est d'ajouter des fichiers de code source existants dans votre projet en tant que liens. Mais c'est sûrement une peine à maintenir quand vous en avez beaucoup et souvent créer de nouveaux fichiers ou supprimer des fichiers de code source. Vous ne pouvez pas encore lier des dossiers complets. : -/

Les outils Visual Studio pour les services RIA (l'approche Microsoft RAD actuelle pour les applications LOB Silverlight) utilisent T4 pour copier le code de classe d'entité du projet .NET exécuté sur le serveur Web hébergeant le service Web. au projet Silverlight. Pour moi, cela ne ressemble pas à une approche propre. Mais peut-être que vous n'êtes pas aussi osé que moi et pouvez vérifier si vous pouvez tirer parti de cette fonctionnalité pour votre but.

+0

Nous avons essayé de référencer l'assemblage SL 3.0, et nous avons eu un dialogue disant que ce n'était pas possible. Nous sommes obligés d'utiliser TCP ou un réseau de niveau inférieur pour obtenir des performances acceptables. –

+0

Hmm ça a bien marché pour moi. J'ai utilisé des assemblages pour les bibliothèques de classe Silverlight bien sûr dans lequel j'ai tout jeté à l'exception de System et System.Core. Peut-être que s'il y a des dépendances sur ces assemblages d'interface utilisateur Silverlight, cela ne fonctionnera plus. – herzmeister

+0

Vous avez absolument raison! Nous pourrions faire la référence mais notre application chrashed disant que System.Core a échoué en quelque sorte. Nous avons supposé que c'était dû à la différence entre silverlight et .NET, mais le vrai coupable était l'utilisation d'Action/Func. Merci l'aide –