Использование службы отдыха WCF с WP7 - PullRequest
3 голосов
/ 20 ноября 2011

У меня есть WCF Restful Service, который возвращает объекты JSON, которые прекрасно используются в моих приложениях для iPhone и Android.Это моя первая попытка создать что-то подобное, и я оставил WP7 до последнего, поскольку мой опыт связан с C # и VS2010.Но, похоже, все будет не так просто, как я догадывался.

Итак, я думаю, у меня есть три вопроса:

1, могу ли я использовать объекты JSON в WP7?Если так, кто-нибудь знает учебник?2, если нет, могу ли я использовать существующий сервис и создать несколько новых контрактов для потребления в WP7?Или,

3, мне нужно создать совершенно новый сервис?

Первый вариант наиболее желателен, но в любом случае мне нужно разрабатывать для всех трех операционных систем, чтобы кто-нибудь знал лучшиетип модели, чтобы собрать все это вместе ???Приветствия,

Майк.

Ответы [ 3 ]

2 голосов
/ 20 ноября 2011
  1. Да, но не с моделью программирования фабрики / прокси канала, к которой вы можете привыкнуть с WCF.Службы REST обычно используются с использованием более простых классов, таких как WebClient.Вы можете использовать библиотеки JSON (DataContractJsonSerializer в профиле WP7), чтобы десериализовать полученные данные.Даже нетипизированные JSON (классы System.Json из System.Json.dll в Silverlight), хотя они и не включены в профиль, официально работают и над WP7 (я видел, как некоторые люди просто ссылались на библиотеку SL напроект WP7).

  2. Если вам нужна поддержка прокси, вы можете добавить новую конечную точку к службе, используя BasicHttpBinding, которая поддерживается в WP7;если вам это не нужно, см. 1).

  3. Нет.См. 1) и 2).

0 голосов
/ 15 декабря 2011

Мне кажется, что подход, основанный исключительно на wcf, более интересен.

Это хороший пост, посвященный этой проблеме http://blogs.msdn.com/b/carlosfigueira/archive/2010/04/29/consuming-rest-json-services-in-silverlight-4.aspx

0 голосов
/ 20 ноября 2011

Попробуйте выполнить десериализацию объекта JSON:

public static T Deserialize<T>(string strData) where T : class
{
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
    byte[] byteArray = Encoding.UTF8.GetBytes(strData);
    MemoryStream memoryStream = new MemoryStream(byteArray);
    T tRet = serializer.ReadObject(memoryStream) as T;
    memoryStream.Dispose();
    return tRet;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...