Servicio - Microsoft

Anuncio
Sistemas Conectados con
Windows Communication Foundation
(Nombre Beta – Indigo)
César de la Torre
Arquitecto de Software
[Microsoft MVP – Connected Systems]
ctorre@renacimiento.com
Renacimiento
Una compañía
Objetivos
¿Qué cosas tienen que quedarme claras después
de esta sesión?
Una buena idea de lo que significa la
‘Orientación a Servicios’ / SOA.
Interoperabilidad y especificaciones WS-*
Nueva tecnología Microsoft para sistemas
conectados:
Visión global de todas las posibilidades que
ofrece WCF(Indigo)
Agenda
Evolución sistemas conectados Microsoft
Introducción a SOA (Orientación a Servicios)
¿Suficientes los Web-Services básicos?
Introducción a especificaciones WS-*
Introducción a WCF(Indigo)
Arquitectura de WCF
Desacoplamiento e Independencia de WCF:
Protocolos con WCF (http, TCP, etc.)
Hosting
Formato/Serialización
Agenda
Seguridad con WCF
Seguridad basada en los mensajes
Autenticación
Cifrado
Transacciones distribuidas ‘multi-servicio’
con WCF
Extensibilidad ‘custom’ con WCF
Behaviors
Channels
Evolución sistemas
Conectados Microsoft
Historia de ‘Sistemas Conectados’
con tecnología Microsoft
WCF(Indigo)
System.Messaging
WSE
WS (ASMX)
Enterprise
Services
COM+
COM DCOM
Sockets
Remoting
2006
2005
(.NET 2.0)
RDS
2003
2001
RPC
1998
(.NET 3.0)
(.NET 1.1)
(.NET 1.0)
1997
DDE
1994
1992
Tiempo
Tecnología .NET
Arquitecturas distribuidas
Ahora
Los usuarios no quieren cerrarse a una
plataforma
Es necesaria una arquitectura
independiente…
De la plataforma
Del lenguaje
De los objetos
De los mecanismos de llamada
Bienvenido a SOA, WS, WCF…
Orientación a Servicios
Orientación a Servicios
(SOA)
Service-Oriented Architecture
(SOA)
La Integración es difícil
Sistemas heterogéneos
Múltiples soluciones
CRM
Se necesita un planteamiento estándar
Arquitectura orientada a servicios
Basada en un “bus de mensajería”
Estándares WS-*
Finanzas
RRHH
Ventas
Servicios SOA
Servicio A
Servicio B
A
B
Servicio C
C
Procesos complejos que
intercambian datos
Funcionalidad de negocio
Interfaces basada en mensajes
Cambio a SOA
Desde
Hacia
Orientado a Funciones
Construido ‘para que
dure’
Ciclos de Desarrollo
prolongados
Fuertemente acoplados
Orientación a Objetos
Implementación
Servidor conocida
Orientado a Coordinación
Construido ‘para que
cambie’
Construcción y despliegue
incremental
Debilmente acoplados
Orientación a mensajes
(externamente)
Abstracción (Servicios
Caja-Negra)
Los 4 principios de SOA
(‘The 4 Tenets of SOA’)
Las fronteras de los Servicios deben
ser explícitas
Los Servicios deben ser Autónomos
Los Servicios deben compartir
…
en
lugar
de
‘
Servicios
Web
’
Esquemas y Contratos, no Clases y
Tipos
La Compatibilidad se basa en Políticas
Servicios
¿Necesitamos más que
Servicios-Web básicos?
¿Son suficientes los WS Básicos?
Los WS básicos (XSD, SOAP, WSDL,
UDDI) consiguen una comunicación
básica
Proporcionan intercambio básico de
mensajes XML
Interconexión de sistemas heterogéneos
La compartición de esquemas permite
mayores abstracciones
PERO, la mayoría de las aplicaciones
distribuidas necesitan MAS…
Temas Pendientes Abiertos
Los Sevicios-Web tienen muchas
necesidades comunes
Modelo de seguridad ‘orientado a
mensajes’
Mensajería estable y confiable
Soporte de Transacciones (entre WS)
Mecanismos de Direccionamiento y Ruteo
Metadatos para ‘Políticas’ de WS
Soporte para datos binarios
Especificaciones
WS-*
WS-*
SI QUEREMOS
‘INTEROPERABILIDAD’
con otras plataformas
Son las ESPECIFICACIONES ESTANDARD
que están siendo definidas por múltiples
fabricantes
- Microsoft, IBM, HP, Fujitsu, BEA,
VeriSign, SUN, Oracle, CA, Nokia,
CommerceOne, Documentum, TIBCO, etc.
Especificaciones disponibles en:
http://www.oasis-open.org
WS-* : Pila de Protocolos
Seguridad
Gestión
Confiabilidad
Procesos
de Negocio
Transacciones
…
Metadatos
Aplicaciones
Conectadas
Mensajería
Aplicaciones e
Inraestructura
de Aplicaciones
Plataforma
Base
XML
HTTP
TCP
SMTP
…
Transportes
Implementaciones de WS-*
Otros Fabricantes (IBM, BEA, etc.)
Microsoft
WSE (1.0, 2.0, 3.0)
(Web Services Enhancements)
WCF (Indigo)
(Windows Communications Foundation)
Evolución de la implementación de WS-*
WS-Basic
WSE 2.0
WSE 3.0
WCF
Devices
Devices
Profile
Profile
Infraestructura
Y Perfiles
Metadatos
WS-Secure
WS-Secure
Conversation
Conversation
WS-Business
Activity
Aseguramientos
WS-Metadata
Exchange
WS-Trust
WS-Trust
WS-Atomic
WS-Atomic
Transaction
Transaction
UDDI
WS-Coordination
WS-Coordination
WS-Policy
WS-Management
WS-Federation WS-Management
WS-Federation
(FW 2.0)
WS-Security
WS-Security
WS-Reliable
WS-Reliable
Messaging
Messaging
Mensajería
SOAP
SOAP 1.2
1.1
WS-Addressing
WS-Addressing
MTOM
MTOM
XML 1.0
XML Schema
MSMQ / TCP
XML Infoset
XML
Namespaces
MIME
WSDL 1.1
SOAP / HTTP
Fundación
Windows Communication
Foundation
Introducción a WCF
Nueva Generación Tecnologías Base de Windows
Windows Presentation Windows Communication
Foundation
Foundation
Revolución Interfaz
Gráfico Aplic.
Basado en Vectores
Independiente de
resolución
Interfaces 3D
Servicios seguros
Aplic. Distribuidas
Transaccionales y
Confiables
Interoperabilidad con
protocolos WS-*
Cualquier Transporte
Cualquier Host
Windows Workflow
Foundation
Motor base para
Workflows
Workflows
‘programa’ y
‘humano’
Aplicaciones
Compuestas
PRESENTATION
Presentation Framework
System.Windows (3.0)
DATA
ASP.NET
ADO.NET
System.Web (2.0)
Compilation
Configuration
Handlers
Hosting
Mail
Management
Security
UI (2.0)
Util
System.Data
Common
Odbc
OleDb
OracleClient
Sql
SqlClient
Annotations
Automation
Controls
Data
Documents
Ink
Interop
Navigation
Resources
Serialization
Shapes
Printing Subsystem
Threading
System.Printing (3.0)
System.Windows.Media (3.0)
GDI+
3D
System.Drawing
Animation
Design
Imagine
Drawing2D
Windows Forms
Printing
System.Windows.Forms (2.0)
Design
Layout
VisualStyles
COMMUNICATION
Language Integrated Query
System.Query (F)
System.Data.DLinq (F)
System.Xml.XLinq (F)
System.Expressions (F)
Windows File System
System.Storage (F)
Windows Communications Foundation
System.ServiceModel (3.0)
Channels
Configuration
Diagnostics
Integration
System.ServiceModel.Security(3.0)
Core
ASP.NET Data Management Audio
Calendar
System.Web
Contacts
Caching
Documents
Profile
Image
SessionState
Media
Messages
XML Data
Rules
System.Xml
Sync
Schema
Video
Serialization
XPath
XPS Documents
Xsl
System.Windows.Xps (3.0)
System.IO.Packaging (3.0)
Protocols
Tokens
Windows Workflow Foundation
System.Workflow (3.0)
System.Workflow.Activities (3.0)
Rules
System.Workflow.ComponentModel (3.0)
Complier
Desinger
Serializaztion
System.Workflow.Runtime (3.0)
Hosting
Messaging
Network Class Library
System.Net
Cache
Mail (2.0)
Network Information (2.0)
Security (2.0)
Sockets
ASMX Web Services
System.Web.Services
Identity Management
Microsoft.InfoCards (3.0)
MSMQ
.NET Remoting
System.Messaging
System.Runtime.Remoting
Directory Services
.NET Remoting
System.DirectoryServices
System.Runtime.Remoting
Speech Integration
System.Speech (3.0)
Recognition
Synthesis
FUNDAMENTALS
BASE CLASS LIBRARIES
System
System.Text
System.CodeDom
System.ServiceProcess
System.Resrouces
System.Text
AccessControl
Managed Add-In
Framework
(2.0)
System.Addins (F)
Cryptography (2.0)
Contact
Permissions
Microsoft.Build (2.0)
System.Configuration Policy
Principal (2.0)
System.EnterpriseServices
System.Transactions (2.0)
System.ComponentModel System.Threading
System.Timers
System.Diagonostics
System.IO (2.0)
System.Text
Generic (2.0)
System.Reflection
Email
System.Runtime
CompilerServices
ConstrainedExecution(2.0)
InteropServices
Hosting
Serialization
Versioning
Claves
(2.0) (3.0) - New
“ClickOnce” Deployment
System.Deployoment (2.0)
(2.0) - Substantially Improved
- Windows Presentation Foundation
(formerly codenamed “Avalon”)
- Windows Communication Foundation
(formerly codenamed “Indigo”)
WINDOWS VISTA
- Windows Workflow Foundation
¿Qué es WCF? (Indigo)
“El modelo unificado de programación para aplicaciones
distribuidas/SOA sobre plataforma Windows”
Unificación
Desarrollo
SOA
Interoperabilidad
Unifica las tecnologías distribuidas de
Microsoft
Funcionalidad Desacoplada/Componentizada
Para maquina-local, intranet, e Internet
Desarrollo Orientado a Servicios
Soporta los ‘4 tenets’ de SOA
Interoperabilidad con WS-* para otras
plataformas (Java, etc.)
Interoperabilidad con tecnologías actuales de
Microsoft
Y también…
Para implementar aplicaciones
distribuidas ‘No interoperables’.
No todas las Apps tienen por qué ser
interoperables con otras plataformas
(Java, etc.).
Hay muchas Aplicaciones distribuidas
que se requiere simplemente máximo
rendimiento y posibilidades.
Serán Apps. Compat. exclusivamente .NET
TCP, binario, etc.
Unión de los stacks actuales
Programación
Orientada a Protocolos
WS-*
Mensajes
Extensibilidad
Programación Programación
Orientada a
basada en
Servicios
atributos
Unificación de tecnologías
WS
ASMX
.NET
Remoting
(1.0, 2.0)
Servicios Básicos
Interoperables
Comunicación
.NET – .NET
Transactciones
Distribuidas, etc.
Especificaciones WS-*
Colas de Mensajes
Enterprise
Services
(COM+)
WSE
MSMQ
(1.0, 2.0, 3.0)
X
WCF
(Indigo)
X
X
X
X
X
X
X
X
X
WCF - Características
Desacoplamiento del Servicio, su
Comportamiento, los parámetros de la
Comunicación y el Alojamiento
Características principales
‘Seguro por defecto’
El binding por defecto es seguro
Transaccional y confiable
Transportes: HTTP, TCP, Named-Pipes &
MSMQ
WCF - Características
Seguridad End To End
Mensajería SOAP confiable End To End
Confidencialidad, Integridad,
Autenticación, Autorización
X509, User/Pwd, Kerberos, SAML,
CardSpace(InfoCard)
Orden y entrega
Interoperabilidad
WS, WSE, Remoting, .NET Messaging,
COM+
1.0
Visión de ejecución de un Servicio WCF
Y su consumo por un Cliente
Arquitectura de WCF
Arquitectura
Servicio
Comportamiento
del Servicio
Parámetros de la
Comunicación
Alojamiento
Aplicación
Service Model Layer
Messaging Layer
Hosting Environment
Service & Data
Contracts
Behaviors
(atributos)
Bindings
(configuración)
Hosting
Environments
Arquitectura Configurable
Aplicación
Service & Data Contracts
Service Model
…
Error
Behavior
Metadata
Behavior
Instance
Behavior
Throttling
Behavior
Transaction
Behavior
Type Integ.
Behavior
Concurrency
Behaviors (atributos)
Messaging
Bindings (config)
…
Hosting
Environments
Secure
Channel
…
WAS
HTTP
Channel
ASP.NET
Avalon
Behavior
Text/XML
Encoder
Reliable
Channel
TCP
Channel
WinForm
Queue
Channel
NT Service
Binary
Encoder
COM+
Definición de un Servicio
Service Contract
Define el contrato del servicio
expuesto
Interfaces .NET con Atributo
[ServiceContract]
Métodos del interfaz marcados con
[OperationContract]
Ejemplo: Service Contract
[ServiceContract]
[XmlSerializerFormat]
public interface IContratoBrokerBolsa
{
[OperationContract(IsOneWay=true)]
string ComprarAcciones(string valor, int cantidad);
}
Definición de Contrato y Servicio
[ServiceContract]
public interface IContratoSaludo
{
[OperationContract]
string Saludar(string nombre);
}
public class ServicioSaludo : IContratoSaludo
{
public string Saludar(string nombre)
{
return “Hola, ” + nombre;
}
}
Data Contracts
Definen tipos de datos intercambiados
Entidades con atributo DataContract
Miembros con atributo DataMember
Namespaces y nombres
Versionado
Contratos en WCF
Clase OOP
public class Pedido
{
public int iDPedido;
public int codProducto;
public int precio;
public string info;
public void Procesar();
public ObtenerInfo();
}
Data Contract
[DataContract]
public class Pedido
{
[DataMember]
public int iDPedido;
[DataMember]
public int codProducto;
[DataMember]
public int precio;
[DataMember]
public string info;
}
[DataContract]
public class Consulta
{
[DataMember]
public int iDPedido;
}
[DataContract]
public class Info
{
[DataMember]
public string info;
}
Service Contract
[ServiceContract]
public interface
IServicioPedido
{
[OperationContract]
void Procesar(Pedido p);
[OperationContract]
Info ObtenerInfo(Consuta c);
}
1.1
Definición de CONTRATO de Servicio
de un Servicio-WCF
Implementación del Servicio
La implementación es simplemente
una librería de clases (.DLL) con clases
estándar que implementan el interfaz
del contrato.
Se pueden ‘marcar’ con atributos de
‘Behaviors’.
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class ServicioSaludo : IContratoSaludo
{
public string Saludar(string nombre)
{
return “Hola, ” + nombre;
}
}
1.2
Implementación de Clase del Servicio WCF
Exponiendo un Servicio
- (Hosting y EndPoints)
Tipos de Alojamiento (Hosting)
Auto-Alojamiento
App.Consola
Servicio Windows
Alojamiento
WAS (Windows Activation Service)
Solo en Windows Vista / Longhorn Server
IIS
IIS (XP, Win2003)
IIS 7.0 (WinVista, Longhorn)
Utiliza WAS ‘por debajo’
Alojamiento del Servicio
Auto-Alojamiento (App.Consola / Servicio Windows)
class HostSaludo
{
static void Main(string[] args)
{
ServiceHost host =
new ServiceHost(typeof(ServicioSaludo));
host.Open();
// En espera
Console.ReadLine();
host.Close();
}
}
Alojamiento WAS/IIS
http://localhost/ServicioSaludo/ServicioSaludo.svc
<%@ Service Language=“C#” Class=“ServicioSaludo” %>
Clientes y Servicios
Cliente
Servicio
Mensaje
Endpoints
Cliente
Servicio
Endpoint
Mensaje
Endpoint
Endpoint
Endpoint
ABC: Address, Binding,
Contract
Cliente
Servicio
Mensaje
C
B
A
A
B
C
A
B
C
A
B
C
Address
Binding
Contract
¿Donde?
¿Como?
¿Qué?
Endpoint
Creación de Endpoints
Cliente
Servicio
Mensaje
C
B
A
Channel Cliente
A
B
C
A
B
C
A
B
C
Host
Endpoints
Punto que expone el servicio
ABC de un End-Point. Se define por
Address(Dirección): URI o Network
Address
Binding: Define
Protocolo: TCP, HTTP, Named-Pipes, MSMQ
Codificación: Texto o Binario
Seguridad: SSL, SOAP security, …
Referencia al servicio a exponer
Contract: Interfaz ‘Contrato del Servicio’
Binding
Define los parámetros de la
comunicación
Definidos en .config del proceso HOST
(propio, IIS, etc.)
Transporte (TCP, HTTP, Named-Pipes,
MSMQ)
Protocolo de Flujo (one-way, request-reply,
duplex…)
Confiabilidad (Sesión, transacciones,…)
Protocolos de Seguridad (Autenticación,
autorización, cifrado, firma, …)
Codificación (Texto o Binario)
Configuracion del ‘Servicio’
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service type=“ServicioSaludo"
<endpoint address=“http://localhost/ServicioSaludo"
binding=“basicHttpBinding"
contract="IContratoSaludo" />
</service>
</services>
</system.serviceModel>
</configuration>
1.3
Hosting de Servicio-WCF en
aplicación de Consola
(Definición de Bindings, etc.)
Consumiendo un
Servicio
Implementando el Cliente
Generar el proxy
Utilidad svcutil.exe
Con ‘Add Service Reference’ de VS.Orcas
Definir el endpoint (bindings)
Fichero de configuración
EndPoints Cliente
<system.serviceModel>
<client>
<endpoint Name=“EndpointSaludo_basicHttpBinding"
address="http://localhost/ServicioSaludo"
binding="basicHttpBinding"
contract="IContratoSaludo" />
</client>
</system.serviceModel>
1.4
Consumo de Servicio-WCF desde
aplicación Cliente
Implementando otros
tipos de Hosting
Entornos de Alojamiento
(Hosting)
Tipo
IIS 5.0
IIS 6.0
Escenario
Beneficios
Limitaciones
Integrado en el
Integración con IIS y
Solo HTTP
contexto ASP.NET ASP.NET
Aplicacion -a.- Consola para -Facilidad de debugging
No Monitoriz.
pruebas y debug
y control del host
automática del
Consola ó
-b.- App.Win para - Todos los protocolos Servicio
App.Win
aplicaciones P2P.
Windows
Service
Servicio aislado
necesita IIS
- Todos los protocolos
No Monitoriz.
automática del
Servicio
Solo
Windows Vista /
Longhorn Server
Solo
Windows Vista /
Longhorn Server
-No
Windows
Activation
Service
Servicio aislado
- Monitorizado
- Todos los protocolos
IIS 7.0
Integrado en el
contexto ASP.NET
Como WAS pero se
integra con ASP.NET
2.0
Hosting de Servicio-WCF en
Servicio-Windows (Servicio NT)
3.0
Hosting de Servicio-WCF en
Servidor Web VS.2005 (Cassini)
ó en IIS (5.5, 6.0 ó 7.0)
4.0
Hosting de Servicio-WCF NetTCP en
WAS (Windows Activation Service de
Windows Vista / Longhorn Server)
Más detalles
sobre Bindings
Características de Bindings
Encoding
Selección de Transporte
TCP, HTTP, Named Pipes, MSMQ, Custom (SMTP,etc.)
Seguridad Extremo-a-Extremo
Text, Binary, Custom
Confidencialidad, integridad, authN, authZ, federación
Credenciales: X.509, User/Pwd, Kerberos, SAML,
CardSpace(InfoCard), Custom
Mensajería Confiable Extremo-a-Extremo
Confiabilidad, orden de mensajes, etc.
Colas persistentes y volátiles MSMQ, para disponibilidad
Bindings
Binding
HTTP
Transport
Text
Security
RM
TX
Protocol
Encoders
TCP
HTTP
Text
Security
RM
MSMQ
IPC
Binary
TX
.NET
Custom
Custom
Custom
Integración con Bindings
WCF
*
Binding
Binding
Http/WS
Binding
Http/WS
Binding
WS-* Protocols
MSMQ Protocol
MSMQ
Binding
MSMQ Protocol
WCF
WCF
ASMX/WSE3
Binding
MSMQ
WCF
WS-* Protocols
WS-* Protocols Http/WS
Java
WCF
*
Binding
WS-* Protocols Http/WS
ASMX/WSE3
WCF
WS-* Protocols
WCF
Java
MSMQ
Binding
WCF
MSMQ
Serialization != Encoding
Serialización (Impacta en implementación):
Encoding (Transparente en implementación):
“Paso de objetos .NET a un XML-Infoset”
“Como se manda el XML InfoSet por la red”
XML, Binario, MTOM.
Tres tipos de Serialización:
Cada uno con diferente esquema XML y algoritmos
1.- DataContractSerializer (usado por defecto).
Atributo [DataContractFormat] si puesto explícitamente
2.- NetContractSerializer (Bajo nivel, poco utilizado)
3.- XmlSerializer
Compatible con WS-ASMX (Basic Profile)
Atributo [XmlSerializerFormat] en Service-Contract
Bindings, Encoding y Transportes
Nombre
Transporte
Encoding
Interoperabilidad
BasicHttpBinding
HTTP/HTTPS
Texto
+
NetTcpBinding
TCP
Binario
-
NetPeerTcpBinding
P2P
Binario
-
NetNamedPipeBinding
Named Pipes
Binario
-
WSHttpBinding
HTTP/HTTPS
Texto,MTOM
+
WSFederationBinding
HTTP/HTTPS
Texto,MTOM
+
WSDualHttpBinding
HTTP
Texto,MTOM
+
NetMsmqBinding
MSMQ
Binario
-
MsmqIntegrationBinding MSMQ
Binario
+
5.0 Uso de TCP y Named-Pipes como
transporte
y Encoding de mensajes en BINARIO.
Seguridad en
WCF
Necesidades Seguridad
Servicios intra ó inter organizacionales
Necesitamos:
Autenticación, confidencialidad, integridad de
mensajes, privacidad y confianza.
Federación de seguridad entre organizaciones
Seguridad en Servicios
Securizar los mensajes
Soportar varias tecnologías criptográficas
Conversaciones Seguras
Securizar un intercambio contínuo de
mensajes
Confianza
Extender relaciones de confianza a lo largo de
servicios distribuidos
Comunicación Segura
Seguridad a nivel de Protocolo
Seguridad SSL
Seguridad SSL
Cifra toda la comunicación
El ‘Emisor’ tiene que confiar en todos
los intermediarios
Restringe los protocolos que pueden
usarse, p.e. solo SSL (HTTPS)
Comunicación Segura
WS-Security: Seguridad a nivel de Mensaje
Seguridad extremo a extremo del mensaje
independiente del ‘Transporte’
El emisor solamente necesita confiar en el
punto final
Soporta múltiples protocolos y múltiples
tecnologías de seguridad
Se encripta solamente parte del mensaje
La firma se guarda con los datos del mensaje
Resumen Características Bindings
X
X
X
X
X
X
X
X
Streaming
X
X
X
X
X
Duplex
T
T|S
T|S
T|S
T|S
T|S
T|S
Transacciones
Seguridad
BP 1.1
WS
WS
.NET
.NET
.NET
.NET
Sesion
Interoperabilidad
BasicHttpBinding
WsHttpBinding
WsDualHttpBinding
NetTcpBinding
NetNamedPipesBinding
NetMsmqBinding
NetPeerTcpBinding
U
U
X
T = Seguridad-Transporte| S = WS-Security | O = Un-Sentido Solo
5.1 - Autenticación NTLM y básica Windows
con binding
basicHttpBinding (WS-I Basic Profile)
Trazas de WCF
Potente sistema de trazas de WCF
Debido a la complejidad de las trazas,
es necesario analizarlo con:
Herramienta ‘Service Trace Viewer’
SvcTraceViewer.exe
En SDK de .NET 3.0
5.2 – Encriptación(cifrado) de
Servicio-WCF
con WsHttpBinding (estándares WS-*)
5.3 - Autenticación Membership
con binding
WsHttpBinding
5.4 - Securización de Servicio-WCF
con token CardSpace (InfoCard)
Modelos de
Comunicación
Llamadas Asíncronas
Opcion A:
Desarrollar Servicio igual
Gestionar llamadas asíncronas en el Cliente
Opción B:
Desarrollar Servicio-DUPLEX con callbacks
Cambia desarrollo de Servicio y simplifica el
Cliente
Desarrollar Servicio asíncrono con attributo:
[OperationContract(AsyncPattern=true)]
6.0
Llamadas Asíncronas a Servicios-WCF
gestionadas desde el Cliente
Modelos intercambio mensajes
Request/Reply
[OperationContract]
string Saludar(string nombre);
One-way
Message
[OperationContract(IsOneWay = true)]
void Chat(string texto);
Duplex
Contracts
[ServiceContract(CallbackContract =
typeof(IChat)]
public interface IChat {
[OperationContract(IsOneWay = true)]
void Chat(string texto);
}
7.0 - Comunicación Duplex.
- Conexión bidireccional
- Asincronismo
Comportamientos
(Behaviors)
Comportamientos (Behaviors)
Se aplican los ‘Behaviors’ con el
atributo ServiceBehaviorAttribute
Se aplican en la clase (Implementación)
También Behaviors a nivel de Binding
Ejemplos:
Pooling de instancias
Impersonación, Protección, Autorización
Gestión de Excepciones
Comportamientos (Behaviors)
Instanciación
Singleton, Shared, Private, PerCall
Concurrencia (Multiple, reentrant,
single)
Transacciones distribuidas entre varios
Servicios (WS-AtomicTransaction)
Identidad e Impersonación
BEHAVIORS:
7.1 - Instanciación Session.
(En ejemplo DUPLEX)
Arquitectura N-Tier y SOA
Mapeo a nivel físico
Cliente ‘Smart’
Nivel Físico
Cliente
Cliente Web (ASP.NET)
Componentes
Componentes IU
IU
Componentes
Componentes IU
IU
Comp.Proc.IU
Comp.Proc.IU
Agentes
Agentes Svc.
Svc.
Comp.Proc.IU
Comp.Proc.IU
Capa
Presentación
Capa de Lógica de negocio
Interfaz Servicios
Servicios-Web
Servicios-Web
ASMX
ASMX 2.0
2.0
Nivel Físico
Componentes
Aplicación
Servicios
Servicios
WCF
WCF
Business
Business Façade
Façade
Componentes
Componentes base
base de
de Negocio
Negocio
Capa de Acceso a Datos
Componentes
Componentes ‘Entidad’
‘Entidad’ desconectados
desconectados
Componentes
Componentes de
de acceso
acceso aa datos
datos (DAL)
(DAL)
Nivel
Físico
Datos
Fuentes de datos
Capas de
Componentes
Aplicación
Arquitectura N-Layer y SOA
Arquitectura lógica: N-Layered
Capa de Presentación
Capas
Presentación
Cliente ‘Smart’
Componentes
Componentes IU
IU
Comp.Proc.IU
Comp.Proc.IU
Agentes
Agentes Svc.
Svc.
Cliente Web
Componentes
Componentes IU
IU
Comp.Proc.IU
Comp.Proc.IU
Otros Clientes:
- Office-VSTO
- Pocket Framework
- Windows Mobile
- etc.
Capa de Lógica de negocio
Interfaz Servicios
Servicios-Web
Servicios-Web
ASMX
ASMX 2.0
2.0
Capas
Componentes
Aplicación
Servicios
Servicios
WCF
WCF
Business
Business Façade
Façade
Componentes
Componentes base
base de
de Negocio
Negocio
Capa de Acceso a Datos
Componentes
Componentes ‘Entidad’
‘Entidad’ desconectados
desconectados
Componentes
Componentes de
de acceso
acceso aa datos
datos (DAL)
(DAL)
Fuentes de datos
Datos
Lógicos
Interfaz
Interfaz
Servicios
Servicios
Agentes
Agentes
Servicios
Servicios
Servicios SOA
Externos
9.- Ejemplo de
Aplicación empresarial (N-Tier y SOA)
Haciendo uso de WCF.
*.- Capas componentes Negocio y Acceso a Datos
*.- Uso de System.Transactions
*.- Capa presentación accediento a componentes de
negocio mediante WCF
Ejemplo Transacción Distribuida
por Servicios-WCF
Transacción
Cliente
Inicia
Transferencia
Serv.WCF
Aplicacion
Serv.WCF
Banco-1
Cargo
Cuenta A
Abono
Cuenta B
Serv.WCF
Banco-2
BEHAVIORS:
9.1.Uso de Transacciones Distribuidas entre
diferentes Servicios.
Extensibilidad
WCF
Extensibilidad con
‘custom Behaviors & Inspectors’
-
Para crear comportamientos propios de
un servicio.
-
Aspectos localizados en el servicio
Out-of-the-box: Transacciones,
instanciación, etc.
Cualquier ‘Orientación a Aspectos’ a aplicar
en Servicios WCF:
-
Enlazados con INSPECTORS de mensajes.
(IDispatchMessageInspector, etc.)
Logging, contextos, seguridad, autorización, etc.
“La lista nunca acaba…”
Extensibilidad con
‘custom Channels’
-
Creación de ‘custom Channels’:
-
-
Aspectos localizados en ambos extremos
(Servicio y Cliente)
Nuevos transportes: SMTP, UDP, etc.
Integrar con otros sistemas, p.e. Java RMI
Implementar protocolos de
infraestructura propios
Resumen
WCF
WCF ‘Desde fuera’…
Cliente
Servicio
Bv
Bv
C B
A
Mensaje
A
B C
Bv
A
B C
Bv
Address
Binding
Contract
(Donde)
(Como)
(Qué)
WCF ‘Desde dentro’…
Servicio
A
B C
Bv
A
B C
Bv
Resumen Servicio WCF
Address
Binding
http://...
HTTP
Transport
net.p2p://...
Peer
Transport
net.tcp://...
TCP
Transport
WSWS-Security
Protocol
Contract
Request/
Response
Behavior
Instancing
Behavior
Concurrency
Behavior
Throttling
Behavior
WSWS-RM
Protocol
Metadata
Behavior
net.pipe://...
net.msmq://...
NamedPipe
Transport
MSMQ
Transport
WSWS-Coord
Protocol
OneOne-Way
Custom
Transport
Transaction
Behavior
Custom
Behavior
Security
Behavior
Duplex
Channel
Duplex
xxx://...
Error
Behavior
Custom
Protocol
Visible
Externamente,
Por cada Endpoint
Opaco, por-Servicio,
endpoint, u operación
Recursos
Links
Newsgroup
http://msdn.microsoft.com/winfx/
microsoft.public.windows.developer.
winfx.indigo
E-Mail
ctorre@renacimiento.com
Contacto
--
Consultoría
-- Proyectos
-- Formación
César de la Torre
Arquitecto de Software
[Microsoft MVP - Connected Systems]
[MCSE] [MCT]
ctorre@renacimiento.com
SOPORTE como MVP en NEWS publicas:
msnews.microsoft.com
microsoft.public.es.servicios.web
Descargar