Il presente articolo tratta i seguenti argomenti:
Introduzione alle regole di convalida App
Prima che un’App possa essere convalidata, deve superare vari test. Questi test garantiscono la qualità, le prestazioni e la stabilità di ETS. I risultati dei test sono riportati allo sviluppatore quando viene caricata una versione di App per la convalida. (vedere Convalida App)
I controlli si suddividono in 2 diverse gravità:
Errore: Questi test sono inequivocabili. Qualsiasi test non riuscuito impedisce automaticamente la convalida dell’App.
Avvertenza: Questi test indicano che potrebbe esserci una violazione delle regole. L’App deve essere ispezionata manualmente. Se tale ispezione manuale dimostra che la regola non è stata violata, l’App può essere convalidata. In caso contrario, se la regola viene violata, la convalida viene negata.
Poiché un’App può contenere gruppi aggiuntivi, come un componente di logging o un gruppo di zip, i controlli devono essere adattati a questo. Alcune regole che devono essere seguite rigorosamente dall’App stessa possono essere avvertenze per alcuni altri gruppi. Ad esempio, mentre l’App deve essere compilata in base all’ambiente .NET 4.0, i componenti di terze parti possono essere compilati in base a un ambiente .NET diverso. In caso contrario, l’uso, ad esempio, di log4net non sarebbe possibile. D’altra parte, ridurre eccessivamente il rigore delle regole per i gruppi aggiuntivi non è un’opzione, poiché potrebbe invitare gli sviluppatori a esternalizzare il codice problematico a tali gruppi aggiuntivi.
La soluzione a questo problema è di suddividere i controlli dei gruppi in 2 cicli:
Tutti i gruppi dello stesso sviluppatore di App devono seguire l’interpretazione rigorosa delle regole. Ciò garantisce che l’App stessa sia implementata secondo le regole rigide, così come qualsiasi componente dello stesso sviluppatore.
In una seconda esecuzione, vengono controllati tutti i gruppi di sviluppatori di terze parti. Per questi gruppi, alcune regole vengono controllate con meno rigore, dato che lo sviluppatore di App ha poche possibilità di influenzare l’implementazione di questi gruppi. Le regole gestite con meno rigore sono segnalate come avvertenze e devono essere riviste manualmente prima di concedere la convalida. Tuttavia, alcune regole rimangono rigide, ad esempio, l’uso di accesso di bus diretto è vietato in ogni modo.
L’elenco delle regole che ogni App deve seguire viene descritto di seguito. Inoltre, viene fornita anche una breve descrizione di come lo sviluppatore può evitare o risolvere il problema. La gravità è prevista per entrambi i casi: La versione rigida (gruppi sviluppatori App) e la versione più debole (gruppi sviluppatori di terze parti)
Regole di convalida App
Regole controllate automaticamente
- Nome sicuro mancante
- Più di una ETSApp trovata
- Avvio del processo esterno
- Uso del codice non gestito
- Uso di gruppi KNX vietati
- L’istanza dell’App non può essere creata
- Creazione di un’istanza di App troppo lenta
- Collegamento diretto al bus KNX
- File App troppo grande
- File della guida in inglese mancante
- Esecuzione .Net troppo datata
- L’App non ha una versione
- L’attributo App ha una versione diversa come specificato nella versione gruppo
- Il contenitore deve contenere un file manifesto valido
- Il contenitore non deve contenere gruppi SDK
- Uso della versione SDK non ufficiale
- Connessione SQL rilevata
- Rilevato l’uso di namespace sospetti
- Supporto per la lingua inglese mancante
- App-ID Inaspettato
- ID Produttore per la DCA non valido
- DCA non deve utilizzare la funzionalità UI App
- DCA deve supportare x64
- App utilizza componenti che vengono utilizzati da ETS5 in una versione differente
- Il file assembly della app, come specificato nell'attributo AddInAssembly nel file manifest, non è stato trovato
ID |
Nome |
Gravità per sviluppatore |
Gravità per sviluppatore di terza parte |
Descrizione |
Soluzione |
1 |
Nome sicuro mancante |
Errore |
Errore |
Ogni gruppo .Net all’interno di un contenitore etsapp deve essere firmato con un nome sicuro, per evitare ambiguità. |
Aggiungere una chiave di nome sicuro (file snk) alla soluzione. |
2 |
Più di una ETSApp trovata |
Errore |
Errore |
Ogni contenitore etsapp può contenere esattamente una sola classe che eredita da IEts4Addin e che ha il System.Addin.AddinAttribute, o in altre parole: In ogni contenitore etsapp, ci può essere una sola ETS app. |
Rimuovere tutte le altre classi che eredita da IEts4App da etsapp. |
3 |
Avvio del processo esterno |
Errore |
Errore |
L’App non può avviare un processo esterno. |
Rimuovere il codice che avvia il processo esterno. |
4 |
Uso del codice non gestito. |
Avvertenza |
Avvertenza |
L’App usa chiamate verso componenti nativi (DLLImport). Ciò porterà a un’ispezione manuale. |
Se l’ispezione manuale rivela l’uso illegale di codice non gestito, rimuovere tali usi. |
5 |
Uso di gruppi KNX vietati |
Errore |
Errore |
I riferimenti ai componenti KNX sono consentiti solo se appartengono a SDK, vale a dire che sono consentiti Knx.Ets.SDK.*, Knx.Ets.CommonTypes, Knx.Ets.CommonResources Qualsiasi altro riferimento a KNX è vietato. Knx.Ets.SDK.*, Knx.Ets.CommonTypes, Knx.Ets.CommonResources sono permessi. Qualsiasi altro riferimento a KNX è vietato. I riferimenti all’ambiente .Net o gruppi propri sono consentiti. |
Rimuovere tutti gli usi dei namespace vietati. |
6 |
L’istanza dell’App non può essere creata |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
Quando si crea un’istanza di App, non possono essere lanciate eccezioni. |
Risolvere il problema che genera l’eccezione. |
7 |
Creazione di un’istanza di App troppo lenta |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
La creazione di un’istanza di App non può richiedere più di 5 secondi. Ciò limiterà l’impatto negativo dell’App sulle prestazioni complessive di ETS5. |
Identificare il motivo del problema di performance, modificare l’implementazione, in modo che l’istanza possa essere creata in meno di 5 secondi. |
8 |
Collegamento diretto al bus KNX. |
Errore |
Errore |
I collegamenti Falcon non sono ammessi. Nessuna App è autorizzata a fornire un collegamento diretto al bus KNX. |
Eliminare tutti gli usi dell’accesso diretto al bus KNX. |
9 |
File App troppo grande |
Errore |
n.a. - La regola è controllata per etsapp, non per ogni gruppo. |
La dimensione massima del contenitore etsapp è di 100 MB. |
Soluzione: Ridurre le dimensioni del file, ad esempio eliminare file aggiuntivi, come documenti pdf, video o immagini, o ridurne le dimensioni. |
10 |
File della guida in inglese mancante |
Errore |
n.a. - La regola è controllata per etsapp, non per ogni gruppo |
Deve essere fornito almeno un file di guida HTML (*.chm) compilato in inglese. |
Aggiungere un file di guida HTML compilato in inglese a etsapp. |
11 |
Esecuzione .NET troppo datata |
Errore |
Avvertenza |
Tutti i gruppi nel contenitore etsapp devono essere costruiti con .NET runtime 4.0. Le versioni precedenti non sono supportate. |
Ricostruire l’App con l’ambiente .NET Framework target 4. |
12 |
L’App non ha una versione |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo |
L’App deve avere un numero di versione. Questa versione sarà usata per identificare gli aggiornamenti disponibili e/o aiutare a ridurre al minimo il lavoro nei casi di assistenza. |
Ricostruire l’App con una versione specifica del file. |
13 |
L'attributo App ha una versione diversa da quella specificata nel campo Versione Prodotto dell'assembly. |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo |
La versione dell'App e la Versione Prodotto nell'assembly (App DLL) devono avere lo stesso numero. Questa versione sarà usata per identificare gli aggiornamenti disponibili e/o aiutare a ridurre al minimo il lavoro nei casi di assistenza. |
Ricostruire la App con la Versione Prodotto specifica. |
14 |
Il contenitore deve contenere un file manifesto valido |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
Ogni contenitore ETS-App deve contenere un file manifesto valido. |
Aggiungere un file manifesto valido al contenitore. |
15 |
Il contenitore non può contenere gruppi SDK |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
Il contenitore ETS-App non può contenere alcun gruppo di ETS-SDK. |
Eliminare qualsiasi gruppo SDK dal contenitore. |
16 |
Uso della versione non ufficiale di SDK |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
Non è consentito pubblicare i contenitori ETS-App che sono stati costruiti con una versione inedita di ETS-SDK. |
Ricostruire l’App facendo riferimento solo ai file delle versioni SDK rilasciate. |
17 |
Rilevata connessione SQL |
Avvertenza |
Avvertenza |
Se il gruppo usa il namespace SQL (System.Data.SqlClient), viene riportato un messaggio. Ciò porterà a un’ispezione manuale. Se il namespace SQL, ad esempio, viene usato per importare dati da un database di accesso, ciò è consentito. È vietato qualsiasi tentativo di accedere al database ETS4 senza l’SDK ObjectModel, sia in lettura che in scrittura. |
Se l’ispezione manuale rivela l’uso illegale del namespace SQL, eliminare tali usi. |
18 |
Uso dei namespace sospetti rilevati |
Avvertenza |
Avvertenza |
L’uso dei namespaces System.Net.*, System.Data.Sql e System.Web dà luogo a una notifica. Un’ispezione manuale deve verificare se questi namespace sono usati in modo conforme alle regole etsapp. In caso contrario, la convalida è negata. |
Se l’ispezione manuale rivela l’uso illegale di namespace sospetti, eliminare questi usi. |
19 |
Manca il supporto per la lingua inglese |
Avvertenza |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
Se l’applicazione fornisce supporto multilingue, l’inglese deve essere tra le lingue supportate. Il check cerca una localizzazione in inglese per l’App. Se non viene trovato nessuno, deve essere controllato manualmente, se i testi neutri sono già in inglese. |
Aggiungere supporto della lingua inglese. |
20 |
App-ID Inaspettato |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
L'App-ID restituito dall'istanza dell'AddIn deve essere lo stesso del file manifest dell'AddIn. |
Utilizzare lo stesso ID app nella classe AddIn e nel file manifest.
|
21 |
ID Produttore per la DCA non valido | Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
ID Produttore in DeviceConfiguration non corrisponde ad ID produttore dell'AddIn. | Utilizzare lo stesso ID Produttore per App-ID e IDs programma applicativo. |
22 |
DCAs non dovrebbero utilizzare la funzione UI App |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
Un DCA non può utilizzare le seguenti caratteristiche:
|
Non utilizzare le funzionalità di AddIn nella tua DCA. |
23 |
DCA deve supportare x64 |
Errore |
n.a. - La regola è controllata per l’App, non per ogni gruppo. |
Qualsiasi DCA deve supportare x64, in modo che non sia necessario che l'ETS funzioni in modalità compatibilità.
|
Costruisci la tua app per supportare x64 e imposta Is64BitCompatible nel manifest file a true.
|
24 |
App utilizza componenti che vengono utilizzati da ETS5 in una versione differente |
Avvertenza |
n.a. - La regola è controllata per la app, non per ogni assembly. |
ETS utilizza un componente utilizzato anche dalla app, ma in una versione diversa |
Per evitare eventuali problemi di incompatibilità, utilizzare la stessa versione del componente ETS |
25 |
Il file assembly della app, come specificato nell'attributo AddInAssembly nel file manifest, non è stato trovato |
Errore |
n.a. - La regola è controllata per la app, non per ogni assembly |
Il file assembly della app non è stato trovato |
Assicurarsi che il file assembly della app (indicato nel file manifest) esista |
Regole che devono essere confermate formalmente
Queste regole devono essere confermate manualmente dagli sviluppatori, poiché la verifica automatica non è possibile.
Se lo sviluppatore viola una qualsiasi delle regole (sia quelle verificate automaticamente che quelle confermate formalmente), la convalida sarà negata. Se dopo la convalida si riscontra una violazione di una qualsiasi delle regole, la convalida può essere revocata.
Nome | Descrizione | Soluzione |
Aggiornamenti possibili solo tramite MyKNX |
L’App potrebbe non avere un meccanismo di aggiornamento proprio. Gli aggiornamenti per un’App sono disponibili solo tramite KNX OLT. Ciò impedisce la distribuzione di applicazioni non convalidate. |
Eliminare qualsiasi meccanismo usato per aggiornare l’App bypassando KNX OLT. |
Nessuna connessione SQL al database ETS4 |
Nessuna App può accedere direttamente al database. |
Eliminare qualsiasi meccanismo che accede direttamente al database ETS4. |
Le App non possono gestire i dati nel filesystem |
|
Eliminare tutti i meccanismi che memorizzano i dati direttamente nel file system e sostituirli con l’uso di AppData del progetto. |
Le App non si possono eseguire in modalità a schermo intero |
Una app non può nascondere la finestra di ETS e fungere da applicazione principale. ETS deve essere sempre riconfigurabile come applicazione principale. |
Eliminare qualsiasi codice che permetta all’App di fungere da applicazione principale. |
L’App deve essere rispondere o indicare lo stato di occupato. |
Se la app esegue un’operazione che richiede molto tempo e che fa sì che ETS non risponda, la app deve visualizzare un indicatore progresso o di occupato |
Implementare un indicatore di progresso per le operazioni che richiedono tempo. |
L’App non deve chiudersi inaspettatamente. |
L’App deve reagire alle eccezioni fornendo un messaggio di errore di facile uso. Dopo aver visualizzato il messaggio, l’App deve continuare a funzionare. Non vengono accettati messaggi di errore generici o insufficienti, così come la chiusura inaspettata dell’applicazione dopo eccezioni non gestite. |
Implementare una corretta gestione degli errori che visualizza messaggi di facile uso in ogni situazione. Accertarsi che nessuna eccezione non gestita possa manomettere l’App. |