You are on page 1of 31

Windows

Communication
Foundation 4.0

Aroa Solana

Sinopsis
El presente texto presenta al lector las caractersticas de creacin de servicios utilizando Windows Communication Foundation (WCF), parte de .NET Framework 4. Las aplicaciones cliente-servidor han evolucionado y el
hecho de poder acceder a informacin presente en mltiples ubicaciones ha pasado a ser una necesidad para
las nuevas aplicaciones. SOA (Arquitectura Orientada a Servicios) es el principal cimiento de esta tecnologa y
conceptos como Address, Binding y Contract, el ABC de WCF, los aprender el lector a lo largo de los captulos. Con WCF los servicios podrn ser consumidos por aplicaciones .NET y por aplicaciones hechas con otras
tecnologas como J2EE o similares.

Aroa Solana Ruiz es Microsoft Certified IT Professional en Database Developer,


tambin Microsoft Certified Technology Specialist en SQL Server 2005, .NET Framework 3.5, Windows Forms Applications, SQL Server 2005, al igual que Database
Development en SQL Server 2008.
Actualmente ostenta la certificacin MCT (Microsoft Certified Trainer) que la permite impartir un gran nmero de cursos oficiales de Microsoft y trabajar como formadora en Alhambra-Eidos.
Ha impartido formacin sobre la tecnologa .NET, desarrollo de aplicaciones Windows, Web, ADO, Distribuidas, WPF, WCF, WWF, Silverlight y UML, por otra parte imparte formacin en administracin de bases de datos SQL Server y desarrollo de bases de datos SQL Server, tanto en 2005 como en 2008. Adems posee experiencia en J2SE y J2EE. Dentro de la gestin de procesos
posee la certificacin ITIL V2 Foundations.

Luarna
Windows Communication Foundation 4.0
Aroa Solana Ruiz Alhambra-Eidos
De esta edicin: 2011, Luarna Ediciones, S.L.

www.luarna.com
Madrid, junio de 2011
ISBN: 978-84-15013-10-5
Versin 1.0 (21/06/2011)

Cualquier forma de reproduccin, distribucin, comunicacin pblica o transformacin de esta obra solo puede ser realizada con la
autorizacin de sus titulares, salvo excepcin prevista por la ley. Dirjase a CEDRO (Centro Espaol de Derechos Reprogrficos,
www.cedro.org) si necesita fotocopiar, escanear o hacer copias digitales de algn fragmento de esta obra.

Windows Communication Foundation 4.0


Aroa Solana Ruiz

Indice
1.INTRODUCCIN ........................................................................................................................................................................... 14
ARQUITECTURA WCF ....................................................................................................................................................................... 14
CONTRATOS ................................................................................................................................................................................... 15
Datos .............................................................................................................................................................................................. 15
Mensaje.......................................................................................................................................................................................... 15
Servicio ........................................................................................................................................................................................... 15
POLICY Y BINDING ........................................................................................................................................................................... 16
SERVICE RUNTIME ........................................................................................................................................................................... 16
MENSAJES ..................................................................................................................................................................................... 16
ACTIVACIN Y ALOJAMIENTO ............................................................................................................................................................. 17
CARACTERSTICAS DE WCF ................................................................................................................................................................ 17
Transacciones ................................................................................................................................................................................. 17
Alojamiento .................................................................................................................................................................................... 18
RESUMEN ...................................................................................................................................................................................... 18
2.CONCEPTOS DE WCF.................................................................................................................................................................... 21
MENSAJES ..................................................................................................................................................................................... 21
Estructura de un mensaje ................................................................................................................................................................ 21
El sobre SOAP.................................................................................................................................................................................. 22
Cabecera SOAP ............................................................................................................................................................................... 22
Cuerpo SOAP ................................................................................................................................................................................... 22
PROGRAMAS DE MENSAJERA ............................................................................................................................................................. 24
Clientes ........................................................................................................................................................................................... 25
Servicio ........................................................................................................................................................................................... 25
Intermediarios ................................................................................................................................................................................ 26
PATRONES DE MENSAJERA ................................................................................................................................................................ 26
Simple............................................................................................................................................................................................. 26
Dplex ............................................................................................................................................................................................ 27
Peticin-Respuesta .......................................................................................................................................................................... 27
CANALES ....................................................................................................................................................................................... 28
Pila de canales ................................................................................................................................................................................ 28
SEGURIDAD .................................................................................................................................................................................... 29
INTEROPERABILIDAD ......................................................................................................................................................................... 29
TRANSPORTES ................................................................................................................................................................................ 29
SERVICIOS ...................................................................................................................................................................................... 30
EXTREMOS ..................................................................................................................................................................................... 31
DIRECCIONES.................................................................................................................................................................................. 31
ENLACES ....................................................................................................................................................................................... 31
CONTRATOS ................................................................................................................................................................................... 34
Contrato de servicios ....................................................................................................................................................................... 34
Contrato de mensajes ..................................................................................................................................................................... 34
Contrato de datos ........................................................................................................................................................................... 34
COMPORTAMIENTOS ........................................................................................................................................................................ 35
3.MODELO DE PROGRAMACIN DE WCF ....................................................................................................................................... 36
ORIENTADO A SERVICIOS VS ORIENTADO A OBJETOS ................................................................................................................................ 36
MODELO DE SERVICIOS ..................................................................................................................................................................... 37
System.ServiceModel ...................................................................................................................................................................... 37
System.ServiceModel.Channels ....................................................................................................................................................... 38
System.Transactions ....................................................................................................................................................................... 39
SCVUTIL.EXE .................................................................................................................................................................................. 39
Usos Comunes................................................................................................................................................................................. 40
Generacin de cdigo...................................................................................................................................................................... 40
Exportar Metadatos ........................................................................................................................................................................ 41
Serializacin/ Mensaje .................................................................................................................................................................... 42
Avanzada ........................................................................................................................................................................................ 42
Miscelnea ..................................................................................................................................................................................... 43
MTODOS DE PROGRAMACIN DE WCF ............................................................................................................................................... 43
Declarativa ..................................................................................................................................................................................... 43
Explcita .......................................................................................................................................................................................... 44

Pgina 5

Configuracin ................................................................................................................................................................................. 44
NIVELES DE PROGRAMACIN WCF ...................................................................................................................................................... 45
Tipado ............................................................................................................................................................................................ 45
No tipado........................................................................................................................................................................................ 45
Mensajes ........................................................................................................................................................................................ 46
EL PROCESO DE DESARROLLO .............................................................................................................................................................. 46
CREANDO NUESTRO PRIMER SERVICIO WCF ........................................................................................................................................... 46
Cdigo del Servicio .......................................................................................................................................................................... 57
Servicio.svc ..................................................................................................................................................................................... 58
Web.config ..................................................................................................................................................................................... 58
4.DIRECCIONES ............................................................................................................................................................................... 59
DIRECCIONES WCF .......................................................................................................................................................................... 59
TIPOS DE DIRECCIONES ..................................................................................................................................................................... 59
Direccin de Extremo ...................................................................................................................................................................... 59
Direccin Base ................................................................................................................................................................................ 60
Direccin MEX................................................................................................................................................................................. 60
FORMATO DE DIRECCIONES ................................................................................................................................................................ 60
Direccin HTTP ................................................................................................................................................................................ 61
Direccin HTTPS ............................................................................................................................................................................. 61
Direccin TCP .................................................................................................................................................................................. 61
Direccin MSMQ ............................................................................................................................................................................. 62
Direccin de Canalizacin con Nombre ............................................................................................................................................ 62
Direccin IIS .................................................................................................................................................................................... 62
PROGRAMACIN DE DIRECCIONES EN WCF ........................................................................................................................................... 63
La clase EndpointAdress .................................................................................................................................................................. 63
La propiedad de Identidad............................................................................................................................................................... 64
Coleccin de cabeceras ................................................................................................................................................................... 65
PROGRAMACIN DE DIRECCIONES ........................................................................................................................................................ 65
Direccin base................................................................................................................................................................................. 65
Direccin de Extremo ...................................................................................................................................................................... 66
ESPECIFICAR UN FICHERO DE CONFIGURACIN ......................................................................................................................................... 66
ESPECIFICACIN EN CDIGO ............................................................................................................................................................... 67
Direccin relativa ............................................................................................................................................................................ 68
5.ENLACES ...................................................................................................................................................................................... 69
ENTENDIENDO LOS ENLACES WCF ....................................................................................................................................................... 69
ENLACES PREDEFINIDOS .................................................................................................................................................................... 69
BasicHttpBinding ............................................................................................................................................................................ 70
Propiedades BasicHttpBinding ................................................................................................................................................................ 71

WsHttpBinding................................................................................................................................................................................ 72
WSDualHttpBinding ........................................................................................................................................................................ 74
Propiedades WSDualHttpBinding ............................................................................................................................................................ 74

WSFederationHttpBinding ............................................................................................................................................................... 76
Propiedades de WSFederationHttpBinding.............................................................................................................................................. 76

NetTcpBinding ................................................................................................................................................................................ 78
Propiedades WS-ReliableMessaging........................................................................................................................................................ 78

NetNamedPipeBinding .................................................................................................................................................................... 79
Propiedades NetNamedPipeBinding ....................................................................................................................................................... 80

NetMsmqBinding ............................................................................................................................................................................ 81
Propiedades NetMsmqBinding................................................................................................................................................................ 81

NetPeerTcpBinding ......................................................................................................................................................................... 84
Propiedades NetPeerTcpBinding............................................................................................................................................................. 84

