9

Quando aggiungo un riferimento al servizio WCF in Visual Studio 2008, viene creata una directory denominata Service Reference \ ServiceReferenceNamespace.Cosa sono questi file di riferimento del servizio WCF

In questa directory sono presenti i file Service.xsd, Service1.xsd, Service2.xsd, Service3.xsd e Service4.xsd. I file non sono duplicati - i diversi file definiscono diversi tipi ed elementi. Quando ho creato il servizio refernece per la prima volta, c'era solo un file, ma sono stati aggiunti altri file * di servizio quando ho aggiunto più DataContract e OperationContracts.

Sembra un po 'strano che vengano generati 5 file diversi e non solo uno. Se elimini il riferimento del servizio (e quindi la directory) e poi lo aggiungo di nuovo, gli stessi file vengono aggiunti di nuovo.

Qualcuno può spiegare perché vengono creati diversi file e non uno solo?

risposta

4

Quando si aggiunge Riferimento servizio, VS scarica prima i metadati, come file WSDL e XSD, che descrivono il servizio. Questi vengono memorizzati nella directory ServiceReference. Quindi VS esegue una fase di generazione del codice usando quei file come input, producendo Reference.cs o .vb come output.

+0

Forse non ero chiaro. La mia domanda era perché c'erano Service1.xsd, Service2.xsd, Service3.xsd e Service4.xsd e non solo Service.xsd. – Martin

+3

Otterrai un file xsd per tipo di spazio dei nomi. Per i servizi WCF che utilizzano DataContractSerializer, in genere si ottiene uno spazio dei nomi XSD per ogni spazio dei nomi CLR utilizzato dai tipi, più uno aggiuntivo per i tipi predefiniti. Se vuoi mettere tutti i tuoi tipi di applicazione definiti in uno spazio dei nomi XSD puoi usare [DataContract (Namespace = "...")] per impostarlo su qualsiasi URI. – alexdej