Este artículo cubre los siguientes temas:
Introducción a las reglas de validación de App
Antes de poder validar una App, esta debe superar varias pruebas. Estas pruebas garantizan la calidad, el rendimiento y la estabilidad de ETS. Los resultados de las pruebas son reportados al desarrollador cuando se carga una versión de la aplicación para su validación. (ver validación de la App)
Las pruebas se dividen en dos grados de gravedad diferentes:
Error: Estas pruebas son inequívocas. Cualquier prueba no superada evita automáticamente la validación de la App.
Advertencia: Estas pruebas indican que pueden violarse algunas reglas. La App debe inspeccionarse manualmente. Si esta inspección manual muestra que no se viola la regla, la App puede validarse. En caso contrario, si la regla se viola, se deniega la validación.
Puesto que la App puede contener conjuntos adicionales, como un componente de registro o un conjunto de compresión, las comprobaciones deben tenerlo en cuenta. Algunas reglas que la App debe seguir estrictamente pueden ser avisos para otros conjuntos. Por ejemplo, aunque la App deba compilarse según el entorno .NET 4.0, los componentes de terceros pueden estar compilados según un entorno .NET diferente. En caso contrario, el uso de log4net, por ejemplo, no sería posible. Por otro lado, el relajamiento excesivo de la rigurosidad de las reglas para conjuntos adicionales no es una opción, puesto que podría invitar a los desarrolladores a externalizar código problemático a estos conjuntos adicionales.
La solución a este problema pasa por dividir las comprobaciones de los conjuntos en dos ciclos:
Todos los conjuntos del desarrollador de la App deben seguir la interpretación estricta de las reglas. Con esto se garantiza que la App, así como cualquier componente del mismo desarrollador, se implementa según las reglas estrictas.
En un segundo ciclo, se comprueban todos los conjuntos de desarrolladores terceros. Para estos conjuntos, algunas reglas se comprueban de forma menos estricta, puesto que el desarrollador de la App tiene pocas posibilidades de influir en la implementación de estos conjuntos. Estas reglas administradas de forma menos estricta se presentan como avisos y deben revisarse manualmente antes de otorgar la validación. Sin embargo, algunas reglas continúan siendo estrictas. P. ej., el uso de un acceso de bus directo está prohibido.
A continuación se describe la lista de reglas que todas las Apps deben respetar. Además, también se proporciona una descripción breve sobre la manera en que el desarrollador puede evitar o solucionar el problema. Para ambos casos se indica la gravedad: La versión estricta (conjuntos de desarrollador de App) y la versión menos estricta (conjuntos de desarrollador tercero)
Reglas de validación de App
Reglas comprobadas automáticamente
- Falta de un nombre seguro
- Se ha encontrado más de un ETS Addin
- Iniciar proceso externo
- Uso de código no administrado
- Uso de conjuntos KNX prohibidos
- No puede crearse instancia de App
- Creación de instancia de App demasiado lenta
- Conexión directa a bus KNX
- Archivo de App demasiado grande
- Falta archivo de ayuda en inglés
- Ejecución de .Net demasiado antigua
- La App no tiene versión
- El atributo de App tiene una versión diferente de la especificada en la versión del conjunto
- El contenedor debe contener un archivo de manifiesto válido
- El contenedor no puede contener conjuntos SDK
- Uso de versión de SDK no oficial
- Conexión SQL detectada
- Uso de espacios de nombres sospechosos detectado
- Falta el soporte en inglés
- App-ID inesperada
- ID de Fabricante de DCA inválida
- Las DCAs no deben usar la función UI App
- La DCA debe ser compatible con x64
- La app usa componentes utilizados por ETS5 en una versión diferente
- No se ha encontrado el ensamblado de la app, tal como se especifica en el atributo AddInAssembly en el archivo de manifiesto
ID |
Nombre |
Gravedad para el desarrollador |
Gravedad para el desarrollador tercero |
Descripción |
Solución |
1 |
Falta nombre fuerte |
Error |
Error |
Todos los conjuntos .Net de un contenedor etsapp deben estar firmados con un nombre seguro para evitar ambigüedades. |
Añada una clave de nombre seguro (archivo snk) a la solución. |
2 |
Se ha encontrado más de un ETS Addin |
Error |
Error |
Cada contenedor etsapp solo puede contener exactamente una clase que herede de IEts4Addin y que tenga el atributo System.AddIn.AddInAttribute, es decir: En cada contenedor etsapp, solo puede haber una App ETS. |
Elimine del etsapp todas las demás clases que hereden de IEts4App. |
3 |
Iniciar proceso externo |
Error |
Error |
La App no puede iniciar un proceso externo. |
Elimine el código que inicia el proceso externo. |
4 |
Uso de código no administrado. |
Advertencia |
Advertencia |
La App usa llamadas a componentes nativos (DLLImport). Esto llevará a una inspección manual. |
Si la inspección manual revela un uso ilegal de código no administrado, elimine estos usos. |
5 |
Uso de conjuntos KNX prohibidos |
Error |
Error |
Las referencias a componentes KNX solo están permitidas si pertenecen a SDK, p. Ets.SDK.*, Knx. Ets.CommonTypes, Knx. Ets.CommonResources están permitidas. Todas las demás referencias a KNX están prohibidas. Las referencias al entorno .Net o a conjuntos propios están permitidas. |
Elimine todos los usos de los espacios de nombres prohibidos. |
6 |
No puede crearse instancia de App |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
Al crear una instancia de la App, no puede arrojarse ninguna excepción. |
Solucione el problema que arroja la excepción. |
7 |
Creación de instancia de App demasiado lenta |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
La creación de una instancia de la App no puede tardar más de 5 segundos. Esto limitará el impacto negativo de la App sobre el rendimiento general de ETS5. |
Identifique el motivo del problema de rendimiento y cambie la implementación de manera que la instancia pueda crearse en menos de 5 segundos. |
8 |
Conexión directa al bus KNX. |
Error |
Error |
Las conexiones Falcon no están permitidas. No se permite que ninguna App ofrezca una conexión directa al KNX. |
Elimine todos los usos de acceso directo al bus KNX. |
9 |
Archivo de App demasiado grande |
Error |
n.d. - La regla se comprueba para la etsapp, no para cada conjunto. |
El tamaño máximo del contenedor etsapp es de 100 MB. |
Solución: Reduzca el tamaño del archivo, p. ej., elimine archivos adicionales, como documentos pdf, vídeos o imágenes, o reduzca su tamaño. |
10 |
Falta el archivo de ayuda en inglés |
Error |
n.d. - La regla se comprueba para la etsapp, no para cada conjunto |
Debe proporcionarse como mínimo un archivo de ayuda HTML en inglés compilado (*.chm). |
Añada un archivo de ayuda HTML en inglés compilado a la etsapp. |
11 |
Ejecución de .NET demasiado antigua |
Error |
Aviso |
Todos los conjuntos del contenedor etsapp deben construirse con .NET Runtime 4.0. Las versiones más antiguas no se aceptan. |
Reconstruya la App con el entorno .NET Framework de destino 4. |
12 |
La App no tiene versión |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto |
La App debe tener un número de versión. Esta versión se usará para identificar las actualizaciones disponibles y/o para minimizar el trabajo en los casos de soporte. |
Reconstruya la App con una versión de archivo especificada. |
13 |
El atributo de la App tiene una versión diferente de la especificada en la versión del conjunto. |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto |
la versión de la App y la versión del conjunto (App DLL) deben tener el mismo número. Esta versión se usará para identificar las actualizaciones disponibles y/o para minimizar el trabajo en los casos de soporte. |
Reconstruya la App con una versión de archivo o de conjunto especificada. |
14 |
El contenedor debe contener un archivo de manifiesto válido |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
Cada contenedor ETS-App debe contener un archivo de manifiesto válido. |
Añada un archivo de manifiesto válido al contenedor. |
15 |
El contenedor no puede contener conjuntos SDK |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
El contenedor ETS-App no puede contener ningún conjunto de ETS-SDK. |
Elimine todos los conjuntos SDK del contenedor. |
16 |
Uso de versión de SDK no oficial |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
No se permite publicar contenedores ETS-App construidos con una versión no publicada de ETS-SDK. |
Reconstruya la App haciendo referencia solo a archivos de versiones de SDK publicadas. |
17 |
Conexión SQL detectada |
Advertencia |
Advertencia |
Si el conjunto usa el espacio de nombres SQL (System.Data.SqlClient), aparecerá un mensaje. Esto llevará a una inspección manual. Si, por ejemplo, el espacio de nombres SQL se usa para importar desde una base de datos de Access, está permitido. Cualquier intento de acceder a la base de datos de ETS4 sin el SDK ObjectModel, ya sea leyendo o escribiendo, está prohibido. |
Si la inspección manual revela un uso ilegal del espacio de nombres SQL, elimine estos usos. |
18 |
Uso de espacios de nombres sospechosos detectado |
Advertencia |
Advertencia |
El uso de los espacios de nombres System. Net.*, System. Data.Sql y System. Web resulta en una notificación. Una inspección manual debe comprobar si estos espacios de nombres se usan de manera acorde con las reglas de etsapp. Si no es así, se deniega la validación. |
Si la inspección manual revela el uso de estos espacios de nombres sospechosos, elimine estos usos. |
19 |
Falta el soporte en inglés |
Advertencia |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
Si la App ofrece soporte en varios idiomas, el inglés debe ser uno de estos. La comprobación busca una localización en inglés para la App. Si no se encuentra ninguna, deberá inspeccionarse manualmente si los textos neutros ya están en inglés. |
Añada soporte en inglés. |
20 |
App-ID inesperada |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
La App-ID que devuelve la instancia AddIn debe ser la misma que en el archivo manifest AddIn. |
Utilice la misma App-ID en la clase AddIn y en el archivo manifest.
|
21 |
ID de fabricante DCA inválida | Error |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
La ID del fabricante en DeviceConfiguration no coincide con la ID del fabricante del AddIn. | Utilice la misma ID del fabricante para la App-ID y las IDs del programa de aplicación. |
22 |
Las DCA no pueden usar la función UI App |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
Una DCA no puede utilizar las siguientes características:
|
No utilice funciones AddIn en su DCA. |
23 |
La DCA debe ser compatible con x64 |
Error |
n.d. - La regla se comprueba para la App, no para cada conjunto. |
Toda DCA debe soportar x64, para que no sea necesario ejecutar ETS en modo de compatibilidad.
|
Construya su app para que sea compatible con x64 y ajuste la propiedad Is64BitCompatible en el manifiesto como verdadero.
|
24 |
La app usa componentes utilizados por ETS5 en una versión diferente |
Advertencia |
n.d. - La regla se comprueba para la app, no para cada ensamblado. |
ETS utiliza un componente usado también por la app, pero en una versión diferente |
Para evitar posibles incidencias de incompatibilidad, utilice la misma versión de componente que el ETS |
25 |
No se ha encontrado el ensamblado de la app, tal como se especifica en el atributo AddInAssembly en el archivo de manifiesto |
Error |
n.d. - La regla se comprueba para la app, no para cada ensamblado |
No se encontró el ensamblado de la app |
Asegúrese de que el ensamblado de la app (indicado en el archivo de manifiesto) existe |
Reglas que deben confirmarse formalmente
Los desarrolladores deben confirmar estas reglas manualmente, ya que la verificación automática no es posible.
Si el desarrollador viola cualquiera de las reglas (ya sean las verificadas automáticamente o las confirmadas formalmente), se denegará la validación. Si después de la validación se advierte la violación de cualquiera de las reglas, la validación puede revocarse.
Nombre | Descripción | Solución |
Actualizaciones posibles solo a través de MyKNX |
Es posible que la App no tenga un mecanismo de actualización propio. Las actualizaciones para una App solo están disponibles a través de KNX OLT. Esto evita la distribución de Apps no validadas. |
Elimine cualquier mecanismo que se use para actualizar la App eludiendo KNX OLT. |
Ninguna conexión SQL a la base de datos de ETS4 |
Ninguna App puede acceder directamente a la base de datos. |
Elimine cualquier mecanismo que acceda directamente a la base de datos de ETS4. |
Las Apps no pueden manejar datos en el sistema de archivos |
|
Elimine todos los mecanismos que almacenan datos directamente en el sistema de archivos y sustitúyalos por el uso de AppData del proyecto. |
Las Apps no pueden ejecutarse en modo de pantalla completa |
Una app no puede ocultar la ventana de ETS y actuar como la aplicación principal. El ETS debe poder reconocerse siempre como la aplicación principal. |
Elimine cualquier código que permita que la App actúe como la aplicación principal. |
La App debe ser reactiva o indicar el estado de ocupada |
Si la app realiza una operación que requiere mucho tiempo y que hace que ETS deje de responder, la app deberá mostrar un indicador de progreso o un indicador de estar ocupada |
Implemente un indicador de progreso para las operaciones que requieran mucho tiempo. |
La App no debe cerrarse inesperadamente. |
La App debe reaccionar ante excepciones mostrando un mensaje de error sencillo. Después de mostrar el mensaje, la App debe continuar ejecutándose. No se aceptan mensajes de error genéricos o insuficientes, ni tampoco un cierre inesperado de la aplicación después de excepciones no gestionadas. |
Implemente un tratamiento de errores correcto que muestre mensajes claros en todas las situaciones. Compruebe que ninguna excepción no gestionada pueda provocar la caída de la App. |