Comunicación entre aplicaciones

02/11/2005 - 11:35 por Alamo | Informe spam
Buenas a todos.

Tengo una duda de diseño para mi proyecto a ver si me pueden ayudar.

La aplicación que voy a desarrollar será para plataforma Windows CE (CE .NET
o Pocket Pc 2003). La aplicación se conectará a un servicio web para
comunicarse con una central y realizar el envío y recepción de información.

Hasta ahí todo bien, pero me gustaría hacer lo siguiente:

En la parte móvil (WINDOWS CE.NET Ó POCKET PC 2003) tener la aplicación
dividida en dos, es decir una aplicación que muestra las pantallas de uso
para el usuario y trabaja con una base de datos local tipo SQLCE y otra que
se encarga de comunicarse con el web service y escribir los datos en la base
de datos local del dispositivo móvil.

Problema: Pues que ambas aplicaciones que se encuentran ubicadas en el
dispositivo móvil necesitan interactuar con la base de datos de forma
simultánea pero sin poder acceder al mismo tiempo ya que no está permitido.
(Las bases de datos sqlce en la máquina trabajan como un unico archivo al
que no se puede acceder de forma simultánea o por lo menos a mi no me deja)

Para ello he pensado en utilizar un archivo el cual funcione de semáforo
entre ambas aplicaciones, con el fin de controlar el acceso a la base de
datos de forma única por cada aplicación.

La pregunta: ¿Se le ocurre a alguien otra forma de hacer interactuar a ambas
aplicaciones con una única base de datos local a la máquina del tipo SQLCE?.

Otra opción sería utilizar el mismo web service que tengo para que ambas
puedan entrar a la base de datos local (siendo el web service la herramienta
semaforo) pero lo veo algo demasiado costoso y tedioso para lo que se
pretende además de que deseo eliminar las comunicaciones de la parte de
formularios.

Espero haberme explicado con claridad.

Saludos y Gracias,

Alamo.
 

Leer las respuestas

#1 Leonardo Azpurua [mvp vb]
02/11/2005 - 16:22 | Informe spam
Hola, Alamo:

Parece un caso tipico de diseño multicapas.

¿La aplicacion encargada de la comunicacion debe ser totalmente autónoma?

Mejor que un "archivo semaforo" (lo intenté alguna vez, y cuando falla -que
falla- es terrible) es que manejes las excepciones resultantes de los
conflictos de acceso:

Private Const MAX_RETRIES As Integer = 120
Dim errCount as Integer = 0, ok As Boolean = False

Do
Try
... intentas acceder a la BD SQLCE
ok = True
Catch ex As Exception
errCount += 1
End Try
Loop While errCount < MAX_RETRIES And Not ok

If Not ok Then
Throw New Exception("Error en intento de hacer tal cosa")
End If

Probablemente necesites ponerle un poco mas de inteligencia al manejo de
excepciones (no tiene caso que intentes 120 veces dividir un numero entre
cero, por ejemplo).

"Alamo" escribió en el mensaje
news:
Buenas a todos.

Tengo una duda de diseño para mi proyecto a ver si me pueden ayudar.

La aplicación que voy a desarrollar será para plataforma Windows CE (CE
.NET o Pocket Pc 2003). La aplicación se conectará a un servicio web para
comunicarse con una central y realizar el envío y recepción de
información.

Hasta ahí todo bien, pero me gustaría hacer lo siguiente:

En la parte móvil (WINDOWS CE.NET Ó POCKET PC 2003) tener la aplicación
dividida en dos, es decir una aplicación que muestra las pantallas de uso
para el usuario y trabaja con una base de datos local tipo SQLCE y otra
que se encarga de comunicarse con el web service y escribir los datos en
la base de datos local del dispositivo móvil.

Problema: Pues que ambas aplicaciones que se encuentran ubicadas en el
dispositivo móvil necesitan interactuar con la base de datos de forma
simultánea pero sin poder acceder al mismo tiempo ya que no está
permitido. (Las bases de datos sqlce en la máquina trabajan como un unico
archivo al que no se puede acceder de forma simultánea o por lo menos a mi
no me deja)

Para ello he pensado en utilizar un archivo el cual funcione de semáforo
entre ambas aplicaciones, con el fin de controlar el acceso a la base de
datos de forma única por cada aplicación.

La pregunta: ¿Se le ocurre a alguien otra forma de hacer interactuar a
ambas aplicaciones con una única base de datos local a la máquina del tipo
SQLCE?.

Otra opción sería utilizar el mismo web service que tengo para que ambas
puedan entrar a la base de datos local (siendo el web service la
herramienta semaforo) pero lo veo algo demasiado costoso y tedioso para lo
que se pretende además de que deseo eliminar las comunicaciones de la
parte de formularios.

Espero haberme explicado con claridad.

Saludos y Gracias,

Alamo.

Preguntas similares