MsmqIntegrationBinding ................................................................................................................................................................ 85
Propiedades de MsmqIntegrationBinding ............................................................................................................................................... 85

PROGRAMAR ENLACES WCF .............................................................................................................................................................. 87


Usando Cdigo................................................................................................................................................................................ 87
USANDO EL FICHERO DE CONFIGURACIN .............................................................................................................................................. 99
CASO PRCTICO ............................................................................................................................................................................ 101
6.CONTRATOS .............................................................................................................................................................................. 102
CONTRATOS WCF ......................................................................................................................................................................... 102
CONTRATOS Y SUS RELACIONES CON EL CLR ......................................................................................................................................... 102
Service Contract ............................................................................................................................................................................ 103

Pgina 6

Atributo [ServiceContract] .................................................................................................................................................................... 104


CallbackContract .............................................................................................................................................................................. 104
ConfigurationName.......................................................................................................................................................................... 105
Name .............................................................................................................................................................................................. 105
Namespace...................................................................................................................................................................................... 106
ProtectionLevel................................................................................................................................................................................ 106
SessionMode ................................................................................................................................................................................... 106

TIPOS DE SERVICIOS ....................................................................................................................................................................... 107


Typed............................................................................................................................................................................................ 107
Typed Messages............................................................................................................................................................................ 108
Untyped ........................................................................................................................................................................................ 108
Atributo [OperationContract] ............................................................................................................................................................... 108
Action.............................................................................................................................................................................................. 109
AsyncPattern ................................................................................................................................................................................... 109
IsInitiating........................................................................................................................................................................................ 110
IsOneWay ........................................................................................................................................................................................ 111
IsTerminating................................................................................................................................................................................... 111
Name .............................................................................................................................................................................................. 111
ProtectionLevel................................................................................................................................................................................ 112
ReplyAction ..................................................................................................................................................................................... 112

DATA CONTRACTS ......................................................................................................................................................................... 113


Atributo [DataContract] ................................................................................................................................................................ 113
Name ................................................................................................................................................................................................... 114
Namespace .......................................................................................................................................................................................... 114

Atributo [DataMember] ................................................................................................................................................................ 115


EmitDefaultValue ................................................................................................................................................................................. 115
IsRequiered .......................................................................................................................................................................................... 115
Name ................................................................................................................................................................................................... 116
Order ................................................................................................................................................................................................... 116

Atributo [KnownType] ................................................................................................................................................................... 116


MethodName....................................................................................................................................................................................... 117
Type..................................................................................................................................................................................................... 117

MESSAGE CONTRACTS .................................................................................................................................................................... 117


Atributo [MessageContract] .......................................................................................................................................................... 118
HasProtectionLevel .............................................................................................................................................................................. 118
IsWrapped ........................................................................................................................................................................................... 118
PretectionLevel .................................................................................................................................................................................... 119
WrapperName ..................................................................................................................................................................................... 119
WrapperNamespace............................................................................................................................................................................. 119

Atributo [MessageHeader] ............................................................................................................................................................ 119


Actor.................................................................................................................................................................................................... 120
MustUnderstand .................................................................................................................................................................................. 120
Name ................................................................................................................................................................................................... 120
Namespace .......................................................................................................................................................................................... 121
Relay.................................................................................................................................................................................................... 121

Atributo [MessageBodyMember] .................................................................................................................................................. 121


Name ................................................................................................................................................................................................... 121
Order ................................................................................................................................................................................................... 122

Atributo [MessageProperty] .......................................................................................................................................................... 122


Name ................................................................................................................................................................................................... 122

PROGRAMADO CONTRATOS WCF ...................................................................................................................................................... 123


Data Contract ............................................................................................................................................................................... 123
Message Contract ......................................................................................................................................................................... 127
7.CLIENTES ................................................................................................................................................................................... 131
ARQUITECTURA DEL CLIENTE ............................................................................................................................................................. 131
Objetos Cliente.............................................................................................................................................................................. 132
ICommunicationObject ......................................................................................................................................................................... 132
IExtensibleObject ................................................................................................................................................................................. 133

Canales de Cliente ......................................................................................................................................................................... 133


IClientChannel...................................................................................................................................................................................... 133
IContextChannel................................................................................................................................................................................... 133

Factoras de Canales ..................................................................................................................................................................... 134


La Clase ChannelFactory ....................................................................................................................................................................... 135
Constructores .................................................................................................................................................................................. 135
Propiedades .................................................................................................................................................................................... 135
Mtodos.......................................................................................................................................................................................... 135

Pgina 7

Mtodo CreateChannel .................................................................................................................................................................... 136

PATRONES DE COMUNICACIN DEL CLIENTE ......................................................................................................................................... 137


One-Way ...................................................................................................................................................................................... 137
Solicitud/Respuesta....................................................................................................................................................................... 138
Dplex .......................................................................................................................................................................................... 139
SERVICIO ..................................................................................................................................................................................... 139
CLIENTE ...................................................................................................................................................................................... 141
Cliente Dplex usando DupplexChannelFactory.............................................................................................................................. 141
ASNCRONA ................................................................................................................................................................................. 142
Servicio ......................................................................................................................................................................................... 142
Cliente .......................................................................................................................................................................................... 143
CREAR CDIGO DE CLIENTE .............................................................................................................................................................. 143
GENERAR CDIGO DE CLIENTE .......................................................................................................................................................... 143
DEFINIR ENLACES Y EXTREMOS DE CLIENTE .......................................................................................................................................... 144
SERVICIOS TYPED VS SERVICIOS UNTYPED ............................................................................................................................................ 146
Invocar Operaciones de un Servicio Tipado. ................................................................................................................................... 146
Invocar Operaciones de un Servicio no Tipado ............................................................................................................................... 146
INFORMACIN DE UTILIDAD.............................................................................................................................................................. 147
Inicializar Canales interactivamente .............................................................................................................................................. 147
Duracin de la sesin y del canal ................................................................................................................................................... 147
Problemas de bloqueo ................................................................................................................................................................... 148
Manejo de Excepciones ................................................................................................................................................................. 148
CASO PRCTICO ............................................................................................................................................................................ 149
Ejemplo de programacin de un Cliente......................................................................................................................................... 149
ChannelFactory ............................................................................................................................................................................. 149
Dplex .......................................................................................................................................................................................... 154
8.SERVICIOS.................................................................................................................................................................................. 159
TIPOS DE SERVICIOS ....................................................................................................................................................................... 159
Typed............................................................................................................................................................................................ 159
Untyped ........................................................................................................................................................................................ 160
Typed Message ............................................................................................................................................................................. 161
CONTRATOS DE SERVICIO ................................................................................................................................................................ 162
EXTREMOS DE SERVICIO .................................................................................................................................................................. 162
A travs de Cdigo ........................................................................................................................................................................ 162
A travs del archivo de Configuracin ............................................................................................................................................ 163
COMPORTAMIENTOS DE SERVICIO ..................................................................................................................................................... 164
Atributo ServiceBehavior ............................................................................................................................................................... 165
AddressFilterMode ............................................................................................................................................................................... 165
AutomaticSessionShutdown ................................................................................................................................................................. 165
ConcurrencyMode................................................................................................................................................................................ 166
ConfigurationName .............................................................................................................................................................................. 167
IgnoreExtensionDataObject .................................................................................................................................................................. 167
IncludeExceptionDetailInFaults ............................................................................................................................................................. 167
InstanceContextMode .......................................................................................................................................................................... 168
ReleaseServiceInstanceOnTransaction Complete................................................................................................................................... 168
TransactionAutoCompleteOnSessionClose ............................................................................................................................................ 169
TransactionIsolationLevel ..................................................................................................................................................................... 169
TransactionTimeout ............................................................................................................................................................................. 170
UseSynchronizedContext ...................................................................................................................................................................... 170
ValidateMustUnderstand...................................................................................................................................................................... 171

Atributo OperationBehavior .......................................................................................................................................................... 171


AutoDisposeParameters ....................................................................................................................................................................... 172
Impersonation...................................................................................................................................................................................... 172
ReleaseInstanceMode .......................................................................................................................................................................... 172
TransactionAutoComplete .................................................................................................................................................................... 173
TransactionScopeRequired ................................................................................................................................................................... 174

USAR LA CONFIGURACIN PARA LA ESPECIFICACIN DE COMPORTAMIENTOS ................................................................................................. 174


THROTTLING ................................................................................................................................................................................ 175
INSTANCECONTEXT ........................................................................................................................................................................ 175
MANEJO DE EXCEPCIONES ............................................................................................................................................................... 176
FaultException .............................................................................................................................................................................. 176
Atributo FaultContract .................................................................................................................................................................. 177
PROGRAMADO UN EJEMPLO............................................................................................................................................................. 179

Pgina 8

9.TRANSACCIONES Y SESIONES FIABLES ....................................................................................................................................... 184


TRANSACCIONES ........................................................................................................................................................................... 184
Atomicidad ................................................................................................................................................................................... 185
Consistencia .................................................................................................................................................................................. 185
Aislamiento................................................................................................................................................................................... 185
Durabilidad ................................................................................................................................................................................... 185
ATRIBUTOS DE TRANSACTION EN SYSTEM.SERVICEMODEL ....................................................................................................................... 185
Atributo ServiceBehavior ............................................................................................................................................................... 186
Atributo OperationBehavior .......................................................................................................................................................... 187
Atributo TransactionFlow .............................................................................................................................................................. 187
TRANSACIN WS-ATOMIC .............................................................................................................................................................. 188
ESPECIFICAR TRANSACCIONES A TRAVS DE LA CONFIGURACIN ................................................................................................................. 188
SESIONES FIABLES .......................................................................................................................................................................... 189
INTERCAMBIO DE MENSAJES ............................................................................................................................................................ 189
Asegurar los mensajes................................................................................................................................................................... 191
Colas............................................................................................................................................................................................. 194
WCF y las Colas .................................................................................................................................................................................... 196
Buenas prcticas en el uso de Colas.................................................................................................................................................. 201

10.SEGURIDAD ............................................................................................................................................................................. 203


VISTA GENERAL ............................................................................................................................................................................ 203
CONCEPTOS ................................................................................................................................................................................. 203
Integridad ..................................................................................................................................................................................... 204
Confidencialidad ........................................................................................................................................................................... 204
Autenticacin................................................................................................................................................................................ 204
Autorizacin.................................................................................................................................................................................. 204
POR QU SEGURIDAD WCF? .......................................................................................................................................................... 205
Transferencia de Seguridad ........................................................................................................................................................... 205
Control de Acceso / Autenticacin ................................................................................................................................................. 206
Miembro ASP.NET y Role Provider ........................................................................................................................................................ 207
Administrador de autorizaciones. ......................................................................................................................................................... 209
Modelo de identidad ............................................................................................................................................................................ 210

Auditora....................................................................................................................................................................................... 211
Credenciales......................................................................................................................................................................................... 211

COMPORTAMIENTOS DE SEGURIDAD Y ENLACES .................................................................................................................................... 213


Comportamientos de Seguridad .................................................................................................................................................... 213
Credenciales de Servicio ....................................................................................................................................................................... 213
Credenciales de Cliente ........................................................................................................................................................................ 214
Autorizacin de Servicio ....................................................................................................................................................................... 215

Auditoria de Servicio ..................................................................................................................................................................... 215


ENLACES ..................................................................................................................................................................................... 216
BasicHttpBinding .......................................................................................................................................................................... 216
WSHttpBinding ............................................................................................................................................................................. 216
WSDualHttpBinding ...................................................................................................................................................................... 218
NetTcpBinding .............................................................................................................................................................................. 219
NetNamedPipeBinding .................................................................................................................................................................. 220
MsmqIntegrationBinding .............................................................................................................................................................. 220
NetMsmqBinding .......................................................................................................................................................................... 220
WSFederationBinding.................................................................................................................................................................... 220
ASEGURAR CLIENTES Y SERVICIOS ...................................................................................................................................................... 221
RECOMENDACIONES ....................................................................................................................................................................... 223
11.INTEROPERABILIDAD E INTEGRACIN ..................................................................................................................................... 224
INTEROPERABILIDAD ....................................................................................................................................................................... 224
PROTOCOLO DE SOPORTE PARA SERVICIOS WEB .................................................................................................................................... 224
WSE (MEJORAS DE SERVICIOS WEB) ................................................................................................................................................. 226
SERVICIO WEB .............................................................................................................................................................................. 226
Cliente WCF .................................................................................................................................................................................. 228
SERVICIOS WEB ASP.NET............................................................................................................................................................... 230
WCF/ASP.NET Compatible con extremos ....................................................................................................................................... 230
Extremos a travs de cdigo ................................................................................................................................................................. 230
Extremos a travs del archivo de configuracin ..................................................................................................................................... 231

INTEGRACIN ............................................................................................................................................................................... 231


COM+ ........................................................................................................................................................................................... 232

Pgina 9

Herramienta de configuracin del Modelo de Servicio de COM +........................................................................................................... 232

MSMQ ...................................................................................................................................................................................... 234


Servicios WCF y Clientes MSMQ..................................................................................................................................................... 234
12.DESPLEGAR WCF...................................................................................................................................................................... 236
INSTALAR SERVICIOS WCF ............................................................................................................................................................... 236
SOPORTE DE SISTEMAS OPERATIVOS .................................................................................................................................................. 236
REQUISITOS SOFTWARE ................................................................................................................................................................... 236
.NET Framework ........................................................................................................................................................................... 236
Internet Information Server ........................................................................................................................................................... 236
MICROSOFT MESSAGE QUEUING....................................................................................................................................................... 238
INSTALAR EL SERVICIO WCF ............................................................................................................................................................. 239
IIS ................................................................................................................................................................................................. 239
SERVICIOS WINDOWS ..................................................................................................................................................................... 240
Configuraciones de Servicios WCF.................................................................................................................................................. 241
Actualizacin de Servicios.............................................................................................................................................................. 241
Solucin a problemas de instalaciones WCF ................................................................................................................................... 241
COMUNICACIN CLIENTE/SERVICIO ................................................................................................................................................... 241
Comportamiento inesperado de servicios ...................................................................................................................................... 242
RESUMEN .................................................................................................................................................................................... 242
13.PERSONALIZAR WCF ................................................................................................................................................................ 244
LA EXTENSIN DE SERVICEHOST Y LA CAPA DEL MODELO DE SERVICIO......................................................................................................... 244
CLIENTE ...................................................................................................................................................................................... 244
La Clase ClientRuntime .................................................................................................................................................................. 245
La Clase ClientOperation ............................................................................................................................................................... 246
DISPENSADOR .............................................................................................................................................................................. 249
La Clase DispatchRuntime ............................................................................................................................................................. 249
La Clase DispatchOperation........................................................................................................................................................... 251
COMPORTAMIENTOS ...................................................................................................................................................................... 253
LA EXTENSIN DE LA CAPA DE CANAL .................................................................................................................................................. 254
El canal del Cliente ........................................................................................................................................................................ 255
El canal del Servicio ....................................................................................................................................................................... 255
Desarrollo de canales .................................................................................................................................................................... 256
ELEGIR EL PATRN DE INTERCAMBIO DE MENSAJES ................................................................................................................................. 256
CHANNEL FACTORY Y CHANNEL LISTENER ............................................................................................................................................ 257
AADIR ELEMENTOS DE ENLACE ........................................................................................................................................................ 257
EXTENDER ENLACES ....................................................................................................................................................................... 259
CONSTRUIR ENLACES PERSONALIZADOS .............................................................................................................................................. 259
Modificacin de enlaces WCF ........................................................................................................................................................ 260
14.GESTIONAR WCF...................................................................................................................................................................... 262
TRAZAS ....................................................................................................................................................................................... 262
Realizar trazas de extremo a extremo............................................................................................................................................ 262
Servicio de Trazas.......................................................................................................................................................................... 264
Actividad.............................................................................................................................................................................................. 265
Proyecto .............................................................................................................................................................................................. 265

Editor de configuracin del Servicio ............................................................................................................................................... 265


Configuracin....................................................................................................................................................................................... 267
Servicios............................................................................................................................................................................................... 267
Cliente ................................................................................................................................................................................................. 267
Enlaces................................................................................................................................................................................................. 267
Diagnsticos......................................................................................................................................................................................... 268
Avanzado ............................................................................................................................................................................................. 269
Comportamientos de extremos ............................................................................................................................................................ 269
Comportamientos de servicios.............................................................................................................................................................. 270
Extensiones.......................................................................................................................................................................................... 270
Tareas .................................................................................................................................................................................................. 271
Detalles................................................................................................................................................................................................ 272

CONTADOR DE RENDIMIENTO ........................................................................................................................................................... 272


15.ALOJAR SERVICIOS WCF........................................................................................................................................................... 275
ALOJAR VS AUTO-ALOJAMIENTO ....................................................................................................................................................... 275
Alojar............................................................................................................................................................................................ 275
Auto-Alojar ................................................................................................................................................................................... 275

Pgina 10

RPIDA COMPARACIN ................................................................................................................................................................... 276


OPCIONES DE ALOJAMIENTO ............................................................................................................................................................. 276
Alojar en el IIS ............................................................................................................................................................................... 276
Alojar en Cdigo Administrado ...................................................................................................................................................... 277
Ejemplo de alojamiento........................................................................................................................................................................ 278

16.NOVEDADES WCF 4.0 .............................................................................................................................................................. 286


