Общий код клиента WCF между приложениями .NET и Silverlight? - PullRequest
3 голосов
/ 19 марта 2010

Я занимаюсь разработкой приложения .NET, которое будет иметь как WinForms, так и клиент Silverlight. Хотя большая часть кода будет находиться на сервере, мне также понадобится немного логики на клиентах, и я хотел бы сохранить код клиентской библиотеки таким же.

Из того, что я мог выяснить до сих пор, мне нужно иметь два разных типа проектов, библиотеку классов и библиотеку классов Silverlight, и связывать файлы из одного проекта в другой. Это выглядит отстойно, но работает для простого кода.

Однако моя проблема в том, что код, сгенерированный SVCUtil.exe для доступа к службам WCF, отличается от кода, сгенерированного slsvcutil.exe , и кода silverlight на самом деле несовместим с .NET: я получаю кучу проблем с классами System.ServiceModel.Channel, когда пытаюсь импортировать класс в .NET.

Кто-нибудь делал что-нибудь подобное раньше? Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 19 июля 2012

Я знаю, что уже слишком поздно предлагать решение, но это была и моя проблема, и я нашел Portable Class Libraries . Это идеальное решение вашей проблемы.

2 голосов
/ 19 марта 2010

К сожалению, в Silverlight 3 и .NET 3.5sp1 двоичная совместимость отсутствует. Вы должны обмениваться файлами и поддерживать две отдельные библиотеки.

Silverlight 4 и .NET 4, однако, обеспечат некоторый уровень двоичной совместимости. В зависимости от того, какие сборки вы используете на стороне клиента, вы можете использовать один и тот же компонент как в Silverlight, так и в Windows Forms.

0 голосов
/ 20 марта 2010

Не пытайтесь использовать один прокси-клиент среди разрозненных клиентов - создайте прокси для каждого клиента.

Вы можете повторно использовать классы данных между проектами, используя метод add as link , который вы описали. Если в прокси создается новая версия классов, вы можете просто отредактировать сгенерированные файлы кода прокси и удалить определения классов. Когда вы это компилируете, у каждого клиента (приложения Windows и silverlight) будет своя собственная версия скомпилированной библиотеки классов, но все они исходят из одного и того же исходного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...