2012-04-19 3 views
5

Das EINZIGE Argument, das ich für SOAP WCF über REST (JSON) sehen kann, ist die Tatsache, dass, sobald mein Dienst erstellt wird, ich eine Referenz in Visual Studio hinzufügen kann und eine Last von stark typisierten Klassen für mich und eine Clientklasse bereit dass ich alle meine Webmethode aufrufen kann. Es richtet sogar die web.config ein, soweit ich mich erinnere.Kann ich eine Service-Referenz für einen REST WCF-Service automatisch generieren?

Wenn ich jedoch einen REST (JSON) -Dienst verfügbar mache, bekomme ich immer noch eine WSDL. Also frage ich mich, gibt es noch einen Weg, um meine Referenzen automatisch zu erstellen?

+0

Haben Sie versucht, einen Verweis auf den Dienst den "alten" Weg hinzuzufügen? [Codetabellenbeispiel - Schritt 4] (https://www.blackbaud.com/files/support/guides/infinitydevguide/Subsystems/inwebapi-developer-help/Content/InfinityWebAPI/coCodeTableExampleBizOps.htm). –

Antwort

3

Keine WCF-Tools verwenden. Anders als bei SOAP (das über ein etabliertes Protokoll zur Beschreibung von Services - WSDL) verfügt, gibt es REST nicht. WADL ist ein solches Protokoll, aber es ist nicht zu weit verbreitet und WCF unterstützt es nicht. Sie erhalten immer noch eine WSDL, weil WCF alles beschreibt, was es vom Dienst kann. Die WSDL verfügt jedoch nicht über ein <wsdl:port>-Element, das den REST-Endpunkt beschreiben würde. Aus diesem Grund erhalten Sie die WSDL, können jedoch keine Referenz darauf generieren.

Der Beitrag bei http://blogs.msdn.com/b/carlosfigueira/archive/2012/03/26/mixing-add-service-reference-and-wcf-web-http-a-k-a-rest-endpoint-does-not-work.aspx hat eine Menge mehr Informationen zu diesem Thema.

+0

Ihr Beispiel-Code im verknüpften Thread ist sehr hilfreich Carlos. Kann ich vorschlagen, dass Sie hier zusammenfassen und den Code einfügen? –

+0

Erweitert die Antwort mit weiteren Details. – carlosfigueira

0

Ich möchte oben erarbeiten:

Obwohl es wahr ist, dass Sie nicht ein WSDL hinzufügen Dienstverweis mit einem JSON REST WCF-Dienst bekommen, was ich tun, schaffen zwei Daten Haken erfüllt:

  1. ist die Operationen JSON Rückkehr
  2. ist ein einzelner XML-op eine Wrapper-Klasse zurückkehren, die alle Serviceklassen umfasst ich erlaube, ich nenne es Entdecken:

dh

public class Discover 
{ 
    public Manager Manager {get;} 
    public Employee Emp {get;} 
    .... 
} 

[OperationContract] 
public Discover DiscoverDTOs() 
Verwandte Themen