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:

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 !

Respuesta Responder a este mensaje
#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:

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:

> 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 !
>
Respuesta Responder a este mensaje
#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:
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:

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:

> 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 !
>
Respuesta Responder a este mensaje
#4 Esteban Yanson
03/05/2007 - 16:29 | Informe spam
Gracias por tomarte el tiempo de contestarme.


"Daniel A. Calvin - Cooperator Team" wrote:

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:
> 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:
>
>> 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:
>>
>> > 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 !
>> >



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida