2012-04-19 12 views
5

L'unico argomento che posso vedere per SOAP WCF su REST (json) wcf è il fatto che una volta creato il mio servizio posso aggiungere un riferimento in Visual Studio e ottengo un carico di classi fortemente tipizzate pronte per me e una classe cliente che posso chiamare tutto il mio webmethod. Installa anche il web.config per quanto mi ricordo.Posso generare automaticamente un riferimento di servizio per un servizio WCF REST?

Tuttavia, quando espongo un servizio REST (json), ricevo comunque un WSDL. Quindi mi sto chiedendo c'è ancora un modo per costruire automaticamente i miei riferimenti?

+0

Hai provato ad aggiungere un riferimento al servizio il "vecchio" modo? [Esempio di tabella di codici - Passaggio 4] (https://www.blackbaud.com/files/support/guides/infinitydevguide/Subsystems/inwebapi-developer-help/Content/InfinityWebAPI/coCodeTableExampleBizOps.htm). –

risposta

3

Non si utilizzano gli strumenti WCF. A differenza di SOAP (che ha un protocollo stabilito per la descrizione dei servizi - WSDL), REST no. WADL è uno di questi protocolli, ma non è troppo diffuso e WCF non lo supporta. Si ottiene ancora un WSDL, perché WCF descriverà tutto ciò che può dal servizio. Tuttavia, il WSDL non avrà un elemento <wsdl:port>, che descriverà l'endpoint REST, motivo per cui si ottiene il WSDL, ma non è possibile generare un riferimento ad esso.

Il post a 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 ha molte più informazioni su questo problema.

+0

Il tuo codice di esempio nel thread collegato è molto utile Carlos. Potrei suggerirti di riassumere qui e includere il codice? –

+0

Ampliata la risposta con ulteriori dettagli. – carlosfigueira

0

Vorrei top elaborare:

Anche se è vero che non si può ottenere un WSDL aggiungere riferimento al servizio con un servizio di JSON REST WCF, quello che faccio è creare due si sono incontrati ganci di dati:

  1. è le operazioni di JSON ritorno
  2. è un singolo op XML che restituisce un wrapper di classe che comprende tutte le classi di servizio mi permetto, mi chiamano Scoprire:

cioè

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

[OperationContract] 
public Discover DiscoverDTOs() 
Problemi correlati