Der er ikke mange, der er klar over man sagtens kan få en WCF service til at respondere i JSON formatet. Dette har jeg typisk brugt i AJAX sammenhænge, hvor man kan undlade at bruge en *.aspx side, og i stedet benytte sig af en WCF service på UI laget, der asynkront kan kaldes fra fx. JQuery. Denne WCF service er udelukkende designet til at understøtte asynkrone kald. De metoder man fx. fra JQuery kalder består af nedenstående kontrakt definitioner.
Navnet på WCF service er i dette eksempel 'Service.svc'.

   1:  [ServiceContract(Namespace = "SilverAria.SAM.Service")]
   2:  [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
   3:  [AspNetCompatibilityRequirements(RequirementsMode=
   4:  AspNetCompatibilityRequirementsMode.Allowed)]
   5:  public class Service {
   6:    [OperationContract]
   7:    [WebGet(ResponseFormat=WebMessageFormat.Json, BodyStyle=
   8:  WebMessageBodyStyle.Bare)]
   9:    public Role GetConfiguredSkills(int roleId) {          
  10:       var control = new RenwarRoleConfigurationControl();
  11:       var role = control.PopulateConfiguredSkills(roleId);
  12:       var returnObj = new Role {
  13:           ConfiguredSkills = role.ConfiguredSkills,
  14:           UnconfiguredSkills = role.UnconfiguredSkills
  15:       };
  16:       return returnObj;
  17:    }
  18:  }


I JQuery vil kaldet af metoden se ud på følgende måde:

   1:  $(document).ready(function() {
   2:      $("#roleId").change(function() {
   3:          $("#requiredSkills").empty();
   4:          $("#skills").empty();
   5:          var idValue = $("#roleId").val();
   6:          $.getJSON("Service.svc/GetConfiguredSkills", { roleId: idValue },
   7:          function(data) {
   8:              $.each(data.ConfiguredSkills, function(i, 
   9:                  ConfiguredSkills) {
  10:                  $("<option>" + ConfiguredSkills.Name + ", Lvl " +
  11:                  ConfiguredSkills.Level + "</option>").attr("value",
  12:                  ConfiguredSkills.Id + "#" +
  13:                  ConfiguredSkills.Level).appendTo("#requiredSkills");
  14:              });
  15:              $.each(data.UnconfiguredSkills, 
  16:                function(a, UnconfiguredSkills) {
  17:                  $("<option>" + UnconfiguredSkills.Name + 
  18:                  "</option>").attr("value",
  19:                  UnconfiguredSkills.Id).appendTo("#skills");
  20:              });
  21:          });
  22:          return false;
  23:      });
  24:  });


WCF kaldet leverer data i JSON format, som man så ved hjælp af JQuery 'pakker' ud, og beriger html kontrollerne med. Meget mere elegant løsning istedet for at have en 'dummy' *.aspx side, der reagerer på querystring værdier.