RIA Services binary, Json, Odata und SOAP Endpunkte

Mit Hilfe des Silverlight RIA Services Toolkit lassen sich zusätzliche Optionen der RIA Services nutzen.

  • LinqToSql DomainService
  • SOAP Endpoint
  • JSON Endpoint 
  • ASP.NET DomainDataSource Control

    In diesem Blog Eintrag betrachte ich einmal die Möglichkeiten der serialisierung. Insgesamt kann man stand heute folgenden Formate wählen.

  • Binary
  • OData
  • SOAP
  • JSON

    Allerdings muss in der Web.Config manuell die Konfiguration erweitert werden.

     <domainServices>
          <endpoints>
            <add name="OData"
                 type="System.ServiceModel.DomainServices.Hosting.ODataEndpointFactory, 
    System.ServiceModel.DomainServices.Hosting.OData, Version=4.0.0.0, Culture=neutral,
    PublicKeyToken=31bf3856ad364e35"
    /> <add name="JSON" type="Microsoft.ServiceModel.DomainServices.Hosting.JsonEndpointFactory,
    Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral,
    PublicKeyToken=31bf3856ad364e35"
    /> <add name="Soap" type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory,
    Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral,
    PublicKeyToken=31bf3856ad364e35"
    /> </endpoints> </domainServices>

    Der Aufruf für eine JSon Rückgabe erfolgt in der Form

    http://localhost:[port]/ClientBin/[Projektname]-Web-[DomainServiceklasse].svc/Json/[Methode]

    Da die SVC Dateien nicht wirklich existieren sondern per IIS Modul Mapping behandelt werden kann der Pfad statt Clientbin auch z.B. Service lauten.

    Wenn man den Traffic mit Fiddler mitschneidet kann man sehr gut erkennen wie das Json Format aufgebaut ist.

    image

    Die Aufrufe der einzelnen Methoden und die Rückgabe Datenmenge in KB im Vergleich

    ..KoelnSL-Web-DomainServiceMD.svc/binary/GetOrdersDetails

    607K

    ..KoelnSL-Web-DomainServiceMD.svc/Json/GetOrdersDetails

    563K

    ..KoelnSL-Web-DomainServiceMD.svc/OData/GetOrdersDetails

    1109K

    ..KoelnSL-Web-DomainServiceMD.svc/Soap/GetOrdersDetails

    erzeugt 400er Error

    Soap Abrufe sind leider im Browser nicht direkt möglich. Deshalb auch die Fehlermeldung. Um den Service bzw die Methode testweise aufzurufen könnten man das Hilfstool WCFtestClient.exe verwenden. Leider unterstützt dieses keine Domainservices. Also bleibt nur der Weg über das Silverlight Projekt.

    image

  • Leider kompiliert meine Lösung anschliessend nicht mehr. Selbst auf Nachfrage bei Microsoft konnte man adhoc das Problem nicht lösen. Die einzige Antwort das es aktuellere Bits der RIA Services und Silverlight (GDR) gibt hilft nicht, da ich dafür alles neu installieren muss und dann mit RC Bits arbeite die nirgendwo laufen. Entsprechend werde ich die Lösung für SOAP in einem späteren Blog nachliefern.

    Kommentar schreiben