Manejo de transacciones OnLine/OffLine utilizando SoapExtension

26/04/2007 - 18:46 por Esteban Yanson | Informe spam
Quiero saber si existe alguna forma de abortar un request a un web service
desde adentro de un SoapExtension pero sin que me genere una excepción como
lo hace el método "SoapClientMessage.Client.Abort"

Ejemplo:
- La aplicación cliente llama al método "XXX" de un web service.
- Se invoca el método en la clase proxy.
- Se invoca el método ProcessMessage de la clase derivada de SoapExtension.
- Alli adentro yo determino si estoy OnLine u OffLine con el server. En el
caso de estar OnLine sigue el proceso normalmente. En el caso de estar
OffLine quiero poder guardar el Xml en una base local, abortar la llamada al
server y responderle a la aplicación cliente que terminó todo bien.

El problema es que la única forma de abortar la conexión con el servidor es
con "SoapClientMessage.Client.Abort" pero este método me genera una excepción
por que así esta programado el framework.
Yo no quiero que me genere la excepción por que no quiero que la aplicación
cliente se entere de que hay o no conexión. Quiero que sea transparente.

Intenté cambiar la url para que apunte a una local, pero fue inútil por que
la propiedad es readonly.

Alguien tiene idea que se puede hacer?
Se les ocurre otra alternativa?

Gracias !

Preguntas similare

Leer las respuestas

#1 Daniel A. Calvin
27/04/2007 - 20:36 | Informe spam
Hola Esteban

Podrías hacerlo escribiendo tu propio proxy y trapeando esas exceptions que
no quieres que lleguen a la aplicación principal.

La froma mas facil es generar el proxy desde linea de comando, modificarlo
según tu necesidad y que tu aplicación referencie este proxy y no el genrado
automaticamente por visual studio.

De esa forma tenés mucho mas control de la situación.

Es bastante simple de hacer, preguntame si hay algo que no explique
claramente.
Daniel A. Calvin
MCP


"Esteban Yanson" wrote:

Mostrar la cita
#2 Esteban Yanson
27/04/2007 - 23:06 | Informe spam
Entiendo, pero me surgen 2 cosas.
1) Para disparar un exception, el framework se toma sus lindos milisegundos.
Esto me perjudicaría un poco a la performance. ¿Qué opinas?
2) ¿Por qué decís que es mejor hacer el proxy desde la línea de comando?

Gracias


"Daniel A. Calvin" wrote:

Mostrar la cita
#3 Daniel A. Calvin - Cooperator Team
30/04/2007 - 03:29 | Informe spam
Veamos

1) Es tiempo, pero es confiable, podes trapear por tipo, tomar la descicón
adecuada en función de eso.

2) Al generar el proxy desde la linea de comando lo generado es el fuente
del proxy.
Podes agregar lo que quieras en el y en el lugar que prefieras.
Podes interceptar todas la s execeptions y darles el tratamiento que mejor
necesites.
Eso lo logras con total transparencia.
La aplicación cliente solo referencia al proxy compilado en una assembly
separado, eso te da mucha flexibilidad, y no conoce nada sobre el manejo que
estas haciendo de las exceptions que capturas, solo de las que reenvias o no
manejas.

Solo eso.


Daniel A. Calvin
Cooperator Team Member
http://www.cooperator.com.ar
Microsoft Certified Professional



"Esteban Yanson" escribió en el
mensaje news:
Mostrar la cita
#4 Esteban Yanson
03/05/2007 - 16:29 | Informe spam
Gracias por tomarte el tiempo de contestarme.


"Daniel A. Calvin - Cooperator Team" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida