9

Cuando agrego una referencia de servicio WCF en Visual Studio 2008, se crea un directorio llamado Referencia de servicio \ ServiceReferenceNamespace.Qué son estos archivos de referencia de servicio WCF

En este directorio, hay archivos llamados Service.xsd, Service1.xsd, Service2.xsd, Service3.xsd y Service4.xsd. Los archivos no son duplicados: los diferentes archivos definen diferentes tipos y elementos. Cuando creé el servicio por primera vez, solo había un archivo, pero se agregaron más archivos * de servicio cuando agregué más DataContract y OperationContracts.

Parece un poco extraño que se generen 5 archivos diferentes y no solo uno. Si elimino la referencia del servicio (y, por lo tanto, el directorio) y luego lo vuelvo a agregar, se vuelven a agregar los mismos archivos.

¿Alguien puede explicar por qué se crean varios archivos y no solo uno?

Respuesta

4

Cuando agrega Agregar referencia de servicio, VS primero descarga los metadatos, como archivos WSDL y XSD, que describen el servicio. Estos se almacenan en el directorio ServiceReference. Entonces VS ejecuta un paso de generación de código usando esos archivos como entrada, produciendo Reference.cs o .vb como salida.

+0

Quizás no estaba claro. Mi pregunta era por qué había Service1.xsd, Service2.xsd, Service3.xsd y Service4.xsd y no solo Service.xsd. – Martin

+3

Obtendrá un archivo xsd por espacio de nombres de tipo. Para los servicios WCF que usan DataContractSerializer, normalmente obtendrá un espacio de nombres XSD por espacio de nombres CLR que utilizan sus tipos, más uno adicional para los tipos incorporados. Si desea colocar todos los tipos definidos por la aplicación en un espacio de nombre XSD, puede usar [DataContract (Namespace = "...")] para establecerlo en cualquier URI. – alexdej

Cuestiones relacionadas