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. Поскольку они не могут ссылаться на общую библиотеку, связывание общих файлов, как упоминалось, является самым простым способом обмена кодом между двумя проектами, предназначенными для разных сред выполнения.