If your service is used by Ajax (jQuery) clients, you will get the best performance by using JSON.
Another recommendation; in order to get rid of the same domain policy, I recommend you to enable crossDomainScriptAccessEnabled functionality:
<webHttpBinding>
<binding name="myHttpBinding" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
Regarding the DataContract; in your scenario, a DataContract is not really needed.
Example code:
Your Service:
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class BlogService {
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public List<Article> GetBlogArticles()
{
return Article.GetDummyArticles.ToList();
}
}
Article Class (excerpt):
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" };
}
}
For your scenario I actually can't find a reason to use any (3rd-party) library since WCF4 already contains native support for JSON with or without Padding.