RE:Para Antonio & alberto
una arquitectura orientada a servicios interesante (para tomar como base) es la que tiene el framework KODIGO, en el que los servicios son cargados exclusivamente cuando van a ser utilizados.
pero para no complicarte, he aquí algunas ideas básicas.
1 - un servicio puede ser declarado como una variable de instancia del objeto al cual debe responder.
2 - todo servicio debe tener funciones que permitan cargarlo, descargarlo y consultar su estado. Además, el servicio siempre otorga sus métodos a un objeto a la vez, por tanto debe tener forma de acceder a quien lo invoca
3 - los eventos propios del usuario pueden preguntar por el estado de un servicio y pasar el control del evento al método del servicio si corresponde.
Ej: tengo un evento o función guardar , que hace this.update().
Sin embargo, si tengo un servicio que graba de manera más compleja puedo hacer esto:
evento ue_grabar()
if (isvalid ( inv_update ) then
return inv_update.of_update()
else
return this.update()
end if
4 - El powerbuilder lastimosamente no soporta downcasting ni interfaces, por lo que tendrás que instanciar los objetos manualmente o utilizar variables shared, como usa el framework KODIGO y cargarlas con un administrador de servicios.
5 - Es muy importante prever el pooling de servicios, que no es otra cosa que reaprovechar un servicio ya creado en vez de volver a crearlo.
Espero tengas éxito con esto.
Saludos