introduction to wcf solutions
TRANSCRIPT
![Page 1: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/1.jpg)
Introduction to WCF Solutions
With Microsoft Visual Studio 2010
![Page 2: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/2.jpg)
AgendaService Oriented ArchitectureIntroducción al desarrollo con Microsoft
Windows Communication FoundationHostear servicios WCFSeguridadHoL
![Page 3: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/3.jpg)
Service Oriented Architecture (SOA)¿Qué es SOA?Beneficios de SOAEscenarios y estándaresIntroducción a WCF
![Page 4: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/4.jpg)
¿Qué es SOA?SOA es un estilo de arquitectura diseñada
para construir sistemas distribuidos
Agilidad Productividad
ReutilzarReducir Costes
Desafíos en aplicaciones de negocios
![Page 5: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/5.jpg)
¿Qué es un servicio?
Un servicio expone funcionalidad aceptando
datos (peticiones) y algunas veces devolviendo
datos (respuestas)
![Page 6: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/6.jpg)
Pilares de SOALos servicios manejan datos, no objetosLos servicios son autónomosLos servicios tienen límites específicosLos servicios exponen contratos y políticas
![Page 7: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/7.jpg)
¿Cómo se accede a un servicio?
A través de los bordes
Múltiples bordes
Dirección
WCF Endpoint
s
![Page 8: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/8.jpg)
Beneficios de SOAMejora de la Productividad
Servicios Autónomo
sInteroperabilidadTesteo
![Page 9: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/9.jpg)
Beneficios de SOAAgilidad
Contrato MovilidadCambios
dinámicos del cliente
Instancias del servicio ajustadas a
la carga
Integración avanzada
![Page 10: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/10.jpg)
Beneficios de SOAReduce Costes IT
Reutilizar módulos
Externalizar
capacidades
Simplicidad
Múltiples consumidor
es
![Page 11: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/11.jpg)
Beneficios de SOATecnologías de comunicación diversas
Diferencias tecnológicas entre bordes
Políticas de seguridad
Patrones mensajería
Load-balanced
WCF endpoints
![Page 12: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/12.jpg)
Beneficios de SOAAlta escalabilidad
Múltiples instancias
Fire and forget
Uso de diferentes topologías
Messages Load-
balanced
Messages persisted
![Page 13: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/13.jpg)
Beneficios de SOAInteroperabilidad entre sistemas
Servicios tratan con
datos
El servicio desconoce
la tecnología del cliente
Exponen datos en un
formato concreto
Los mensajes se
pueden transformar
WS -* standards
![Page 14: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/14.jpg)
Beneficios de SOAFiabilidad del servicio
BackupPolíticas de reintento
Persistencia en los
mensajes
Monitorización y
administración runtime
![Page 15: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/15.jpg)
Beneficios de SOASeguridad integrada
Protección de datos
Capas de seguridad
Servicios de intercambio
de datos
Autenticación y
autorización
Implementación de buenas prácticas en seguridad
![Page 16: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/16.jpg)
Escenarios y EstándaresAplicaciones expuestas como Servicios WebAplicaciones de Intranet como ServiciosAplicaciones 2.0 en el NavegadorLos servicios pueden usar SOAPLos servicios pueden usar RESTWS-* Standards Integrate Web Services
![Page 17: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/17.jpg)
Aplicaciones expuestas como Servicios Web
![Page 18: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/18.jpg)
Aplicaciones de Intranet como servicios
![Page 19: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/19.jpg)
Aplicaciones 2.0 en el Navegador
![Page 20: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/20.jpg)
SOAPEstándar basado en XMLTransporta mensajes para Web Services, que
son creados de acuerdo al contrato de servicio<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none"> http://127.0.0.1:8080/CalcService </To> <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none"> Add </Action> </s:Header> <s:Body> <Add xmlns="http://www.fabrikam.com"> <a>2</a> <b>3</b> </Add> </s:Body></s:Envelope>
![Page 21: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/21.jpg)
RESTArquitectura de estilos para serviciosProtocolo HTTPEl contrato está basado en verbos HTTP
GETPOSTPUTDELETE
Datos escritos en la URIInteroperabilidad y versionadoDiferentes estándares de codificación
![Page 22: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/22.jpg)
WS-* Standards Integrate Web ServicesWS-* es un grupo de estándares basados en
XML relevantes para servicios WebWS-* definen como la seguridad, transacción,
direccionamiento y fiabilidad de la información es transmitida
WS-* forma la base de la interoperabilidad de los servicios
![Page 23: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/23.jpg)
Introducción a WCF¿Qué es WCF?Objetivos de WCF para la implementación de
serviciosEl modelo de comunicación WCF
![Page 24: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/24.jpg)
¿Qué es un WCF?Framework unificado para la construcción de
aplicaciones orientadas a serviciosFue introducido en el framework 3.0 y
extendido en el 3.5 y 4.0Es la unión de otras tecnologías distribuidas
de Microsoft
![Page 25: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/25.jpg)
Objetivos WCF para la implementación de serviciosLa implementación del servicio debe ser
simple pero extensible para llegar a una amplia variedad de necesidades
Una sola API debe ser utilizada para todos los protocolos de comunicación
Los servicios deben ser interoperablesLos servicios deben usar estándares WS-*
siempre que sea aplicablesLos servicios pueden soportar SOAP, REST y
otras arquitecturas de comunicación
![Page 26: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/26.jpg)
El modelo de comunicación WCF
![Page 27: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/27.jpg)
Introducción al desarrollo con Microsoft Windows Communication FoundationContrato e Implementación de ServiciosAlbergar Servicios WCFWCF BehaviorsConsumir Servicios WCF
![Page 28: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/28.jpg)
Contrato e Implementación de ServiciosCiclo de vida del desarrollo de un servicioService Contracts WCF y Data ContractsDefinir Service Contracts y Data ContractsConsideraciones en la implementación de un
servicioImplementar un Servicio WCF
![Page 29: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/29.jpg)
Ciclo de vida del desarrollo de un servicioContrato: Decidir que datos y operaciones
van a ser expuestosImplementación: Crear una clase CLR que
implemente el contratoHosting: Crear los endpoints y escuchar las
peticionesTesting: Asegurarse que el servicio se
comporta correctamenteConsumo: Crear un cliente
![Page 30: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/30.jpg)
Service Contracts WCF y Data ContractsQue va a ser expuesto es el primer paso para
cualquier sistema distribuidoService Contract: OperacionesData Contract: Representación de datos
Los Service Contracts se expresan como interfaces de C#
Los Data Contracts se expresan como clases de C#
Los atributos se usan para convertir entidades C# en declaraciones WCF
![Page 31: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/31.jpg)
Definir Service Contracts y Data Contracts
![Page 32: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/32.jpg)
Consideraciones en la implementación de un servicioUn servicio WCF es una implementación del
interfaz del service contractUbicar el contrato y la implementación en
ensamblados diferentesLa implementación tiene que considerar la
instancia WCF y el modelo de concurrencia
![Page 33: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/33.jpg)
Implementar un Servicio WCFEl Servicio ComplexCalc implementa el
contrato de servicio IComplexCalc
![Page 34: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/34.jpg)
Albergar Servicios WCF¿Qué es un endpoint?Address, Binding, ContractBindingDefinir un endpointCrear un Service Host
![Page 35: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/35.jpg)
¿Qué es un endpoint?Es una combinación de
AddressBindingContract
El host da vida al servicioUne la infraestructura WCF al servicioCrea endpoints y escucha las peticiones
![Page 36: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/36.jpg)
¿Qué es un endpoint?
Cliente
Servicio
Endpoint Endpoint
Endpoint
![Page 37: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/37.jpg)
BindingEncapsula toda la tecnología relacionada con
la comunicación y el control de los mensajesDefine la tecnología de transporte (HTTP,
TCP,..)Define la codificación del mensajeDefine los protocolos y los estándares
(seguridad, etc…)Define las propiedades de los mensajes
(timeouts, etc…)
![Page 38: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/38.jpg)
Pipeline del mensaje
![Page 39: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/39.jpg)
Elementos del binding
![Page 40: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/40.jpg)
Bindings predefinidos y personalizablesEs posible definir binding personalizados con
una combinación propia de elementos bindingExisten muchos bindings predefinidos
diseñados para escenarios comunesLos bindings predefinidos son más sencillos
de usarNormalmente no hay necesidad de definir
binding propios
![Page 41: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/41.jpg)
Configurar bindings en el web.config
![Page 42: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/42.jpg)
Configurar bindings por código
![Page 43: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/43.jpg)
Crear Bindings personalizados
![Page 44: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/44.jpg)
Definir un endpointPara definir un endpoint debemos definir la
dirección, el binding y el contrato
![Page 45: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/45.jpg)
Crear un Service HostUn Service Host puede ser cualquier proceso
WindowsLa información sobre los servicios albergados
se escribe en el código debajo de <system.serviceModel>
La clase base para todos los WCF Service Hosts es ServiceHostBase
Los servicios que se ejecutan en el IIS, WAS o AppFabric se abren automáticamente.
Otros hosts necesitan la llamada al método Open
![Page 46: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/46.jpg)
WCF BehaviorsDispatchers y el Channel StackUso de Behaviors para configurar los
Dispatchers WCFDefinir Behaviors en el archivo de
ConfiguraciónDefinir Behaviors por código
![Page 47: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/47.jpg)
Dispatchers y el Channel StackEl channel stack necesita ser extendido para
permitir configuraciones adicionalesUna vez superado el pipeline del canal los
dispatchers procesarán el mensajeLos dispatchers son usados para ajustar el
comportamiento del servicio en aspectos como:InstanciamientoConcurrenciaVelocidad de ejecuciónSeguridadSerialización…
![Page 48: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/48.jpg)
Uso de Behaviors para configurar los Dispatchers WCFEl mecanismo para configurar los dispatchers
se denomina behaviorsExisten una amplia variedad de behaviors
para WCFAlgunos pueden ser adjuntados al código
mediante el uso de atributos, mientras que otros pueden ser escritos en el archivo de cofiguración
Los behaviors son extensibles en WCF
![Page 49: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/49.jpg)
Definir Behaviors en el archivo de Configuración
![Page 50: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/50.jpg)
Definir Behaviors por códigoAlgunos behaviors son orientados al
desarrollador, mientras que otros se orientan hacia el administrador:Desarrollador
Instanciamiento Concurrencia Serialización
Administrador Velocidad de ejecución Credenciales de seguridad Exponer metadatos
![Page 51: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/51.jpg)
Definir Behaviors por códigoLos behaviors orientados al desarrollador se
escriben en el código gracias al uso de atributos
![Page 52: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/52.jpg)
Consumir Servicios WCFEl patrón proxyAñadir una Service ReferenceDemo: Crear un Cliente WCFConstruir un proxy usando un Channel
FactoryUso correcto de Channel FactoriesDemo: Uso de Channel Factory
![Page 53: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/53.jpg)
El patrón proxyUn proxy refleja una entidad fuera de la
aplicaciónEl proxy traduce las llamadas a los métodos a
mensajes de intercambio
![Page 54: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/54.jpg)
Añadir una Service Reference
![Page 55: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/55.jpg)
Demo: Crear un cliente WCF
![Page 56: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/56.jpg)
Construir un proxy usando un Channel FactoryUn proxy a un servicio WCF puede ser
construido sin Visual Studio 2010 y con automatización de generación de códigoCrear un ChannelFactory<T>Crear un canal
![Page 57: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/57.jpg)
Uso correcto de Channel FactoriesCuando se usa la factoría de canal se es
responsable para:Establecer la configuración del clienteImportar los contratos de servicio y datosEliminación del proxy correctamente
![Page 58: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/58.jpg)
Demo: uso del Channel Factory
![Page 59: Introduction to wcf solutions](https://reader036.vdocuments.site/reader036/viewer/2022062312/5560b674d8b42af43b8b4a22/html5/thumbnails/59.jpg)