2010-01-14 2 views
2

Мы разрабатываем многопользовательскую игру silverlight с использованием TCP-соединений. У нас есть все наши игровые объекты и движок, которые хранятся в отдельной сборке, что мы имели в виду для клиента SL и серверного приложения для совместного использования. Однако, похоже, что специальные сборки SL не могут использоваться совместно с чистыми .NET-приложениями и наоборот.Клиент-сервер без общей кодовой базы

Итак, каковы наши варианты? Мы знаем, что бета SL 4.0 предлагает частичные общие сборки из самых основных пространств имен, но на данный момент мы не заинтересованы в работе с бета-версией.

Возможно ли было бы дистанционно выполнить всю логику игры на стороне сервера, а затем просто отправить клиентский сервер SL на сервер и визуализировать графику, как это было продиктовано сервером?

ответ

0

Pure .NET-приложение : можно связать даже сборки Silverlight 3.0, просто попробуйте. Это только то, что они делают маркетинг для этой функции сейчас для 4.0. ;-)

Однако я испытал некоторые незначительные проблемы с этим (кажется, что некоторые делегаты не были совместимы). Кроме того, сборки Silverlight 3.0 не оптимизируются при выборе этой опции компилятора.

Что вы можете сделать, это добавить существующие файлы исходного кода в свой проект как ссылки. Но это, безусловно, боль, чтобы поддерживать, когда у вас много, и часто создавать новые или удалять файлы исходного кода. Пока вы не можете связать полные папки. : -/

Инструменты Visual Studio для служб RIA (текущий подход Microsoft RAD для приложений Silverlight LOB) используют T4 для копирования кода класса объектов из проекта .NET, который выполняется на веб-сервере, на котором размещается веб-служба к проекту Silverlight. Для меня это не похоже на чистый подход. Но, возможно, вы не так пронзительны, как я, и можете проверить, можете ли вы использовать эту функциональность для своей цели.

+0

Мы попытались обратиться к сборке SL 3.0, и мы получили диалог, в котором говорилось, что это невозможно. Для получения приемлемой производительности мы вынуждены использовать TCP или более низкую сеть. –

+0

Хмм, это отлично работает для меня. Я использовал сборки для библиотек классов silverlight, в которых я выбрал все, кроме System и System.Core. Возможно, если есть зависимости от этих более удобных сборок Silverlight UI, это больше не будет работать. – herzmeister

+0

Вы абсолютно правы! Мы могли бы сделать ссылку, но наше приложение показало, что System.Core каким-то образом не удалось. Мы предположили, что это произошло из-за разницы между silverlight и .NET, но настоящим виновником было использование Action/Func. Спасибо за помощь –