WCF Contracts ~ Bitácora del Desarrollador

sábado, 2 de diciembre de 2006

WCF Contracts

Una de las ideas fundamentales en Windows Communication Fundation son los contratos (son parte del ABC - Address, Binding, Contract).

Los contratos en WCF definen el comportamiento de los servicios. Hay cinco tipos de contratos;

Service Contracts
Define las operaciones que el servicio soporta y mapea las operaciones en WSDL.

[ServiceContract]
public interface IMyContract { ...}
Una clase que implementa el contrato de un servicio se denomina Service Type


Operation Contracts
Define operaciones individuales que un servicio soporta y mapea la operación en WSDL.
[OperationContract]
void MyOperation();

Estas pueden ser Sincrónicas y Ansincrónicas. [OperationContract(AsyncPattenr=true)]


Data Contracts
Define la representación serializada de la estructura, normalmente utilizada para tipos complejos. Para ello utilizamos los Tags DataContract y DataMember

[DataContract(Name="PersonType")]
public class Person{
[DataMember]
public string Name;

[DataMember(IsRequired=true)] // Por defecto es false
public string Age;
}

Con atributo IsRequired podemos tener valores opcionales en las nuevas versiones de la estructura.


Message Contracts
Los Message Contracts describen todo el formato de los mensajes SOAP. Generan schema para tipos complejos.
También permiten controlar los Head y Body de los mensajes SOAP de forma explicita.

[MessageContract]
public class MyRequest {
[MessageHeader] public string field1;
[MessageBody] public MyClass field2;
}

Normalmente los MessageBody serán DataContract


Fault Contracts
Los servicios WCF reportan los errores usando Fault objects. El tipo especificado en el Fault Contract no tiene por que ser del tipo Exception, pero normalmente lo será.
Para generar un Fault lanzamos un FaultException.

[OperationContract]
[FaultContract(typeof(System.Exception))]
void MyMethod();

Está disponible el curso de WCF en Microsoft Learling de forma gratuita.

Posts Relacionados por Secciones



0 comentarios: