Usar Interfaz de Servidor

Sencillo Web Service Que Muestra la Característica de Inerfaz de Servidor


Para usar la característica ServerInterface feature, tenemos dos opciones:
  • (1) Ejecutar wsdl.exe usando el switch(conmutador) /serverInterface (o /si, abreviando) con un fichero wsdl. La salida será un fichero de código que contendrá la interfaz para cada vinculación wsdl.
  • (2) Escribir la(s) interface(s) nosotros mismos y aplicarle(s) [WebServiceBindingAttribute] y [WebMethodAttribute] en cada método Web de la(s) interface(s).
Aquí tenemos un ejemplo de cómo usar la opción (1) desde la línea de comandos:
wsdl.exe /si ServerInterfaceSample.wsdl

El Servicio Web del siguiente ejemplo se escribió usando la opción (2). La interfaz es así:
[WebServiceBinding(Name="ReportDateTime", Namespace="Microsoft.Samples.XmlMessaging.WebServices")]
public interface IReportDateTime
{
[WebMethod]
DateTime getCurrentDateTime();
}
La implementación es así:
[WebService(Namespace="Microsoft.Samples.XmlMessaging.WebServices")]
public class ServerInterfaceService : IReportDateTime
{
public DateTime getCurrentDateTime()
{
//Web method implementation here
}
}
Independientemente de la opción que elijamos, tendremos que implementar la(s)interface(s) en nuestro código del servicio. La ventaja de esto es que el código de implementación se mantiene separado del de contrato (como definimos en la interfaz). Si cambiamos el wsdl y luego regeneramos la interfaz, no perderemos nada del código de implementación. Para seguir las indicaciones de diseño recomendadas, no debemos poner código en la implementación que cambie el contrato wsdl. De igual forma, no debemos alterar las interfaces con código que afecte el comportamiento en tiempo de ejecución. Los detalles del contrato y la implementación deben permanecer separados.

NOTA: Esta característica deja obsoleto el uso de /server con wsdl.exe.

Ejemplo en C#