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]Una clase que implementa el contrato de un servicio se denomina Service Type
public interface IMyContract { ...}
Operation Contracts
Define operaciones individuales que un servicio soporta y mapea la operación en WSDL.
[OperationContract]Estas pueden ser Sincrónicas y Ansincrónicas. [OperationContract(AsyncPattenr=true)]
void MyOperation();
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")]Con atributo IsRequired podemos tener valores opcionales en las nuevas versiones de la estructura.
public class Person{
[DataMember]
public string Name;
[DataMember(IsRequired=true)] // Por defecto es false
public string Age;
}
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]Normalmente los MessageBody serán DataContract
public class MyRequest {
[MessageHeader] public string field1;
[MessageBody] public MyClass field2;
}
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.
0 comentarios:
Publicar un comentario