WCF-сервис Silverligtht с поддержкой Prism

Мне необходимо написать приложение Silverlight с использованием WCF.

Я также должен использовать Dependency Injection, чтобы получить доступ к этому сервису в другой библиотеке.

(Я добавляю службу WCF с поддержкой Silverlight)

Проблема заключается в попытке использовать Dependency Injection (в данном случае Prism/MEF). Когда я делаю общую библиотеку Silverlight, которая будет иметь интерфейсы для этой службы, я не могу добавить эту библиотеку в проект ASP.Net из-за того, что это библиотека Silverlight. Если я создаю не-Silverlight библиотеку, я не могу добавить эту библиотеку в другие проекты для совместного использования этого общего интерфейса.

По сути, мне нужна библиотека, которую я думаю разделить между проектами в Silverlight, чтобы я мог выполнить эту инъекцию сервиса.

Любая информация ценится

2 ответа

Решение

Как сказал Слагстер - это делается путем ссылки на файлы библиотеки windows из библиотеки silverlight.

Вы делаете это, как описано здесь: http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/01/20/linking-files-in-visual-studio.aspx

Я просто хотел добавить.. Так как вы идете туда - вам нужен еще один Framework/Technology. Обычно те классы, о которых вы говорите, зависят от других классов / пространств имен, которые живут только в окнах или только в серебряном свете. И тогда вам нужно передать данные объекта по проводам.

Решение Microsoft для этого - RIA Services. Что он делает - он берет ваши классы Windows и генерирует прокси-классы на стороне Silverlight. Вид того, что вам нужно. И это работает с сервисами WCF.

Есть сторонние решения, такие как CSLA и DevForce. Я использую DevForce, и он делает много вещей автоматически, но вместо того, чтобы генерировать прокси-классы - он создает ссылки так же, как вы хотите.

Независимо от того, понимаете вы это или нет, ваш вопрос является дубликатом этого: общий объект данных между службой WCF и приложением Silverlight. Хотя этот вопрос не задан одинаково, ответ тот же.

Вам необходимо создать отдельный проект и поделиться файлами кода (в виде ссылок) из одного проекта в другой. Ваша проблема в том, что проект Silverlight скомпилирован для среды выполнения, отличной от проекта ASP.NET/WCF. Поскольку они не могут ссылаться на общую библиотеку, связывание общих файлов, как упоминалось, является самым простым способом обмена кодом между двумя проектами, предназначенными для разных сред выполнения.

Другие вопросы по тегам