Hola a todos, en mi experiencia, sigo lo siguiente:
Objeto APP
Opening: Todo proceso de inicialización en la aplicacion (seriales de plugins, carga de valores iniciales, DAEMONIZE, etc.)
Objeto Session
Variables de sesión para cada usuario (IDUsuario, Nombre del usuario, Empresa a la que se accede). Fundamental para ambientes multiusuario.
WebPages
Organizo en carpetas según el dispositivo (computadoras, tablets, celulares), cada diseño es diferente.
Al llamar una WebPage siempre se crea una instancia:
Var wp As New WebPageAplicacion
En cada WebPage creo una propiedad para almacenar la WebPage que lo invoca para que al retorno se despliegue la WebPage anterior
wp.WebPadre = Self // Antes de llamar el método Show, se asigna la web padre
wp.Show
Con esta técnica, al finalizar el proceso de esta nueva WebPage y se necesite retornar a la web que la invocó, se puede usar como sigue:
WebPadre.Show
Self.Close
Dentro de cada WebPage, las propiedades, métodos, etc. corresponden a una instancia por lo que funciona los procesos particulares con sus variables.
En cuanto a bases de datos, depende de lo que se use, SQLite con archivo local o un servidor de bases de datos como MySQL. Personalmente desarrollé una función tipo SelectSQL que trabaja con todos los motores de bases de datos. Si se crea la instancia para la conexión, asegurarse de cerrar la conexión al finalizar, debido a que con la aplicación “stand alone” se bloqueaba al día siguiente y no se podía conectar al servidor.
Uso la versión 2021R2.1
Espero haber sido de ayuda, cualquier consulta, a la orden.