17.ALOJAMIENTO ......................................................................................................................................................................... 289
ALOJAR UN SERVICIO WCF EN EL IIS .................................................................................................................................................. 289
ASEGURARSE DE QUE EL IIS Y WCF Y EL COMPONENTE DE ACTIVACIN HTTP DE WCF SE INSTALEN Y SE REGISTREN CORRECTAMENTE. ...................... 290
CREAR UNA NUEVA APLICACIN DE IIS O REUTILICE UNA APLICACIN DE ASP.NET EXISTENTE. .......................................................................... 290
ALOJAMIENTO DE WCF EN PARALELO CON ASP.NET ............................................................................................................................. 290
ALOJAMIENTO DE SERVICIOS WCF EN MODO DE COMPATIBILIDAD DE ASP.NET ........................................................................................... 292
CREAR UN ARCHIVO .SVC PARA EL SERVICIO DE WCF. ............................................................................................................................. 293
LLEVAR A CABO LA IMPLEMENTACIN DE SERVICIO EN LA APLICACIN IIS. .................................................................................................... 294
CONFIGURAR EL SERVICIO DE WCF .................................................................................................................................................... 294
Direcciones de extremos para servicios hospedados en IIS ............................................................................................................. 294
Transportes disponibles................................................................................................................................................................. 295
Seguridad de transporte HTTP ....................................................................................................................................................... 295
ALOJAR UN SERVICIO WCF DE ACTIVACIN DE PROCESOS DE WINDOWS ...................................................................................................... 295
CREACIN DE UN SERVICIO BSICO HOSPEDADO POR WAS ...................................................................................................................... 296
CREACIN DE UN CLIENTE PARA QUE UTILICE EL SERVICIO ......................................................................................................................... 296
ELEMENTOS DEL MODELO DE DIRECCIONAMIENTO DE WAS ..................................................................................................................... 297
El tiempo de ejecucin de WAS ...................................................................................................................................................... 297
INSTALAR Y CONFIGURAR LOS COMPONENTES DE ACTIVACIN DE WCF ....................................................................................................... 297
Instalacin de los componentes de activacin que no son HTTP de WCF......................................................................................... 298
Configuracin de WAS para admitir la activacin TCP .................................................................................................................... 298
Quitar el net.tcp de la lista de protocolos habilitados..................................................................................................................... 298
Quitar el enlace de sitio de net.tcp ................................................................................................................................................ 299
ALOJAR EN UNA APLICACIN DE SERVICIOS DE WINDOWS ........................................................................................................................ 299
HOSPEDAJE DE WCF DENTRO DE UNA APLICACIN DE SERVICIO DE WINDOWS .............................................................................................. 299
Construya el servicio y proporcione el cdigo del hospedaje ........................................................................................................... 300
Instale y ejecute el servicio. ........................................................................................................................................................... 302
ALOJAR UN SERVICIO DE WCF EN UNA APLICACIN GESTIONADA ............................................................................................................... 303
APLICACIONES DE CONSOLA.............................................................................................................................................................. 303
APLICACIONES DE CLIENTE COMPLEJAS ................................................................................................................................................ 303
ACTIVACIN BASADA EN LA CONFIGURACIN EN IIS Y WAS ..................................................................................................................... 303
SOPORTAR MLTIPLES ENLACES DE SITIOS EN EL IIS ................................................................................................................................ 304
MLTIPLES DIRECCIONES BASE .......................................................................................................................................................... 304
18.INTEGRACIN DE SYSTEM.WEB.ROUTING ............................................................................................................................... 305
USAR LA INTEGRACIN DE N:SYSTEM.WEB.ROUTING ............................................................................................................................. 305
ENRUTAMIENTO ............................................................................................................................................................................ 306
ENRUTAMIENTO BASADO EN CONTENIDO ............................................................................................................................................. 306
Agregacin de servicios ................................................................................................................................................................. 306
Control de versiones del servicio .................................................................................................................................................... 307
Enrutamiento de prioridad ............................................................................................................................................................ 307
Puente protocolar ......................................................................................................................................................................... 307
Control de errores ......................................................................................................................................................................... 307
SERVICIO DE ENRUTAMIENTO ........................................................................................................................................................... 307
ENRUTAMIENTO BASADO EN CONTENIDO ............................................................................................................................................. 308
Configuracin dinmica ................................................................................................................................................................ 308
Puente protocolar ......................................................................................................................................................................... 308
PROCESAMIENTO DE SOAP ............................................................................................................................................................. 308
Control de errores ......................................................................................................................................................................... 308
Extremos de reserva ...................................................................................................................................................................... 309
INTRODUCCIN AL ENRUTAMIENTO .................................................................................................................................................... 309
Configuracin ............................................................................................................................................................................... 309
Definicin de extremos .................................................................................................................................................................. 310
LGICA DE ENRUTAMIENTO .............................................................................................................................................................. 311
Multidifusin ................................................................................................................................................................................ 312
Procesamiento de SOAP ................................................................................................................................................................ 312
CONFIGURACIN DINMICA ............................................................................................................................................................. 313

Pgina 11

CONTROL DE ERRORES .................................................................................................................................................................... 314


TRAZA DE EXCEPCIONES................................................................................................................................................................... 314
Extremos de reserva ...................................................................................................................................................................... 314
PATRONES DE ERROR ADMITIDOS ....................................................................................................................................................... 315
ALOJAMIENTO .............................................................................................................................................................................. 317
ENRUTAR CONTRATOS .................................................................................................................................................................... 317
Filtros de mensajes........................................................................................................................................................................ 318
TABLA DE ESPACIO DE NOMBRES ........................................................................................................................................................ 319
Tablas de filtros ............................................................................................................................................................................ 320
PRIORIDAD DE LA EVALUACIN DE FILTROS ........................................................................................................................................... 320
Listas de reserva ........................................................................................................................................................................... 321
Escenarios de enrutamiento .......................................................................................................................................................... 321
Escenarios comunes ...................................................................................................................................................................... 322
CONTROL DE VERSIONES DEL SERVICIO ................................................................................................................................................ 322
Particionar datos de servicio ......................................................................................................................................................... 322
Enrutamiento dinmico ................................................................................................................................................................. 323
Multidifusin ................................................................................................................................................................................ 323
Puente protocolar ......................................................................................................................................................................... 323
Control de errores ......................................................................................................................................................................... 323
19.SOPORTE DE MLTIPLES ENLACES AL IIS.................................................................................................................................. 324
MLTIPLES DIRECCIONES BASE .......................................................................................................................................................... 324
CREAR UN SITIO WEB (IIS 7) ............................................................................................................................................................. 324
PARA AGREGAR UN SITIO WEB ........................................................................................................................................................... 325
INTERFAZ DE USUARIO .................................................................................................................................................................... 325
Para usar la interfaz de usuario ..................................................................................................................................................... 325
LNEA DE COMANDOS ..................................................................................................................................................................... 325
20.EXTREMOS ESTANDAR............................................................................................................................................................. 327
EXTREMOS DE INFRAESTRUCTURA ...................................................................................................................................................... 327
EXTREMOS DE APLICACIN ............................................................................................................................................................... 327
CONFIGURAR UN EXTREMO ESTNDAR ................................................................................................................................................ 329
EXTREMOS ESTNDAR DISTRIBUIDOS CON .NET FRAMEWORK................................................................................................................... 329
21.SERVICIOS DE FLUJO DE TRABAJO............................................................................................................................................ 331
ACTIVIDAD TRANSACTEDRECEIVESCOPE .............................................................................................................................................. 331
Hospedar un servicio de flujo de trabajo ........................................................................................................................................ 332
SERVICIOS DE FLUJO DE TRABAJO Y ENLACES BASADOS EN MSMQ ............................................................................................................. 332
Utilizar Actividades de mensajera ................................................................................................................................................. 333
CORRELACIN .............................................................................................................................................................................. 341
Tipos de Correlacin ...................................................................................................................................................................... 341
Correlacin basada en protocolos ......................................................................................................................................................... 342
Correlacin basada en contenidos ........................................................................................................................................................ 342
Utilizar Correlacin basada en contenidos............................................................................................................................................. 342

Usar la actividad InitializeCorrelation ............................................................................................................................................ 343


Intercambio de contexto ............................................................................................................................................................... 344
Usar correlacin del contexto ............................................................................................................................................................... 344
Configurar la correlacin del contexto en un servicio del flujo de trabajo ............................................................................................... 344

Correlacin Dplex ........................................................................................................................................................................ 345


Usar la correlacin dplex duradera...................................................................................................................................................... 346

CORRELACIN SOLICITUD-RESPUESTA ................................................................................................................................................. 348


Utilizar correlacin en una operacin bidireccional con Receive/SendReply .................................................................................... 348
Utilizar correlacin en una operacin bidireccional con Send/ReceiveReply .................................................................................... 350
22.WCF REST ................................................................................................................................................................................ 351
ALMACENAMIENTO EN MEMORIA CACH ............................................................................................................................................. 351
ALMACENAMIENTO EN MEMORIA CACH BSICO DEL SERVICIO WEB HTTP .................................................................................................. 351
DEPENDENCIA DE MEMORIA CACH DE SQL ......................................................................................................................................... 352
ALMACENAMIENTO EN MEMORIA CACH BASADO EN HTTP GET CONDICIONAL ............................................................................................ 353
CONSIDERACIONES DE SEGURIDAD ..................................................................................................................................................... 354
FORMATO DE WEB HTTP EN WCF .................................................................................................................................................... 354
FORMATO AUTOMTICO ................................................................................................................................................................. 354
FORMATO EXPLCITO ...................................................................................................................................................................... 356
CONTROLAR ERRORES WEB HTTP DE WCF .......................................................................................................................................... 357
CONTROLAR ERRORES DE WEB HTTP DE WCF ...................................................................................................................................... 357

Pgina 12

CONFIGURACIN SIMPLIFICADA ........................................................................................................................................................ 358


Configuracin simplificada ............................................................................................................................................................ 358
23.RESOLUCIN CASOS PRCTICOS.............................................................................................................................................. 361
CASO PRCTICO CAPTULO 5 ............................................................................................................................................................ 361
CASO PRCTICO CAPTULO 7 ............................................................................................................................................................ 363

Pgina 13

1.INTRODUCCIN
Este libro pretende ofrecer al lector los contenidos necesarios, aunque no todos, para poder preparar el examen de certificacin de Microsoft 70-513. Este libro ofrece al lector una inmersin en el mundo de WCF, para
que pueda probar e ir investigando como apoyo en el estudio imprescindible de esta materia, an as hay que
destacar que lo ms importante es la experiencia que se adquiere en el transcurso del estudio, de la creacin
propia de ejemplos, etc.
Despus de esta pequea introduccin en las certificaciones empecemos a raspar en la superficie del profundo
universo que engloba Windows Communication Foundation.
Actualmente las empresas tienen la necesidad de poder interconectar los procesos, las personas y la informacin.
Por ello uno de los problemas ms grandes a los que una empresa ha de hacer frente es el poder integrar estos
componentes IT (aplicaciones, datos y sistemas).
La arquitectura Orientada a Servicios (SOA) proporciona una estrategia general de organizacin de elementos
IT, en definitiva, nos brinda un marco de diseo para la integracin de aplicaciones independientes de manera
que se pueda desde la red acceder a sus funcionalidades, las cuales se ofrecen como servicios. WCF se basa en
esta arquitectura.

Arquitectura WCF
En el corazn de WCF est una arquitectura de capas que soporta una gran variedad de estilos para el desarrollo de aplicaciones distribuidas. La siguiente imagen ilustra la arquitectura de capas de Windows Communication Foundation.

Ilustracin 1. Arquitectura en Capas de WCF

Esta arquitectura en capas, brinda a los desarrolladores un nuevo modelo de programacin orientado a servicios.

Pgina 14

Contratos
Los contratos WCF contienen informacin relativa a lo que un servicio ofrece al cliente y el tipo de informacin que va a poner a disposicin.
Existen tres tipos de contratos: de datos, de mensaje y de servicio.

Datos
Un contrato de datos estipula de manera explcita los datos que se intercambiarn con el servicio. El servicio y
el cliente no necesitan llegar a un acuerdo sobre los tipos, pero si necesitan llegar a un acuerdo sobre los datos
del contrato. Esto incluye los parmetros y el tipo de retorno.

Mensaje
Un contrato de mensaje proporciona un control adicional sobre un contrato de datos, en la medida en la que
controla los mensajes SOAP enviados y recibidos por el servicio. En otras palabras, un contrato de mensaje
permite personalizar el tipo de formato de de los parmetros en los mensajes SOAP.
La mayora de las veces un contrato de datos es suficiente, pero en ocasiones puede que un poco ms de control sea necesario.

Servicio
Un contrato de servicio informa a los clientes, de lo que ofrece el servicio y como comunicase con l. Piense en
ello como una sola declaracin, en la que bsicamente dice aqu estn los tipos de datos de mis mensajes, aqu
es donde estoy ubicado, y aqu estn los protocolos con los que me comunico.
Los contratos son definidos por el CLR por medio de clases o interfaces. stas, al ser utilizadas en los servicios,
son convertidas a un formato comn para que el servicio pueda ser usado por distintas plataformas con total
compatibilidad.
El Service Contract es convertido en un WSDL que obtiene la descripcin de las operaciones ofrecidas por el
servicio (segn lo definido en el Service Contract).
El Data Contract es convertido en un XML Schema que contiene la estructura del objeto enviado o solicitado
por el servicio.
El Message Contract es convertido en un mensaje SOAP.

Ilustracin 2

Pgina 15

Policy y Binding
Los contratos de poltica y enlace (Policy y Binding) especifican informacin importante como la seguridad, el
protocolo y otra informacin, de manera que esto se verifica antes de que empiece con la comunicacin.

Service Runtime
El servicio Runtime es la capa que especifica y administra los comportamientos del servicio que ocurren durante la transferencia de informacin con los clientes.
La siguiente tabla muestra los diferentes comportamientos que son gestionados por la capa del servicio Runtime.
Comportamiento
Capacidad
Error
Metadatos
Instanciacin

Caractersticas
Determina el nmero de mensajes que se procesan.
Especifica que accin se tomar si se produce un error durante el
servicio Runtime.
Controla si los metadatos estn o no expuestos al mundo exterior.
Establece el nmero de instancias de un servicio.

Inspeccin de mensajes

Proporciona al servicio la capacidad de inspeccionar la totalidad o


una parte del mensaje.

Transacciones

Permite operaciones transaccionales, es decir, si un proceso falla


durante la ejecucin de un servicio, tener la capacidad de poder
deshacerlo.

Dispensador

Cuando un mensaje se ha procesado por la infraestructura WCF, se


determina la forma en que el mensaje est siendo manejado y procesado.

Concurrencia

Determina como cada uno de los servicios, o instancias, manejan hilos. Este comportamiento ayuda a controlar el nmero de hilos que
pueden tener acceso a una determinada instancia de un servicio.

Filtrado de parmetros

Permite filtrar la informacin contenida en la cabecera de los mensajes.


Tabla 1

Mensajes
La capa de mensajera define qu formatos y pautas de intercambio de datos pueden ser utilizados por el servicio de comunicacin. Las aplicaciones cliente pueden ser desarrolladas para acceder a esta capa y manejar
los detalles de mensajera y trabajar directamente con los mensajes y canales.
La siguiente tabla muestra los canales y componentes que forman parte de la capa de mensajera:

Componentes

Caractersticas

Canal de seguridad

Implementa la especificacin de la seguridad, estableciendo seguridad


en el mensaje.

Pgina 16

Canal fiable de mensajera

Garantiza la entrega del mensaje

Codificadores

Permiten elegir entre diferentes codificadores, para despus aplicarlos a


mensajes.

Canal HTTP

Establece que el servicio de entrega de mensajes se llevar a cabo a travs


del protocolo HTTP.

Canal TCP

Establece que el servicio de entrega de mensajes se llevar a cabo a travs


del protocolo TCP.

Canal del flujo de transacciones

Rige los patrones de los mensajes guiados por transacciones.

Canalizaciones con nombre

Permite comunicar procesos

Canal MSMQ

Canal utilizado por los servicios que interactan con el servicio de colas
de mensajes MSMQ.
Tabla 2

Activacin y Alojamiento
La capa de activacin y alojamiento ofrece diferentes opciones en las que un servicio puede ser iniciado, as
como alojado. Los servicios pueden ser alojados en el contexto de otra aplicacin o pueden ser auto alojados.
La siguiente tabla muestra las opciones de activacin y alojamiento proporcionados por esta capa:
Opciones

Caractersticas

Servicio de Activacin de Windows

Permite a las aplicaciones WCF que se inicien automticamente cuando se ejecutan en un equipo que tiene activo el servicio de activacin de Windows.

.EXE

WCF permite a los servicios que se ejecuten como archivos ejecutables (.exe)

Servicios de Windows

WCF permite a los servicios que se ejecuten como servicios de Windows.

COM+

WCF permite a los servicios que se ejecuten como aplicaciones COM+


Tabla 3

En resumen, si el alojamiento se realiza sobre IIS, tenemos la posibilidad de registrar nuestros servicios para
que la activacin de stos se produzca automticamente la primera vez que un cliente accede a ellos. Esto
quiere decir que si un mensaje llega a un servicio que no est activo, ste se activar automticamente.

Caractersticas de WCF
Transacciones
Una transaccin es una unidad de trabajo. Una transaccin se asegura que todo lo que la compone termine con
xito, si algo fallara, todo se deshace, es decir, todo o nada. Por ejemplo, si una transaccin contiene tres tareas
de trabajo para llevar a cabo, y durante la ejecucin de esta transaccin una de las tareas falla, entonces fallan
las tres. El xito de la transaccin slo suceder si todas las tareas que la componen terminan con xito. WCF
incorpora este mismo procesamiento de transacciones en su comunicacin.
Pgina 17

Alojamiento
WCF permite alojar servicios que se han alojado en un conjunto de diferentes entornos, tales como servicios
de Windows NT, Windows Forms, aplicaciones de consola y servicios de activacin de Windows.
El alojamiento de un servicio en IIS aade unos beneficios, como el poder manejar la puesta en marcha y la
parada de un servicio de manera automtica.

Resumen
Windows Communication Foundation es el siguiente paso de Microsoft en la creacin de aplicaciones orientadas a servicios y aplicaciones distribuidas.
Las aplicaciones distribuidas se vuelven cada da ms complejas, y es primordial que nuestros negocios estn
conectados. Esta globalizacin informtica requiere la interaccin y la conectividad entre diferentes plataformas e incontables dispositivos. Windows Communication Foundation fue concebido con el objetivo de simplificar el desarrollo de aplicaciones distribuidas.
Una de sus principales caractersticas es que cuenta con un modelo de programacin unificado. Es la unificacin de numerosas capacidades que antes podamos encontrar en distintas tecnologas. Esto nos libra de tener
que estar utilizando ms de una tecnologa para cumplir satisfactoriamente los requerimientos. De este modo,
los desarrolladores harn una tarea de una nica manera.
Las comunicaciones se enriquecen notablemente, ya que Windows Communication Foundation da la libertad
al desarrollador de utilizar mltiples transportes, distintos tipos de formatos de mensajes y diversos patrones
de mensajes.
La interoperabilidad es el plato fuerte de Windows Communication Foundation, ya que la comunicacin es
totalmente independiente de la plataforma. Los servicios utilizados son sobres de SOAP, cuyo contenido es
nada menos que XML. Windows Communication Foundation est basado en la arquitectura de Web Services
y utiliza los estndares establecidos.
El transporte es otra de sus cualidades fuertes, ya que ste se define con un protocolo neutral, de transporte
neutral y formato neutral. Esto quiere decir que los servicios pueden utilizar tanto HTTP como TCP u otro
mecanismo de transporte. Los desarrolladores tienen la posibilidad de agregar nuevos proveedores de transporte, y esto es indiferente al servicio. Windows Communication Foundation separa el cdigo del transporte, y de esta manera soporta distintos mtodos de comunicacin, sin representar esto una carga de trabajo
extra para el desarrollador.
En la siguiente ilustracin se muestra la estructura del Framework 3.0 donde ya est WCF.

Pgina 18

Ilustracin 3. Estructura del Framework 3.0

