Microsoft Certified Professional

Anuncio
7/25/2006 7:21 PM
Desarrollo de Aplicaciones Distribuidas con
Servicios Web
Tema 03 – Configuración
de Servicios Web
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
[email protected]
1
Agenda
Formato de SOAP
SOAP Extensions
SOAP Headers
Llamadas asíncronas
Mejoras de Framework 2.0
2
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
1
7/25/2006 7:21 PM
Objetivos
Tener la capacidad de configurar el formato de
los mensajes SOAP
Configurar la forma en que se ejecuta un
Servicio Web modificando los archivos de
configuración
Configurar la serialización de XML
Tener la capacidad de trabajar con tipos de
datos personalizados
Poder pasar tipos de datos complejos entre el
Servidor y el cliente
Explicar porque son necesarias llamadas
asíncronas en los clientes
3
Formato de SOAP
Sobre (Envelope
(Envelope))
Cabecera (Header)
Cuerpo (Body)
Mensage (Función)
Parámetros (Tipos de datos)
4
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
2
7/25/2006 7:21 PM
Formato de SOAP
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
soap:Body>
<x:TransferFunds xmlns:x="urn:examples
xmlns:x="urn:examples--org:banking">
<from>22
>
from>22--342439</from
342439</from>
<to>98
>
to>98--283843</to
283843</to>
<amount>100.00</
amount>
>
amount>100.00</amount
</x:TransferFunds
>
</x:TransferFunds>
</soap:Body
>
</soap:Body>
</soap:Envelope
>
</soap:Envelope>
5
Formato de SOAP
Esta formado por XML
Es una forma de transportar objetos y sus
propiedades de y hacia XML
SOAP provee una gran flexibilidad para la
conversión de objetos
Se puede formatear de diferente forma:
Los parámetros que contiene el Body
El formato mismo de Body
6
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
3
7/25/2006 7:21 PM
Formatos de SOAP
Parámetros
Literal. Formatea los parámetros de acuerdo a
un esquema XSD.
Codificado. Formatea los parámetros de
acuerdo a las reglas de codificación de la
sección 5 de SOAP.
BODY
Document Based. Los parámetros pueden
separarse en elementos. Wrapped o Bare
RPC Based. Todos los parametros estan
dentro un elemento. Sigue las reglas de la
sección 7 de SOAP.
7
Combinaciones de Formato
Document based body + Literal params
Document based body + Enconded params
RPC based body + Enconded params
8
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
4
7/25/2006 7:21 PM
Usando parámetros Literales
Document based body + Literal params
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema
xmlns:xsi="http://www.w3.org/2001/XMLSchema--instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
soap:Body>
<BuscarPorTitulo1 xmlns="http://certificacionIII.upb/">
xmlns="http://certificacionIII.upb/">
<Titulo>geo</
Titulo>
>
Titulo>geo</Titulo
</BuscarPorTitulo1
>
</BuscarPorTitulo1>
</soap:Body
>
</soap:Body>
</soap:Envelope
>
</soap:Envelope>
9
Usando parámetros Codificados
Document based body + Enconded params
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://certificacionIII.upb/"
xmlns:tns="http://certificacionIII.upb/"
xmlns:types="http://certificacionIII.upb/encodedTypes"
xmlns:types="http://certificacionIII.upb/encodedTypes"
xmlns:xsi="http://www.w3.org/2001/XMLSchema
xmlns:xsi="http://www.w3.org/2001/XMLSchema--instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encodi
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encodi
ng/"><types:BuscarPorTitulo1
>
ng/"><types:BuscarPorTitulo1>
>geo</Titulo
Titulo>
>
<Titulo xsi:type="xsd:string"
xsi:type="xsd:string">geo</
</types:BuscarPorTitulo1
>
</types:BuscarPorTitulo1>
</soap:Body
></soap:Envelope
soap:Envelope >
</soap:Body></
10
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
5
7/25/2006 7:21 PM
¿Qué formato debemos usar?
Dependiendo con el entorno con el que
vamos a interoperar
Cuando trabajemos con clientes que no
sean de .NET
Para volver la mensajería de nuestro
servicio más flexible
Usar parámetros codificados cuando los
clientes necesiten información de los tipos
de datos
11
Comparación de Formatos
800
700
600
500
Bytes 400
300
200
100
0
Literal
Encoded
Solicitud
Respuesta
Existe una diferencia porcentual del 92%
en las solicitudes y 58% en las respuestas
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
12
6
7/25/2006 7:21 PM
Atributos SoapDocumentService
SoapDocumentMethod
Indica que el Servicio Web o un método
esta formateado con Document-Based
Parámetros importantes:
Use=SoapBindingUse.Literal (Encoded)
ParameterStyle=SoapParameterStyle.Wrapped
OneWay
13
Atributos SoapRpcService
SoapRpcMethod
Indica que el Servicio Web o un método
esta formateado con RPC-Based
Parámetros importantes:
OneWay
14
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
7
7/25/2006 7:21 PM
Atributo XmlElement
Permite especificar los detalles de bajo
nivel del Formato SOAP. Sus parámetros:
DataType
ElementName
Form
IsNullable
Namespace
Type
public List<
List<Libro>
Libro> BuscarPorTitulo1(
[XmlElement(ElementName
="t")]
string Titulo)
XmlElement(ElementName=
t")]string
Titulo)
15
Atributo XmlIgnore
Permite indicar que campos no deben ser
serializados en objetos que se
intercambian mediante los servicios Web
Permite reducir la cantidad de información
que se envía a través de la red
16
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
8
7/25/2006 7:21 PM
SOAP Extensions
Permiten modificar los mensajes SOAP
entre el cliente y el servidor
Nos permite insertar nuestro propio código
en los mensajes SOAP
Deben de distribuirse en pares tanto en el
cliente como en el servidor
17
SOAP Extensions
3
4
1
2
Aplicación
Servicio Web
Deserializar
Serializar
SOAP
Deserializar
2
Serializar
1
4
3
Podemos poner nuestro código en los
siguientes puntos:
1.
2.
3.
4.
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
Antes de Deserializar
Después de Deserializar
Antes de Serializar
Despues de Serializar
18
9
7/25/2006 7:21 PM
Ejemplo
Desea implementar un servicio Web que
envié los mensajes SOAP codificados. No
puede usar SSL ni tampoco WSE.
1.
2.
3.
4.
5.
Derivar una clase de SoapExtension
Implementar los métodos GetInitializer e
Initialize para manejar parámetros de inicio
Implementar el método ChainStream para
interceptar el mensaje antes de serializar y
deserializar
Implementar el método ProcessMessage
para trabajar con el mensaje SOAP
Derivar una nueva clase de
SoapExtensionAttribute
19
¿Cuándo usar extensiones SOAP?
Para implementar codificación en los
mensajes SOAP
Para firmar digitalmente y verificar los
mensajes SOAP
Para realizar el control de tráfico
Para monitorear nuestra aplicación
20
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
10
7/25/2006 7:21 PM
¿En el cliente o en el servidor?
Depende. La arquitectura de SOAP es
flexible y permite aplicar una extensión
donde corresponda
Sólo en el servidor
Sólo en el cliente
En ambos
21
Attributo Priority
Nos permite determinar en que prioridad u
orden se van a ejecutar las extensiones
SOAP
22
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
11
7/25/2006 7:21 PM
SOAP Headers
Sobre (Envelope
(Envelope))
Cabecera (Header)
Cuerpo (Body)
Mensage (Función)
Parámetros (Tipos de datos)
23
SOAP Headers
SOAP tiene un elemento opcional Header
que puede contener información adicional
La información no necesariamente esta
relacionada con el contenido del mensaje
SOAP
No existe una definición exacta de lo que
puede contener un SOAP Header
24
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
12
7/25/2006 7:21 PM
SOAP Headers
Una cabecera SOAP puede contener:
Información del enrutamiento del Mensaje
Firma digital del mensaje SOAP
Información relacionada a la autentificación
Nombre de Usuario y Contraseña
25
Definición de SOAP Headers
1 . Su clase debe heredar de SoapHeader
public class MySession : SoapHeader
{
public DateTime Created;
public long Expires;
}
2. Definir una atributo del tipo de su
cabecera SOAP dentro la clase del SW
public MySession timeStamp;
timeStamp;
26
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
13
7/25/2006 7:21 PM
Definición de SOAP Headers
3. Debe de usar el atributo SoapHeader
[WebMethod]
WebMethod]
[SoapHeader(
SoapHeader("timeStamp"
"timeStamp")]
public void MyWebMethod()
MyWebMethod()
{ }
27
Procesamiento de SOAP Headers
El cliente puede enviar y recibir SOAP
Headers
Las clases correspondientes a los SOAP
Headers estan incluidas en las clases
proxy
MySession mySoapHeader = new MySession();
MySession();
mySoapHeader.Created = DateTime.Now
;
DateTime.Now;
mySoapHeader.Expires = 20;
MyWebService proxy = new MyWebService();
MyWebService();
proxy.MySessionValue = mySoapHeader;
mySoapHeader;
28
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
14
7/25/2006 7:21 PM
Dirección de un SOAP Header
Por defecto un SOAP Header es enviado
del cliente al servicio Web
Puede ser enviado:
Del cliente al servicio Web
Del servicio Web al Cliente
En ambos sentidos
Para cambiar la dirección usar el
parámetro:
Direction=SoapHeaderDirection.InOut
29
Manejo de SOAP Headers
desconocidos
El cliente puede enviar al servicio Web una
cabecera SOAP que espera pero que no
esta definida explícitamente.
30
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
15
7/25/2006 7:21 PM
Ejemplo
Usted ha escrito un servicio Web para
intercambiar información financiera con
sus clientes. Por restricciones de
seguridad, requiere que cada vez que un
cliente haga una llamada a su servicio
Web se autentifique con un nombre de
usuario y contraseña válidos, sólo en este
caso el servicio Web será capaz de
procesar la solicitud del cliente.
31
Manejo de Estado
A nivel de aplicación
A nivel de sesión
Usando cookies
¿Cuál es el mejor manejo de estado en un
Servicio Web?
32
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
16
7/25/2006 7:21 PM
Mejoras en el Framework 2.0
APIs de alto nivel para
exponer y consumir
Servicios Web (p.e
(p.e..
[WebMethod])
WebMethod])
Modelo de Programación
De los Servicios Web
Puntos de extensibilidad
expuestos por los
Servicios Web y la
serializació
serialización de XML
Extensibilidad
Servicios de
infraestructura provistos
para el despliegue y la
conectividad
Infraestructura
33
Ejemplo NetTunes
NetTunesClient
NetTunes
WinForm
IIS - ASMX
Search
Buy and
Download
Set Alert
Search
Order
Download
Song
List
Set Alert
AlertsApplication
MakeSongAvailable
WinForm - HttpListener
Console
Song Available
Songs
Notify Clients
34
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
17
7/25/2006 7:21 PM
Mejoras en el Modelo de
Programación
Modelo de Programación
35
Basic Profile Conformance
WS-I Basic Profile es
Un conjunto interoperable de SOAP, WSDL y
HTTP
Definido por la organización de
Interoperabilidad de Servicios Web
Fuertemente respaldado por todos los
vendedores de Servicios Web
¿Qué es Basic Profile Conformance?
Un conjunto de reglas especificadas por
profile básico a las cuales un Servicio Web
debe adherirse.
PE: No usar codificación SOAP.
36
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
18
7/25/2006 7:21 PM
Uso de BP en los Servicios Web
Los servicios Web creados por VS 2005
están conformados por defecto.
Fuera de servicio, no se necesita hacer nada
extra.
Estar alerta de la operaciones que no permite
BP
Se generarán avisos relacionados a BP en
los servicios Web
Los avisos están en la página de ayuda de los
servicios Web.
Simplemente migrando a VS 2005 sabrá si
sus servicios Web son compatibles
37
Uso de BP en los Clientes
Wsdl.exe verificará el WSDL para verificar
la compatibilidad y emitirá avisos
Le permitirá saber si el WSDL que esta
usando esta conformado con BP
Los clientes conforman con BP por defecto
A menos que exista algo en el WSDL que
prevenga este hecho como codificación de
SOAP
38
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
19
7/25/2006 7:21 PM
Valores Genéricos y Nulos
Tipos de datos Genéricos son soportados
por los Servicios Web
Los proxies del servicio web no usarán tipos
de datos genericos
Nullable<T>
Permite valores nulos
Mapea a nullable=‘true’ en el esquema XML
Muy útil cuando no se usa WSDLs de .NET
39
Generación de clases Proxy
Modelo de programación asíncrono basado en
eventos
Llamar a XxxAsync y manejar el evento
XxxCompleted
El manejador del evento es llamado en el mismo
proceso usado por el mé
método así
asíncrono.
Usar en lugar de BeginXxx,
BeginXxx, EndXxx
Propiedades en lugar de atributos
Para fortalecer el enlace a datos
Tipos compartidos a través de los proxies
Detecció
Detección automá
automática de esquemas equivalentes y se
genera un tipo compartido
El algoritmo compara nombre/namespace
nombre/namespace y la
equivalencia de tipos
40
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
20
7/25/2006 7:21 PM
Ejemplo
Realizar una llamada asíncrona usando el
servicio Web de NetTunes
41
Soporte de SOAP 1.2
SOAP 1.2 es soportado como el nuevo
protocolo
En el lado del servidor
Puede soportar ambos SOAP 1.1 y SOAP 1.2
Se puede habilitar y deshabilitar mediante el
web.config
En el lado del cliente
Wsdl.exe tiene un parámetro para SOAP12
/protocol
Las clases Proxy tienen una propiedad que
maneja la versión. SoapProtocolVersion
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
42
21
7/25/2006 7:21 PM
Características de
Extensibilidad
Extensibilidad
43
IXmlSerializable
IXmlSerializable disponible desde .NET
Framework 1.0 pero no documentado y
específico a los DataSets
.NET Framework 2.0 crea
[XmlSchemaProvider]
Usado con IXmlSerializable para indicar el
método estático invocado para generar el
esquema
IXmlSerializable.GetSchema NO es usado
ReadXml y WriteXml son llamados en
tiempo de ejecución para serialización
imperativa
44
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
22
7/25/2006 7:21 PM
Ejemplo de serialización
personalizada con
IXmlSerializable
45
Extensiones para importar
Esquemas
Un SchemaImporterExtension es
Nueva clase abstracta que permite
generación de código personalizada al
momento de importar esquemas.
Las extensiones heredan de la clase base
e implementan una comparación de
esquemas
Opciones de comparación de esquemas
Namespace
Element
Shape matching
46
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
23
7/25/2006 7:21 PM
Extensiones para importar
Esquemas
Las extensiones pueden ser agregadas
progamaticamente o mediante el archivo
de configuración
A nivel de aplicación y a nivel de máquina
Llamados en el momento de generar la
clases proxy del código de los esquemas y
el WSDL
Las extensiones son invocadas en el orden de
su configuración.
47
Mejoras en la Infraestructura
Infraestructura
48
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
24
7/25/2006 7:21 PM
Pre generar ensamblados de
Serialización
Problema
Los serializador de XML generan
ensamblados en tiempo de ejecución para
serializar tipos
Existe un cierto percance en generar estos
ensamblados
Solución
Una nueva herramienta (sgen.exe) permite
pre generar estos ensamblados en desarrollo
o en tiempo de despliegue
49
Información de la Red
Permite a las aplicaciones proveer una mejor
experiencia al usuario estando más alertas de
las condiciones de la red
Provee notificaciones en forma de eventos
cuando ocurren cambios en la Red
P.E.
P.E. direcciones cambian, el cable se desconecta, etc.
Provee un API de enumeración de tarjetas en la
máquina.
P.E.
P.E. Es Ethernet,
Ethernet, dialdial-up, wireless?
wireless?
Obtener estadí
estadísticas de IP, TCP, UD
Abrir conexiones, escuchar puertos, etc.
50
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
25
7/25/2006 7:21 PM
Ejemplo
Detectando y reaccionando a los cambios
de la Red
51
Alojando Servicios Web en el Escritorio
Frecuentemente los servicios Web son
requeridos en aplicaciones de escritorio
P.E. Dos aplicaciones de escritorio
comunicándose a través del la Red
P.E. Una aplicación de escritorio que expone
un servicio esperando una respuesta
Con el .NET Framework 2.0 puede alojar
servicios Web sin IIS
HttpListener usa http.sys
Disponible en Windows Server 2003 y
Windows XP SP2
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
52
26
7/25/2006 7:21 PM
Vista detallada de las Alertas
AlertsApplication
.NET Remoting IPC call
WinForm
Alerts UI
AppDomain
Hidden Form
MakeSongAvailable
Console
Notification.asmx
AppDomain
Song Available
Notify Clients
Song
List
HttpListener
http.sys
53
Ejemplo
Alojar un Servicio Web en una aplicación
de escritorio
54
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
27
7/25/2006 7:21 PM
Compresión de la respuesta de HTTP
IIS en windows server 2003 soporta
compresión de la respuesta de HTTP
Muy útil en escenarios donde el ancho de
banda signifique una inversión muy grande.
Mejora el rendimiento en entornos con ancho
de banda limitado
.NET Framework 2.0 soporta
descompresión
Puede habilitar la descompresión en las
respuestas del servicio web
55
Descubrimiento automático
del Proxy
Permite que el código manejado detecte
automáticamente la configuración del
proxy
Implementación Integrada
Comparte configuraciones usadas por IE
Detecta los cambios de proxy en tiempo de
ejecución
56
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
28
7/25/2006 7:21 PM
Arquitectura del cliente
(Basada en un cliente de ASP.NET)
Clases Proxy
SoapHttpClientProtocol
HttpWebClientProtocol
WebClientProtocol
IIS
57
Arquitectura del servidor
(Basada en ASP.NET y Serializació
Serialización de XML)
IIS
ISAPI Filters
ASP.NET Runtime
HTTP Module
HTTP Module
Web Service Request Handler
SOAP Extension
SOAP Extension
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
IIS maneja la solicitud
Aspnet_isapi.dll direcciona la
solicitud asmx
ASPNET WP procesa la solicitud
(HttpRuntime)
HttpRuntime)
La solicitud es manejada por un
objeto HttpApplication,
HttpApplication, seguido de
todos los mó
módulos registrados
HttpModule
Luego HttpRuntime deriva la solicitud
a WebServiceHandler quien procesa
la solicitud del Servicio Web
WebServiceHandler usa reflection
para convertir los mensajes SOAP
en mé
métodos
58
29
7/25/2006 7:21 PM
Orientación a Objetos Vs
Orientación a Servicios
Asume un ambiente de
ejecució
ejecución y plataforma
homogé
homogéneas
Comparte tipos
Comunicació
Comunicación barata
Objetos está
están enlazados
(identidad y ciclo de vida)
Fácil de modelar
No existe un manejo de
estado
Su objetivo es usar funciones
y tipos transparentemente
Asume un ambiente de
ejecució
ejecución y plataforma
heterogé
heterogéneas
Comparte esquemas
Comunicació
Comunicación con costo
variable
Servicios son autó
autónomos
(seguridad y aislamiento)
Modelado en base a
componentes
Posee y Mantiene su estado
Su objetivo es proveer
aislamiento de servicios e
interoperar en base a
está
estándares
59
Rendimiento y Escalabilidad
Llamadas frecuentes pueden ser costosas
Elección impropia de tipos de datos. En lo
posible usar los tipos de datos primitivos.
Serializar grandes cantidades de datos
puede incidir en el rendimiento. Usar
compresión de información
Elección impropia del formato de
codificación
Ausencia o manejo erróneo de Cache
Manejo de estado ineficiente
60
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
30
7/25/2006 7:21 PM
Rendimiento y Escalabilidad
Abuso de multi procesos. PE. Usar
llamadas asíncronas sin necesidad
Procesamiento ineficiente de los métodos
del servicio Web. Validar en base a
esquemas, buen manejo de excepciones
61
Consideraciones de Diseño
Diseñar interfases sólidas
Sus métodos expongan varios parámetros
Crear un servicio Web que encapsule varios
objetos
Preferir un modelo de programación
basado en mensajes
Serv.SendItemsToBePurchased(Array[]
Serv.SendItemsToBePurchased(Array[] items);
Serv.ShippingAddress(string Address);
Serv.CheckOut();
Serv.CheckOut();
string msg = "<Items>…
"<Items>…</Items>";
MyMethod(msg);
MyMethod(msg);
62
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
31
7/25/2006 7:21 PM
Consideraciones de Diseño
Usar codificación Literal para los
parámetros
Usar tipos de datos primitivos para los
parámetros de los métodos de los SW
Strongly typed. P.E double, int, Libro
Loosely typed. De tipo string.
Para información grande IXmlSerializer
Evitar mantener el estado en el servidor
Validación de los datos de entrada para
métodos costosos
63
Consideraciones de Diseño
Use el cache
ASP.NET output caching
HTTP response caching
ASP.NET application caching
Considere transferir información y datos
adjuntos en masa
Chunking
Offloading the transfer
Compresión
64
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
32
7/25/2006 7:21 PM
Consideraciones de Diseño
Para el manejo de datos adjuntos
WS-Attachments
Base 64 enconding
Evitar llamar servicios Web localmente
Comparte el mismo conjunto de procesos con
ASP.NET
No tiene efecto el atributo maxconnection
65
Consideraciones de
Implementación
Tiempos de respuesta
Cantidad de datos que se pueden
transmitir
Manejo de recursos
66
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
33
7/25/2006 7:21 PM
Comunicación en un solo
sentido
Fire and forget. Considere usar una
llamada en un solo sentido cuando no
requiera recibir una respuesta. OneWay
67
Métodos asíncronos
Los servicios Web de ASP.NET soportan
métodos asíncronos
[WebMethod]
WebMethod]
IAsyncResult BeginDownloadSong(AsyncCallback
BeginDownloadSong(AsyncCallback callback,
Object obj)
obj)
{
}
[WebMethod]
WebMethod]
byte[]
byte[] EndDownloadSong(IAsyncResult
EndDownloadSong(IAsyncResult Result )
{
}
68
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
34
7/25/2006 7:21 PM
Métodos asíncronos
Considere usar llamadas asíncronas si
ejecuta operaciones de entrada y salida
como:
Accediento a flujos de datos (Streams)
Operaciones con archivos I/O
Llamar a otro servicio web
69
Llamadas asíncronas
El cliente de un servicio Web puede llamar
sincrona o asíncronamente a un Servicio
Web independientemente de su
implementación
Considera hacer llamadas asíncronas
cuando tenga un procesamiento adicional
paralelo
Cuando tenga que llamar a varios
servicios Web que no estén relacionados
Para mejorar la respuesta al usuario de su
interfaz gráfica
70
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
35
7/25/2006 7:21 PM
Resumen
.NET Framework 2.0 provee muchas solución
convincentes para los problemas de
aplicaciones distribuidas que se presentan hoy
en día.
Las soluciones están dentro de tres
Modelo de Programació
Programación
Mejorando la productividad del desarrollador
Extensibilidad
Le brinda má
más control sobre el .net framework
Infraestructura
Hace má
más fá
fácil que nunca desplegar aplicaciones robustas
71
Referencias
Chapter 5 Advanced Web Services.
Developing XML Web Services and Server
Components with Visual C#
Using SOAP Headers
http://msdn2.microsoft.com/enus/library/77hkfhh8.aspx
Improving Web Services Performance
http://msdn.microsoft.com/library/default.asp?
url=/library/enus/dnpag/html/scalenetchapt10.asp
72
Ing. Javier Aranda Pantoja
Microsoft Certified Professional
36
Descargar