LINQ to JSON в клиентском профиле.net 4.0
Как бы я мог использовать LINQ to JSON в.net 4 Client Profile в C#. Я хотел бы запросить определенные ответы json, как показано в сообщении блога msdn, без необходимости писать контракт (datacontract, servicecontract и т. Д.). Мне действительно нужно только запросить (прочитать) ответ, мне не нужно изменять ответ json. (Также будет ли дата-контракт быстрее, чем LINQ to JSON?)
В качестве альтернативы я мог бы использовать XML или полную среду.net 4, но я надеюсь, что этого можно избежать. Я могу использовать внешние библиотеки, если это лучше, чем установка всей платформы.
2 ответа
Если ваш сервис используется клиентами Ajax (jQuery), вы получите наилучшую производительность с помощью JSON.
Еще одна рекомендация; чтобы избавиться от той же политики домена, я рекомендую вам включить функцию crossDomainScriptAccessEnabled:
<webHttpBinding>
<binding name="myHttpBinding" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
Относительно DataContract; в вашем сценарии DataContract на самом деле не нужен.
Пример кода:
Ваш сервис:
[ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class BlogService { [OperationContract] [WebGet(ResponseFormat = WebMessageFormat.Json)] public List<Article> GetBlogArticles() { return Article.GetDummyArticles.ToList(); } }
Класс статьи (отрывок):
public class Article { public string Title { get; set; } public string Body { get; set; } public static IEnumerable<Article> GetDummyArticles() { yield return new Article { Title = "Article 1", Body = "sdlkfjsdlkfjskl" }; yield return new Article { Title = "Article 2", Body = "sfsfsdfd23434wfdfsfdfkfjskl" }; } }
Для вашего сценария я на самом деле не могу найти причину для использования какой-либо (сторонней) библиотеки, так как WCF4 уже содержит встроенную поддержку JSON с или без Padding.