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
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