Contrato de Datos WCFy Consumo MVC
CONTRATO DE DATOS Y CONSUMO MVC
DEFINICIÓN: Un contrato de datos es un acuerdo formal entre un servicio y un cliente que abstractamente describe los datos que se van a intercambiar para comunicarse, el cliente y el servicio no tienen que compartir los mismos tipos, solo los mismos contratos de datos. Un contrato de datos define con precisión, para cada parámetro o tipo de valor devuelto, qué datos se serializan se convierten en XML para su intercambio.
Puntos Importantes
- (WCF) están diseñadas para interoperar con el número más amplio posible de aplicaciones cliente tanto en plataformas Microsoft y como en plataformas no Microsoft
- Marcar los atributos con [ServiceContract], [OperationContract] ,[DataContract] y [DataMember] para crear un contrato de datos, que es la parte del contrato de servicios que describe los datos que intercambian sus operaciones de servicio y no se marca con estos atributos no serán visibles.
- Service contract: Define las operaciones que el servicio tendrá disponibles para que los clientes puedan invocar mediante una petición request, y a cada uno de sus métodos acompañado del atributo [OperationContract].
- OperationContract: Aplique OperationContract a un método para indicar que el método implementa una operación de servicio como parte de un contrato de servicio
- Service contract: Define las operaciones que el servicio tendrá disponibles para que los clientes puedan invocar mediante una petición request, y a cada uno de sus métodos acompañado del atributo [OperationContract].
- Data Contract: Define la estructura de los datos que serán incluidos en el intercambio de los mensajes que van y vienen del servicio al cliente y viceversa.
- Data Member: permite definir los tipos de datos y su visivilidad.
Desarrollo
Para poder entender mejor el contrato de datos de WCF , realizaremos una pequeña práctica donde se apreciara el lugar de los atributos a la hora de declararlos y su importancia de cada uno de ellos.
Crearemos un Proyecto en visual studio.

Elegiremos el siguiente Proyecto dándole un nombre AplicacionWebServicePOO
Una vez creado el Proyecto wcf =AplicacionWebServicePOO se crearan por defecto IService1 y Service1 también los atributos de los cuales hemos hablado anteriormente y los cuales forman parte del contrato de datos,para realizar nuestro proyecto de práctica y que se vea los ejemplos más claros, borraremos ciertas partes y la realizaremos una práctica con un código básico.
Interfaz: Las interfaces son los puntos de contacto que establecen un contrato que permite el intercambio de información
Quedando de esta manera :
Empezaremos a escribir código e IService1 lo dejaremos de esta manera borrando lo que ha creado por defecto el proyecto en este caso vemos Service1 ,IService1 creados por defecto
Service1 borraremos lo que se ha creado por defecto y escribiremos el siguiente código donde se esta heredando de IService1 los métodos que tenemos acceso a ellos en este caso es la lista personas y donde nosotros creamos las siguientes personas con sus respectivos datos de cada persona.

en IService que es la interfaz declararemos el contrato con [ServiceContract],[operationContract],[DataContract],[DataMember] .
en esta parte lo que haremos es declarar las principales características del contrato a las que podremos optar en este caso podremos accceder a la clase persona y sus propiedades como se ve en la imagen.
Para ejecutar y ver los resultados añadiremos la referencia al proyecto aplicationWebServicePOO
Y nos aparecera la siguiente ventana simulando un cliente le damos al boton discover y nos aparecera los servicios antes declarados en donde nos reconocerá los métodos declarados en el contrato y daremos OK
Y para ver el resultado y ver que es lo que estamos realizando hasta el momento ponemos como proyecto principal el wfc y le damos ejecutar y saldrá la siguiente ventana le damos a invoke y veremos que esta transportando datos
copiaremo la url para utilizarla más adelante

Estos datos serán visibles siempre y cuando los atributos estén declarados si no de otra manera no serán visibles.
Consumir los datos desde mvc creamos otro proyecto dentro de la misma solución
Al mvc le daremos un nombre que se llamara
Webapplication1
creando el mvc
y posteriormente recuperaremos los servicios y añadiremos la referencia
Copiaremos la url del wcf que anteriormente se ejecuto y hacemos click en GO y añadiremos la referencia al Webapplication1
donde podremos ver los servicios y usarlos de acuerdo a nuestra necesidad y tenemos los métodos declarados anteriormente y que ahora estamos consumiendo mediante mvc.
nos crearemos en controller un controlador llamado PersonaControlller donde instanciaremos los servicios y devolveremos a la vista la Persona
Por otro lado en el PersonaController añadiremos el siguiente codigo y que basicamente lo que se hace es instanciar los servicios que estamos consumiendo de WCF
también añadiremos una vista a la Persona quedando de esta manera
elegimos List para que nos genere automáticamente la vista
como podemos ver aqui nos genero autmaticamente la vista con los datos que recuperamos de wcf
para ejecutar y ver el resultado le damos solución botón derecho y lo hacemos como principal y
también pondremos como principal el proyecto mvc en la vista Index
después ejecutar lo cual nos llevara a ver de una manera gráfica la lista que creamos en el wcf y que es consumida por mvc
Descripción: Contrato de Datos WCF y Consumo MVC
Autor: Luis Alejandro Ayllon Herrera
Curso: Microsoft MCSD Web Applications + SharePoint Apps
Centro: Tajamar
Año académico: 2016-2017


















