Могу ли я использовать код клиента OData в портативной библиотеке классов? - программирование
Подтвердить что ты не робот

Могу ли я использовать код клиента OData в портативной библиотеке классов?

Я пытаюсь создать переносимую библиотеку классов, нацеленную на .NET, Silverlight, Windows RT и Windows Phone, которые действуют как клиент OData. Я использую Visual Studio 2012.

Когда я создал ссылку службы на мою сторону сервера OData, я получил следующее сообщение об ошибке:

Невозможно добавить ссылку службы на указанный канал OData, потому что Услуги WCF Data Services не установлены для этой целевой структуры. к установите поддерживаемую версию служб данных WCF, см. http://go.microsoft.com/fwlink/?LinkId=253653.

Когда я перейду к URL-адресу, указанному в сообщении об ошибке, я могу выбрать между библиотекой для Windows RT и один для Windows Phone, поэтому это не похоже на работу с переносимой библиотекой классов.

Есть ли какое-либо секретное обходное решение для этого, или мне нужно закодировать мой собственный клиент Odata с голыми запросами HTTP?

Кроме того, если мне нужно использовать простые HTTP-запросы, существует ли хоть какой-то API, который я могу использовать для сериализации/десериализации json или xml, который работает внутри портативного класса libarary?

Спасибо,

Адриан

4b9b3361

Ответ 1

На самом деле у меня есть портативная библиотека классов для OData (Simple.OData.Client), но еще не сделала для него пакет NuGet. Это часть адаптера Simple.Data OData.

Я использую Simple.OData.Client PCL в приложении, которое планирую переносить на другую платформу, включая iOS и Android (используя Xamarin). Если вам интересно попробовать, я предлагаю одну из двух альтернатив:

a) Клонировать репозиторий Simple.Data.OData(https://github.com/simplefx/Simple.OData), переключиться на ветвь winrt, построить его, там у вас есть Simple.OData.Client, который является PCL поддерживает большинство платформ. Wiki в настоящее время описывает синтаксис адаптера Simple.Data, поэтому вам нужно проверить тесты Simple.OData.Client(https://github.com/simplefx/Simple.OData/tree/master/Simple.OData.Client.Tests), чтобы понять синтаксис. Он поддерживает два синтаксических варианта: когда вы форматируете строку фильтра самостоятельно и когда используете свой свободный API. Оба они очень просты в использовании.

b) Я могу ускорить работу над пакетом NuGet для PCL (в настоящий момент загруженный пакет NuGet поддерживает только NET4), но это займет больше времени.

Сообщите мне, если вы заинтересованы.

Ответ 2

Сама библиотека WCF DS Client не является частью Portable Class Library, поэтому это не должно работать (как вы узнали). Он использует ODataLib - Microsoft.Data.OData.dll, который не был протестирован как часть переносимой библиотеки классов, но он должен работать.

Итак, если вы в порядке, используя неподдерживаемое решение, не стесняйтесь использовать его. Это эффективно читатель/писатель для формата OData (ATOM/JSON,...). Его исходный код также доступен на codeplex, поэтому, если что-то действительно не работает в контексте переносимой библиотеки классов, вы можете его исправить (и, пожалуйста, сообщите нам об этом).

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