Aunque en la ilustracin se muestra el Framework 3.0, actualmente la versin ms reciente con la que contamos es el Framework 4.0 que incluye hasta el da de hoy algunas caractersticas como:
Nuevas funcionalidades de los compiladores de C#3.0 y VB.NET 9.0
Soporte para rboles de expansin y mtodos lambda
Mtodos de extensin
rboles de extensin para representar el cdigo de alto nivel en tiempo de ejecucin
Tipos annimos con inferencia de tipo esttico
Language Integrated Query (LINQ) contra diferentes orgenes.
Los cuatro componentes nuevos que se observan en la ilustracin son:
-

Windows Presentation Foundation (WPF) (Avalon). Nuevo subsistema de interfaces de usuario basado
en XML, grficos vectoriales que hacen uso de grficos 3D y tecnologas Direct3D.

Windows Communication Foundation (WCF) (ndigo). Sistema de mensajera orientado a objetos que
permite a las aplicaciones interoperar de manera local o remota de la misma forma que los servicios
Web.

Windows Workflow Foundation (WF). Permite construir flujos de trabajo para automatizar tareas y
transacciones.

Windows CradSpace (InfoCard). Componente software que almacena identidades digitales de personas y ofrece la posibilidad de elegir una identidad para ejecutar aplicaciones.

Por ltimo, vamos a exponer un ejemplo, para ver qu tipos de problemas puede resolver WCF.
Una compaa de alquiler de coches decide crear una nueva aplicacin para reservar los coches. Los creadores
de esta aplicacin de reserva de coches de alquiler saben que la lgica empresarial que implementa debe ser
accesible por otro software que se ejecute dentro y fuera de la compaa. De acuerdo con, esto, deciden integrarlo en un sitio orientado a servicios, con la lgica de la aplicacin expuesta a otro software a travs de un
conjunto bien determinado de servicios. Para implementar estos servicios y as comunicar con otro software, la
nueva aplicacin, utilizar WCF.

Pgina 19

Ilustracin 4. Ejemplo de aplicacin en WCF

Pgina 20

2.CONCEPTOS DE WCF
En ste captulo nos centraremos en los conceptos fundamentales de Windows Communication Foundation.n
el captulo anterior ya empezamos hablando de la mensajera, que es la capa encargada de definir los formatos
de intercambio de datos y que modelos pueden utilizarse en la comunicacin.
Tambin hablamos de servicio Runtime, capa encargada de especificar los comportamientos de los servicios o
extremos de comunicacin.
De manera que aqu, haremos un examen ms detallado de estos componentes, antes de seguir profundizando
en el mundo WCF y empezar a trabajar con l.
Vamos a ver ms en profundidad los siguientes conceptos:
Mensajes
Canales
Servicios
Comportamientos

Mensajes
En su definicin ms sencilla, podramos decir que un mensaje no es ms que un paquete de datos que contiene varias piezas de informacin importante que se est llevando desde un origen hasta un destino.
Las aplicaciones creadas usando WCF se comunican a travs de mensajes que se envan desde un origen hasta
un destino. Todos los mensajes son mensajes SOAP, en formato XML como sobres SOAP. El W3C define un
mensaje como La unidad bsica de comunicacin entre los nodos SOAP.
En el caso de WCF, estos nodos SOAP son servicios y extremos de comunicacin, que envan estos mensajes
SOAP de un lugar a otro con el fin del intercambio de informacin.
A continuacin vamos a analizar la estructura de un mensaje, los diferentes programas de mensajera y los
diferentes patrones que puede utilizar un mensaje para el intercambio de informacin.

Estructura de un mensaje
Como hemos comentado anteriormente, WCF utiliza nicamente los mensajes para el intercambio de datos, o
de informacin, de un punto a otro. Estos mensajes son poco ms que un paquete de datos que debe ajustarse
a un formato especfico.
En la siguiente ilustracin se muestra la estructura bsica de un mensaje.

Sobre SOAP
Encabezado SOAP
Cuerpo SOAP

Ilustracin 5. Estructura bsica de un mensaje SOAP

Pgina 21

Como se puede observar en la ilustracin, existen tres partes fundamentales en la composicin de un mensaje
SOAP.
El sobre SOAP
El encabezado SOAP
El cuerpo SOAP

El sobre SOAP
El componente exterior de un mensaje SOAP es la envoltura o sobre SOAP, aunque extremadamente importante, no es ms que el contenedor para las dos piezas ms importantes de un mensaje SOAP, el encabezado y
el cuerpo.
Un sobre SOAP contiene varias partes de informacin clave en forma de elementos. Entre stas se incluyen las
siguientes:
El nombre del sobre
El espacio de nombres
Un elemento opcional <header>
Un elemento necesario <body>
El espacio de nombres namespace debe empezar por http://www.w3.org/2003/05/soap-envelope
El siguiente fragmento de cdigo muestra la definicin bsica necesaria para la creacin de un mensaje SOAP.
<env:Envelope xmlns:s=http://www.w3.org/2003/05/soap-envelope
xmlns:a=http://schema.xmlsoap.org/ws/2004/08/addressing>
...
</env:Envelope>

Como se observa en el anterior fragmento de cdigo, contiene el nombre del sobre y el espacio de nombres. El
nombre viene dado como env: Envelope.

Cabecera SOAP
La cabecera SOAP es un conjunto de cero o ms bloques de cabecera. Es posible que un mensaje SOAP no contenga cabeceras, ya que es un elemento opcional, pero si incluimos una cabecera SOAP, sta debe ser el primer
elemento hijo que contenga el sobre, en el rbol xml.
La cabecera SOAP contiene informacin importante acerca de las cosas que pueden no estar relacionadas de
manera directa con el mensaje, adems de ser un lugar magnfico para poner toda aquella informacin opcional del mensaje.
El siguiente fragmento de cdigo muestra un claro ejemplo de ello:
<env:Envelope xmlns:s=http://www.w3.org/2003/05/soap-envelope
xmlns:a=http://schema.xmlsoap.org/ws/2004/08/addressing>
<env:Header>
</env:Header>
</env:Envelope>

El elemento cabecera debe contener un nombre de encabezado y el espacio de nombres http://www.w3.org/2003/05/soap-envelope si an no ha sido especificado en el sobre.

Cuerpo SOAP
El cuerpo de un mensaje SOAP es una coleccin de objetos de datos para ser utilizados con un objetivo especfico. Al igual que la cabecera SOAP, un mensaje puede contener cero o ms cuerpos.
Pgina 22

El cuerpo de un mensaje, es simplemente un elemento hijo del sobre en un rbol xml, que contiene toda la informacin necesaria para la comunicacin con el receptor.
Si en el fragmento anterior de cdigo aadimos el cdigo necesario se muestra un claro ejemplo de ello:
<env:Envelope xmlns:s=http://www.w3.org/2003/05/soap-envelope
xmlns:a=http://schema.xmlsoap.org/ws/2004/08/addressing>
<env:Header>
</env:Header>
<env:Body>
</env:Body>
</env:Envelope>

Cdigo fuente 1

De esta manera nuestro mensaje SOAP contiene nicamente una cabecera y un cuerpo SOAP.

Sobre SOAP
Encabezado SOAP
Cabecera de bloque: Orden
Cabecera de bloque: Comprador

Cuerpo SOAP
Sub-elemento: Precio
Sub-elemento: Cantidad
Sub-elemento: modelo

Ilustracin 6. Ejemplo de la estructura de un mensaje SOAP

La representacin XML de SOAP para este mensaje pude tener el siguiente aspecto:

<env:Envelope xmlns:s=http://www.w3.org/2003/05/soap-envelope
xmlns:a=http://schemas.mxlsoap.org/ws/2004/08/sddressing>
<env:Header>
<o:orden xmlns:o=http://www.Ejemplo.com/orden env:mustUnderstand=true>
<o:ordenreferencia>591aef96-0c0d-4534-a1d2-b910b0b6</o:ordenreferencia>
<o:ordenfecha>05/15/2010</o:ordenfecha>
</o:orden>
<p:Comprador xmlns:p=http://www.Ejemplo.com/comprador
env:mustUnderstand=true>
<p:nombre>Aroa Solana</p:nombre>
<p:numerotarjeta>1234-5678-9012-3456</p:numerotarjeta>
</p:Comprador>
</env:Header>
<env:Body>
<c:precio xmlns:c=http://www.Ejemplo.com/LibroPrecios>
<c:coste>
<c:precioalpormenor>49.99</c:precioalpormenor>
<c:precioalpormayor>39.99</c:precioalpormayor>
</c:coste>
</c:precio>
<q:Cantidad xmlns:q=http://www.Ejemplo.com/Cantidad>
<q:unidades>1</q:unidades>
</q:Cantidad>
</env:Body>
</env:Envelope>

Cdigo fuente 2

Pgina 23

Este mensaje SOAP contiene dos elementos que son especficos del sobre de un mensaje. Uno de estos elementos es opcional, la cabecera, y el otro que es necesario, el cuerpo del mensaje.
Cualquier elemento contenido dentro de la cabecera, se le denomina bloque de cabecera, que proporcionan
un agrupamiento lgico de datos. En el ejemplo, los dos bloques de cabecera, tanto el bloque para la orden
como para el comprador proporcionan informacin, aunque no necesaria, que puede ser til para el tratamiento de los elementos del cuerpo del mensaje.
Si seguimos mirando el ejemplo, vemos como estos bloques de cabecera contienen la informacin relativa al
nombre del comprador y el nmero de referencia.
Ahora, la pregunta ms importante sera: Qu tipo de informacin va en el bloque de cabecera y que informacin va
en el cuerpo?, esta responsabilidad recae directamente sobre nosotros y se decide en tiempo de diseo.
Cualquier informacin que se intercambia cuando el mensaje llega al destino va en el cuerpo del mensaje. En
el ejemplo, se incluyen dos tipos de informacin, el precio y la cantidad de ejemplares.
Ahora dependiendo de cmo el cliente y el servicio hayan sido codificados, el cliente puede o no esperar una
respuesta, al igual que el servicio puede o no enviar una respuesta. Si el cliente no espera una respuesta y el
servicio no enva ninguna respuesta, entonces toda la operacin se ha completado con xito. Pero si por el contrario queremos que exista una conformacin, de manera que el cliente espera una respuesta por parte del servicio y ste la enve, entonces quedara algo como esto:
<env:Envelope xmlns:s=http://www.w3.org/2003/05/soap-envelope
xmlns:a=http://schemas.mxlsoap.org/ws/2004/08/sddressing>
<env:Header>
<o:orden xmlns:o=http://www.Ejemplo.com/orden env:mustUnderstand=true>
<o:ordenreferencia>591aef96-0c0d-4534-a1d2-b910b0b6</o:ordenreferencia>
<o:ordenfecha>05/15/2010</o:ordenfecha>
</o:orden>
<p:Comprador xmlns:p=http://www.Ejemplo.com/comprador
env:mustUnderstand=true>
<p:nombre>Aroa Solana</p:nombre>
<p:numerotarjeta>1234-5678-9012-3456</p:numerotarjeta>
</p:Comprador>
</env:Header>
<env:Body>
<transporteInfo xmlns==http://www.Ejemplo.com/>
<Estado>xito</Estado>
<DiaEnvio>31/12/08</DiaEnvio>
<DiaLlegada>05/01/09</DiaLlegada>
</transporteInfo>
</env:Body>
</env:Envelope>

Cdigo fuente 3

Cuando el cliente recibe la respuesta, sabe que la orden fue realizada con xito. Aunque sera necesaria ms
informacin en un ejemplo real de pedidos de cualquier tipo, para ste ejemplo queda claro la manera en la
que hemos de colocar la informacin.

Programas de Mensajera
En WCF, los diferentes tipos de aplicaciones pueden enviar y recibir mensajes.
Se podran clasificar como sigue:
Clientes
Servicios
Intermediarios.
Pgina 24

Lo ms importante es entender que cada una de estas aplicaciones es muy singular de diferentes maneras,
nosotros como programadores, programamos los clientes y los servicios, pero no los intermediarios, por lo
tanto, debemos de ser conscientes que los roles de cliente y servicio disponen de funcionalidades diferentes.
Cmo es eso? Bueno, pensemos en lo que un cliente hace respecto a lo que un servicio proporciona. Un servicio nunca inicia una comunicacin, podr responder a solicitudes, pero nunca iniciar el flujo de la comunicacin. Por lo que el rol del cliente, sin duda alguna ser el de iniciar las conversaciones, es decir, el flujo de la
comunicacin y enviar el mensaje inicial.
A continuacin vamos a analizar un poco ms en profundidad cada uno de estos programas de mensajera.

Clientes
Despus de todo lo que hemos comentado, deberamos tener ms o menos una idea clara de lo que es un cliente. Pero por si acaso, vamos a profundizar un poquito ms sobre este tema.
Las aplicaciones utilizan los objetos cliente de WCF para poder invocar las operaciones de servicio. Es decir, es
la parte encargada de iniciar el flujo de comunicaciones con un mensaje inicial y espera respuestas por parte
del otro extremo de la comunicacin.

Ilustracin 7. Comunicacin entre un cliente y un servicio.

Como se observa en este ejemplo, el cliente es el que inicia la comunicacin a travs del envo de un mensaje
inicial al servicio, aunque ahora el cliente tambin puede recibir alguna respuesta por parte del servicio.

Servicio
Con lo que llevamos visto hasta ahora, podras definir lo que es un servicio?, bueno, te echar una mano.
Podramos decir que un servicio es un programa que recibe mensajes y realiza las acciones necesarias segn el
contenido del mensaje, dicho de otra forma, los servicios simplemente responden a los mensajes entrantes.
La recepcin de un mensaje implica la ejecucin de un cdigo, con otras palabras, que realice una determinada
accin. Estas acciones o comportamientos pueden ser diferentes y van desde la lectura/escritura en una base
de datos hasta la realizacin de operaciones de entrada/salida de algn fichero, incluso la realizacin de operaciones de mensajera como respuesta al cliente o el envo de un mensaje a otro servicio.

Ilustracin 8. Flujo de comunicacin entre aplicaciones.

Una de las cosas importantes que hay que destacar acerca de los servicios que sirven a mltiples clientes, es
que stos son completamente capaces de mantener el estado de cada sesin y mantener totalmente aisladas
cada una de las diferentes sesiones que mantengan. Dos clientes pueden llamar al mismo servicio al mismo
Pgina 25

tiempo, y que ste sea capaz de mantener el estado de la sesin para cada cliente de modo que las operaciones
de un cliente no intervengan o intercedan en las operaciones de los dems clientes.
Hay que destacar que un servicio puede actuar tambin como cliente y enviar mensajes a otros servicios en
respuesta a un mensaje, aunque hay que recordar que un servicio nunca puede iniciar la comunicacin, lo que
ocurre es que reacciona ante un mensaje y enva un mensaje a otro servicio. Por lo que cuando un servicio est
enviando un mensaje a otro, se podra decir que toma el rol de cliente.

Ilustracin 9. Como un servicio actual tambin de cliente

Intermediarios
Para terminar con el tema de programas de mensajera, nos queda un ltimo concepto, los intermediarios.
Un intermediario no es un servicio en una cadena de servicios, como en el ejemplo anterior, donde un servicio
actuaba tambin como cliente. De hecho, tanto el cliente como el servicio son desconocedores de la existencia
de intermediario alguno.
El intermediario, sin embargo, se establece entre el cliente y el servicio. De hecho no es necesario que un intermediario realice ninguna accin a travs del mensaje, podra nicamente observar el contenido del mensaje
aunque se haya diseado nicamente para que lo lea el servicio destino.
Bien, hasta ahora hemos echado un vistazo a la arquitectura de los mensajes y los diferentes tipos de programas de mensajera, ahora nos centraremos en los diferentes patrones de mensajera.

Patrones de Mensajera
Los patrones de mensajera bsicamente describen o establecen la manera en que se intercambia un mensaje
entre dos extremos.
Cuando un programa enva un mensaje, este debe cumplir con lo que se haya especificado en el patrn correspondiente para que el programa destino, es decir, aquel que recibe el mensaje sea capaz de entenderlo.
Hay tres modelos bsicos de mensajera que las aplicaciones pueden usar para intercambiar mensajes. Estos
patrones son los siguientes:
Simple
Dplex
Peticin-Respuesta

Simple
Con una operacin simple (unidireccional), solo se transmite un mensaje. El receptor no enva un mensaje de
respuesta, ni el remitente lo espera.
Cundo debemos utilizar el patrn de mensajera simple? En principio, deberamos utilizar este patrn en las
siguientes situaciones:
Pgina 26

Cuando el cliente debe llamar a las operaciones y no est afectado por el resultado de la operacin.
Cuando se usen las clases NetMsmqBinding o MsmqIntegrationBinding. (Para el uso de enlaces en cola
para la comunicacin entre equipos y enlaces que enven y reciban mensajes desde aplicaciones MSMQ
existentes que utilicen COM, API nativas de C++ o tipos definidos en el espacio de nombres System.Messaging)

Ilustracin 10. Comunicacin simple entre un cliente y un servicio.

En este escenario, el cliente inicia la comunicacin y enva un mensaje al servicio. El servicio consume el mensaje y realiza alguna accin, pero no comunica con el cliente. Cuando se utiliza este patrn de mensajera, el
cliente una vez que enva el mensaje, no espera ninguna respuesta, por ello tambin olvida que ha enviado
ningn mensaje.

Dplex
Si el cliente quiere una respuesta entonces utilizamos el patrn dplex de mensajera. Este modelo permite a
ambas aplicaciones una comunicacin abierta y el intercambio de informacin en ambos sentidos de manera
independiente.

Ilustracin 11. Comunicacin entre aplicaciones utilizando el patrn dplex.

Un fax sera un claro ejemplo de comunicacin dplex. Al enviar un fax a travs de la lnea telefnica, se establece una conexin e inicia una comunicacin de ida y otra de vuelta, enviando la informacin como una tasa
de baudios y recibiendo el estado.
Este envo de fax, enva el documento escaneado a la recepcin del otro fax y una vez que lo recibe le enva al
fax emisor la informacin de estado correspondiente.
El concepto de este patrn de mensajera es que ni la aplicacin emisora ni la aplicacin receptora esperan una
respuesta por parte de la otra aplicacin.

Peticin-Respuesta
A diferencia de la mensajera dplex, el modelo peticin-respuesta no permite la comunicacin bidireccional
de manera independiente. En este modelo, el cliente enva una respuesta y luego espera a la contestacin. El
servicio no comunica nada hasta que no recibe un mensaje.
Pgina 27

Ilustracin 12. Comunicacin entre aplicaciones utilizando el patrn peticin-Respuesta.

Un ejemplo de uso de este patrn sera cuando estamos navegando por la web. Cuando nosotros intentamos
acceder a la pgina http://Alhambra-Eidos.es nuestro navegador enva informacin a la URL, que solicita la
informacin de este sitio web. Sitio web que enva de vuelta la informacin solicitada.

