Migrar de Servicios Web a WCF

Imaginemos que tenemos desarrollados una serie de servicios web que estan siendo consumidos por una gran diversidad de clientes y quiero realizar la migración de estos servicios a WCF, como puedo hacerlo sin que afecten a esos clientes.

La manera es modficar nuestro servicio web decorandolo con los atributos de WCF pero manteniendo los atributos de Web Services. 

using System; 

using System.Web; 

using System.Collections; 

using System.Web.Services; 

using System.Web.Services.Protocols; 

   

using System.ServiceModel; 

   

[WebService(Namespace = "http://tempuri.org/")] 

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 

[ServiceContract(Namespace="http://tempuri.org")] 

public class WebService : System.Web.Services.WebService 

{    

   

    [WebMethod] 

    [OperationContract] 

    public string Hola(string nombre) 

    { 

        return string.Format("Hola, {0}",nombre); 

    } 

} 

En nuestro fichero de configuracion deberemos introducir la sección de WCF. 

 
  <system.serviceModel>

    <services>

      <service name="WebService"  behaviorConfiguration="returnFaults">

        <endpoint binding="basicHttpBinding" contract="WebService"/>

        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

      </service>

    </services>

    <behaviors>

      <serviceBehaviors>

        <behavior name="returnFaults">

          <serviceDebug includeExceptionDetailInFaults="true"/>

          <serviceMetadata httpGetEnabled="true"/>

        </behavior>

      </serviceBehaviors>

    </behaviors>

  </system.serviceModel>

</configuration>

Ahora debemos remapear el BuilProvider de asmx para que use System.ServiceModel. 

<system.web>

  <compilation debug="true">

    <buildProviders>

      <remove extension=".asmx"/>

      <add extension=".asmx" type="System.ServiceModel.Activation.ServiceBuildProvider,
            System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

    </buildProviders>

  </compilation>

</system.web>

 Y ya lo tenemos funcionando con WCF

Un comentario sobre “Migrar de Servicios Web a WCF”

  1. En tu artículo tu deberá hablar de la diferencia de serialization..
    WCF utilice par default [DataContractSerializer], ASMX utilice XmlSerializer.
    WCF tiene compatibilidad con
    [XmlSerializer] et [Serializable].
    De esta forma la migración es más fácil, la entidad metiers(Business entities) no cambian.
    Incluso con WCF puede personal tono “SOAP message” mediante los messageContract
    [MessageContract] -> customize you SOAP Message (Header and Body)
    [DataContract] -> for datas (Body of Soap Message)

    Si quiere intercambiar con mi : federico.poggio@gmail.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *