2016-10-29 4 views
1

Я работаю над проектом клиент/сервер, но изо всех сил стараюсь, чтобы он работал, главным образом потому, что в PCL невозможно получить доступ к System.ServiceModel.Xamarin, вернуть данные WCF в PCL из определенных библиотек платформы

Но это нормально, мне удалось использовать DependencyServices, который я вызываю из PCL для управления соединением с сервером с каждой конкретной платформы.

Моя проблема, когда я называю, например

var result = DependencyService.Get<Interface>().Operation(param); 

это будет идти к платформе конкретной, там я делаю привязки, конечную точку и вызвать реальную работу с WCF, то есть асинхронный, так теперь я не могу вернуть результат из WFC в этом методе, потому что после завершения операции он будет возвращен другому методу.

Моя цель - выполнить большую часть работы на PCL, поэтому мне не нужно начинать писать мой интерфейс несколько раз для каждой платформы. Поэтому в резюме мне нужен способ вернуть результат с сервера (WCF или какой-либо другой, который заставит его работать) в моем PCL.

+0

Вы можете использовать другой интерфейс и инъекции зависимостей для этого. Кстати, я использую все вызовы WCF в PCL, не уверен, почему он не работает для вас. Вы используете XForms или Classic? –

+0

Если функция, которую вы вызываете, является асинхронной, результат будет возвращен одному и тому же абоненту, если вы ждете. В чем проблема? Можете ли вы поделиться еще немного кода определения функций и вызовов? –

+0

@YuriS Я использую XForms. Когда я помещаю свой service.cs в MyApp (Portable), я получаю такие ошибки, как: Тип или имя пространства имен «...» не существует в пространстве имен «System.ServiceModel» ..._. Он нормально работает, если я помещаю его в проект MyApp.Droid, поэтому я предположил, что он не будет работать в PCL. Надеюсь, у вас есть работа вокруг этого. – BrunoWB

ответ

1

Создание WCF прокси/клиента в PCL с помощью VS и избежать всех этих проблем

enter image description here

Если Service Reference не доступен в параметрах проверки настройки библиотеки

enter image description here

+0

Ссылка на службу отображается только в том случае, если у вас нет телефона с телефоном 8.1, выбрано – BrunoWB

+0

, так что я работал с прокси-сервером Silverlight, но вы не можете настроить таргетинг на Windows-телефон, так как если я это сделаю, это не позволит мне использовать System. ServeModel – BrunoWB

+0

прокси-сервер Silverlight также работает в переносной библиотеке. это немного больше работы, но выполнимо. Я только забочусь о Windows Phone 8.0, поэтому ссылка на сервис работает для меня –

Смежные вопросы