Canales
Ahora hablaremos de los canales ya que estos desempean un papel central en la entrega de mensajes. Vamos
a ver este tema por varias razones, una de ellas porque a travs de ellos es por donde se hace efectivo el intercambio de mensajes. Un mensaje no puede ser enviado sin la creacin de un canal a travs del cual enviarlo.
Un canal, como se mencion, es el medio a travs del cual se intercambian mensajes. El canal es creado por el
cliente que especifique la direccin del servicio y el tipo de canal. Una vez que esta informacin se establece, el
canal ya est creado y abierto.

Ilustracin 13. Pasos que hay que tomar para crear un canal y enviar un mensaje

Los pasos a seguir para crear un canal y enviar un mensaje son los siguientes:
El cliente establece un canal para el servicio
El servicio acepta la peticin del cliente para abrir un canal
El cliente enva el mensaje a travs del canal
El servicio enva una respuesta al cliente a travs del canal
Hay que tener en cuenta que para que esto funcione el servicio siempre tiene que estar a la escucha de peticiones. Por ejemplo, el servicio podra estar a la escucha en http://PeticionServer/PeticionAceptada para peticiones. Esta es la direccin que el cliente va a utilizar para establecer un canal y enviar mensajes posteriores.
Asimismo, es responsabilidad del cliente disponer el cierre del canal una vez que se ha hecho uso de l y se
termine la comunicacin.

Pila de canales
Si volvemos a recodar lo que decamos en la introduccin, cuando hablbamos acerca de la Arquitectura
orientacin a servicios, uno de los grandes pilares de SOA es la interoperabilidad. Por encima de todo, es a
Pgina 28

travs de la pila de canales donde obtenemos las caractersticas adicionales que un mensaje necesita, tales como la seguridad y el enlace.
As que, Qu es una pila de canales? Pensemos en un canal como un pipe o un tubo. Cuando se enva un
mensaje desde el emisor hasta el receptor, el mensaje es enviado a travs del canal tubo. Ahora imaginemos
pegar una serie de tubos todos juntos, cada uno de estos realiza una funcin especfica que necesita el mensaje. Ahora tenemos una pila de canales.

Seguridad
Hay dos niveles de seguridad disponibles: la seguridad en el transporte y la seguridad en el mensaje. La seguridad en el transporte puede ser ofrecida por varios protocolos incluidos el HTTPS. La seguridad de los mensajes SOAP ofrecen una lista de funcionalidades, incluyendo la autenticacin, la integridad y la confidencialidad del mensaje y la auditora.

Interoperabilidad
Hemos hablado de la importancia de la interoperabilidad, y el rol que juega WCF en esto, es ms recalcamos la
importancia de poder comunicar con otras plataformas con una arquitectura orientada a servicios y de manera
distribuida.
Mediante la combinacin de diferentes componentes podemos construir un canal que comunique y opere con
otras plataformas sin problemas. Tenemos que tener en cuenta con que plataformas queremos interactuar.
Tenemos varias para elegir, entre las que se incluyen la interoperabilidad de MSMQ, .NET.
La interoperabilidad de MSMQ permite a nuestra aplicacin WCF comunicarse con nuestra instalacin de
MSMQ. La interoperabilidad de .NET nos permite comunicarnos con plataformas .NET en ambos extremos
del canal de comunicacin.
Los patrones de mensajera de los que ya hemos hablado, aunque brevemente, vimos como crear nuestro modelo de canal de menajes dependiendo de los patrones que tengamos disponibles. Ahora bien, tenemos que
tener en cuenta que cuando entra en juego la interoperabilidad, necesitamos saber el tipo de patrones de mensajera existentes en otras plataformas. Por ejemplo, estamos diseando nuestra aplicacin, con un patrn de
mensajera concreto, pero resulta que la plataforma con la que queremos interactuar no soporta dicho patrn,
sin ir ms lejos, MSMQ no realiza comunicaciones utilizando el patrn Peticin-Respuesta que tanto est de
moda.

Transportes
Windows Communication Foundation soporta cuatros transportes diferentes: HTTP, TCP, MSMQ, y Canalizaciones con nombre. Estos transportes son el medio en el que la comunicacin se lleva a cabo en un canal.
Algunos de estos transportes ya incorporan seguridad, otros no, por ejemplo HTTP tiene HTTPS. El transporte
HTTP es til cuando el estado de conexin no es necesario que se mantenga, como un navegador web cliente
comunicndose con un servidor web.
TCP es til cuando cobra importancia que nuestra comunicacin est orientada a la conexin. En este escenario, un periodo de sesiones de comunicacin entre los participantes se crea antes del intercambio de datos. Si
todos los participantes estn usando WCF, entonces los enlaces o las canalizaciones con nombre funcionarn
mejor. El transporte TCP en WCF est diseado especficamente para el escenario en el que ambos participantes utilicen WCF. Las canalizaciones con nombre son tiles entre procesos en una misma mquina. Puede ser
utilizado con protocolo simple (en un sentido) o con protocolo dplex entre procesos de una misma mquina.
Pgina 29

ste transporte debe ser utilizado cuando la comunicacin desde otra mquina se ha de evitar y la comunicacin entre aplicaciones WCF en la misma mquina se requiere.
El transporte MSMQ puede utilizarse cuando la entrega fiable de mensajes es obligatoria.
Como hemos de seleccionar el transporte adecuado, para ello tenemos que tener en cuenta el entorno de destino y las plataformas que podramos encontrarnos, sobre todo si nuestro canal cruza fronteras (un dominio
lmite, una frontera geogrfica, etc.).

Servicios
Windows Communication Foundation se compone de servicios y extremos que se comunican con los clientes,
independientemente de la plataforma. Sin embargo, como hemos visto, Windows Communication Foundation
ofrece la interoperabilidad con otras plataformas y adems permitiendo una extensin del mismo en muchas
reas.
Un servicio de WCF se compone de una descripcin y una coleccin de extremos, como se muestra en la siguiente ilustracin.

Ilustracin 14.Composicin de un servicio.

La descripcin de un servicio es bsicamente que funcionalidad proporciona el servicio y como puede ser accedido.
Desde fuera, un servicio contiene la descripcin del mismo y uno o ms extremos para comunicarse. Sin embargo, con un mayor detalle, podramos decir que tambin se compone de enlaces, de contratos de servicios y
el cdigo para implementar el servicio.

Ilustracin 15. Composicin de un servicio.

En la ilustracin anterior cada extremo tiene un enlace asociado, un contrato de servicio y su implementacin.
Aunque este ejemplo es muy simple, es muy posible que un servicio tenga varios extremos, mltiples contratos de servicios y mltiples enlaces. Cada extremo tiene una direccin nica que le distingue de los dems
Pgina 30

extremos para el mismo servicio. Por ello, la unin de cada servicio tambin ha de ser nico. Sin embargo los
contratos de servicio pueden ser compartidos entre los extremos.
Nos queda por ltimo ver una cosa, que consiste en explicar lo que ocurre cuando se ejecuta un servicio. Cmo
el servicio recibe un mensaje, se lleva a cabo la ejecucin del servicio, en qu momento del tiempo de ejecucin se crea la descripcin del servicio y su implementacin? Como vienen los mensajes?, lo primero que sucede es que se crea una instancia de la clase ServiceDescription.
El runtime tambin supervisa la entrega del mensaje. Por encima de todo esto est el ServiceHost. El ServiceHost es el responsable de proporcionar una serie de extremos, as como poner a disposicin el servicio de
comportamientos.
En cualquier punto un servicio puede encontrarse en uno de estos seis estados:
Creado
Apertura
Abierto
Cerrando
Cerrado
Predeterminado
Los extremos se han mencionado con relativa importancia en este tema, aunque todava nos queda bastante
por ver. Ahora sera un buen momento para empezar a profundizar en el tema.

Extremos
Piense en un servicio como en una coleccin de uno o ms extremos. Un servicio ha de tener al menos un extremo, de lo contrario, Qu har para poder comunicarse? Un extremo es el componente de un servicio que se
encarga de que ste pueda comunicarse con el cliente y poder proporcionarle las funcionalidades del servicio.
Por ejemplo, un extremo podra tener una direccin http://OrderServer/Order que utilice como enlace en el
transporte HTTP y sin seguridad. El contrato de servicio implementa la interfaz de servicio.
Destacar que en temas posteriores se tratar con mayor profundidad, el funcionamiento de los servicios, las
relaciones entre los extremos y sus correspondientes direcciones, enlaces, y los contratos.

Direcciones
Ms o menos tenemos una idea clara acerca de los extremos, y que estos estn dirigidos por sus direcciones.
Sin embargo, no hay que cometer el error de pensar que todos los servicios se alojan en IIS o que todos ellos
tienen una direccin http://..., porque no es correcto.
Varios factores determinan el formato de una direccin, como el trasporte utilizado y si se aloja o no el servicio
con IIS. Es perfectamente posible alojar un servicio utilizando TCP o MSMQ. Por ejemplo, si utilizamos un
servicio que est utilizando TCP, el prefijo sera net.tcp y la direccin sera lago como: net.tcp://localhost/Libro.

Enlaces
Los enlaces son lo que definen como un extremo se comunica con el mundo exterior. Cada extremo ha de tener
un enlace. El enlace, que es simplemente un conjunto de propiedades, define ciertos aspectos tales como los
patrones de transporte, los patrones de seguridad, y los patrones de mensajera. Un enlace al menos ha de especificar una cosa, el transporte.

Pgina 31

You might also like