Come utilizzare un file WSDL per creare un servizio WCF (non effettuare una chiamata)

Ho un vecchio file WSDL e voglio creare un server basato su questo file WSDL.

Il WSDL è generato da un ASMX (suppongo ma non sono sicuro).

Come posso raggiungere questo objective ?


domanda originale in cui l’OP pensava di aver bisogno di creare un client basato sul WSDL.

Utilizzando svcutil, è ansible creare interfacce e classi (contratti dati) dal WSDL.

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic) 

Questo creerà un file chiamato “your.cs” in C # (o “your.vb” in VB.NET) che contiene tutti gli elementi necessari.

Ora, è necessario creare una class “MyService” che implementerà l’interfaccia di servizio (IServiceInterface) – o le diverse interfacce di servizio – e questa è l’istanza del server.

Ora una class di per sé non è ancora di aiuto, è necessario ospitare il servizio da qualche parte. È necessario creare la propria istanza ServiceHost che ospita il servizio, configurare gli endpoint e così via oppure è ansible ospitare il servizio in IIS.

Ci sono buone risorse là fuori se sai cosa cercare. Prova “Contratto prima” e WCF. o “WSDL Primo” e WCF.

Ecco una selezione:

  • Panoramica di base del primo sviluppo WSDL con WCF e SvcUtil.exe .
  • WSCF – Un componente aggiuntivo gratuito per Visual Studio che consente la progettazione Contract-First con WCF
    • Introduzione a WSCF
    • Una panoramica dell’utilizzo di WSCF
    • La pagina del progetto WSCF su CodePlex (WSCF è ora open source)
  • Articolo su come progettare WSDL “WCF-Friendly”

Utilizzare svcutil.exe con l’opzione /sc per generare i contratti WCF. Questo creerà un file di codice che puoi aggiungere al tuo progetto. Conterrà tutte le interfacce e i tipi di dati necessari per creare il tuo servizio. Modificare la posizione di output utilizzando l’ /o , oppure è ansible trovare il file nella cartella in cui è stato eseguito svcutil.exe. La lingua predefinita è C # ma penso che (non l’ho mai provato) dovresti essere in grado di cambiarlo usando /l:vb .

 svcutil /sc "WSDL file path" 

Se il tuo WSDL ha file XSD supportati, passa quelli in come argomenti dopo il WSDL.

 svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path" 

Quindi crea una nuova class che è il tuo servizio e implementa l’interfaccia del contratto appena creata.

È ansible utilizzare svcutil.exe per generare codice client. Ciò includerebbe la definizione del contratto di servizio e eventuali contratti di dati e contratti di falla richiesti.

Quindi, elimina semplicemente il codice cliente: classi che implementano i contratti di servizio. Dovrai quindi implementarli tu stesso, al tuo servizio.

Utilizzando lo strumento “Aggiungi riferimento servizio” in Visual Studio, è ansible inserire l’indirizzo come:

File: ///path/to/wsdl/file.wsdl

E si caricherà correttamente.