Den här artikeln omfattar följande ämnen:
Introduktion för appvalideringsregler
Innan en app kan valideras måste den genomgå olika tester. Dessa tester garanterar ETS:s kvalitet, prestanda och stabilitet. Testresultaten rapporteras till utvecklaren när en appversion laddas upp för validering. (se Appvalidering)
Kontrollerna är indelade i två olika svårighetsgrader:
Fel: Dessa tester är entydiga. Ett misslyckat test förhindrar automatiskt valideringen av appen.
Varning: Dessa tester indikerar att det kan finnas en överträdelse av reglerna. Appen måste inspekteras manuellt. Om en sådan manuell inspektion visar att regeln inte bryts så kan appen valideras. Om regeln bryts så nekas valideringen.
Eftersom en app kan innehålla ytterligare sammansättningar likt en loggkomponent eller zip-paket så måste kontrollerna anpassas till det. Vissa regler som måste följas strikt av appen själv kan vara varningar för några andra sammansättningar. Till exempel, medan appen måste kompileras mot .NET Framework 4.0 kan komponenter från tredje parter kompileras mot ett annat. NET Framework. Annars skulle användningen av t.ex. log4net inte vara möjligt alls. Å andra sidan är det inte ett alternativ att minska strängheten hos reglerna för ytterligare sammansättningar eftersom det kan leda till att utvecklare lägger ut problematisk kod till de ytterligare sammansättningar.
Lösningen på detta problem är att dela sammansättningen till två körningar:
Alla sammansättningar från apputvecklaren själv måste följa den strikta tolkningen av reglerna. Detta säkerställer att appen själv implementeras enligt de strikta reglerna liksom alla komponenter från samma utvecklare.
I en andra körning kontrolleras alla sammansättningar från utvecklare som är tredje parter. För dessa sammansättningar är vissa regler mindre strikt kontrollerade eftersom apputvecklaren har liten chans att påverka implementeringen av dessa sammansättningar. De mindre strängt hanterade reglerna rapporteras som varningar och måste granskas manuellt innan godkännandet beviljas. Likväl är vissa regler strikta, t.ex. användningen av direkt bussåtkomst är helt förbjuden.
Listan över regler som varje app måste följa beskrivs nedan. Dessutom tillhandahålls en kort beskrivning över hur utvecklaren kan undvika eller lösa problemet. Svårighetsgraden tillhandahålls för båda fallen: Den strikta versionen (sammansättningar från apputvecklare) och den svagare versionen (sammansättningar från apputvecklare som är tredje parter)
Regler för appvalidering
Automatiskt kontrollerade regler
- Starkt namn saknas
- Mer än en app hittades
- Startar extern process
- Användning av oreglerad kod
- Användning av förbjudna KNX-sammansättningar
- Appinstans kan inte skapas
- Skapande av appinstans för långsam
- Direkt anslutning till KNX-buss
- App-fil för stor
- Engelsk hjälpfil saknas
- .Net runtime för gammal
- App saknar version
- Appattribut har en annan version som specificeras i sammansättningsversionen
- Behållaren måste innehålla en giltig manifestfil
- Behållaren får inte innehålla SDK-sammansättningar
- Användning av en icke-officiell SDK-version
- SQL-anslutning upptäckt
- Användning av misstänkt namnrymd upptäckt
- Engelskt språkstöd saknas
ID |
Namn |
Svårighetsgrad för utvecklare |
Svårighetsgrad för utvecklare som är tredje part |
Beskrivning |
Lösning |
1 |
Starkt namn saknas |
Fel |
Fel |
Alla .NET-sammansättningar inom en etsapp-behållare måste skrivas under med ett starkt namn för att förhindra tvetydigheter. |
Lägg till en stark namnnyckel (snk-fil) till lösningen. |
2 |
Mer än en app hittades |
Fel |
Fel |
Varje etsapp-behållare får bara innehålla exakt en klass som ärver från IEts4App och har System.App.AppAttribute, eller med andra ord: I alla etsapp-behållare kan det finnas bara en app. |
Ta bort alla andra klasser som ärver från IEts4App från etsapp. |
3 |
Starta extern process |
Fel |
Fel |
Appen får inte starta en extern process. |
Ta bort koden som startar den externa processen. |
4 |
Användning av oreglerad kod. |
Varning |
Varning |
Appen använder samtal till inbyggda komponenter (DLLImport). Detta kommer leda till en manuell inspektion. |
Om den manuella inspektionen avslöjar olaglig användning av oreglerad kod, ta då bort de användningarna. |
5 |
Användning av förbjudna KNX-sammansättningar |
Fel |
Fel |
Hänvisningar till KNX-komponenter är endast tillåtna om de tillhör SDK, det vill säga Knx.Ets.SDK.*, Knx.Ets.CommonTypes, Knx.Ets.CommonResources är tillåtna. Alla andra KNX-hänvisningar är förbjudna. Referenser till .NET Framework eller egna sammansättningar är tillåtna. |
Ta bort all användning av förbjuden namnrymd. |
6 |
Appinstans kan inte skapas |
Fel |
n.a. – Regeln kontrolleras för appen, inte för varje sammansättning. |
Vid skapande av en instans av appen får inget undantag förekomma. |
Lös problemet som skapar undantaget. |
7 |
Skapande av appinstans för långsam |
Fel |
n.a. – Regeln kontrolleras för appen, inte för varje sammansättning. |
Skapandet av en appinstans får inte ta längre tid än 5 sekunder. Detta ska begränsa appens negativa inverkan på den totala ETS5-prestandan. |
Identifiera orsaken till prestandaproblemet, ändra implementeringen så att instansen kan skapas inom mindre än 5 sekunder. |
8 |
Direkt anslutning till KNX-buss. |
Fel |
Fel |
Falcon-anslutningar är inte tillåtna. Ingen app får tillåta en direkt anslutning till KNX-bussen. |
Ta bort alla användningar av direkt åtkomst till KNX-bussen. |
9 |
Appfil för stor |
Fel |
n.a. – Regeln kontrolleras för etsappen, inte för varje sammansättning. |
Den maximala storleken på etsapp-behållaren är 100 MB. |
Lösning: Minska filstorleken, t.ex. ta bort ytterligare filer som pdf-dokument, videor eller bilder, eller minska deras storlek. |
10 |
Engelsk hjälpfil saknas |
Fel |
n.a. – Regeln kontrolleras för etsappen, inte för varje sammansättning |
Minst en engelsk kompilerad HTML-hjälpfil (* .chm) måste tillhandahållas. |
Lägg till en engelsk kompilerad HTML-hjälpfil till etsappen. |
11 |
.NET-körtid för gammal |
Fel |
Varning |
Alla sammansättningar i etsapp-behållaren måste byggas med .NET runtime 4.0. Äldre versioner stöds ej. |
Bygg om appen med föredraget ramverket. NET Framework 4. |
12 |
App saknar version |
Error |
n.a. – Regeln är att kontrollera efter appen, inte efter varje sammansättning |
Appen måste ha ett versionsnummer. Denna version kommer användas för att identifiera tillgängliga uppdateringar och/eller hjälpa till att minimera arbetet i supportfall. |
Bygg om appen med en specificerad filversion. |
13 |
Appattribut har en annan version som specificeras i sammansättningsversionen. |
Fel |
n.a. – Regeln kontrolleras för appen, inte för varje sammansättning |
Appversionen och sammansättningsversionen (App DLL) måste vara samma nummer. Denna version kommer användas för att identifiera tillgängliga uppdateringar och/eller hjälpa till att minimera arbetet i supportfall. |
Bygg om appen med en specificerad filversion eller sammansättningsversion. |
14 |
Behållaren måste innehålla en giltig manifestfil |
Fel |
n.a. – Regeln kontrolleras för appen, inte för varje sammansättning. |
Varje behållare för ETS-appen måste innehålla en giltig manifestfil. |
Lägg till en giltig manifestfil till behållare. |
15 |
Behållaren får inte innehålla SDK-sammansättningar |
Fel |
n.a. – Regeln kontrolleras för appen, inte för varje sammansättning. |
Behållaren för ETS-appen får inte innehålla någon sammansättning från ETS-SDK. |
Ta bort SDK-sammansättningar från behållaren. |
16 |
Användning av icke-officiell SDK-version |
Fel |
n.a. – Regeln kontrolleras för appen, inte för varje sammansättning. |
Det är inte tillåtet att publicera behållaren för ETS-app som byggts med en inte frisläppt version av ETS-SDK. |
Bygg om appen genom att bara hänvisa till filer från frisläppta SDK-versioner. |
17 |
SQL-anslutning upptäckt |
Varning |
Varning |
Om sammansättningen använder SQL-namnrymd (System.Data.SqlClient), ett meddelande rapporteras. Detta leder till en manuell inspektion. Om SQL-namnrymden till exempel används för att importera data från en åtkomstdatabas så är det tillåtet. Varje försök att komma åt ETS4-databasen utan SDK ObjectModel, ändra läsning eller skrivning, är förbjuden. |
Om den manuella inspektionen avslöjar olaglig användning av SQL-namnrymden, ta bort de användningarna. |
18 |
Användning av misstänkta namnrymder upptäckta |
Varning |
Varning |
Användningen av namnrymder System.Net.*, System.Data.Sql och System.Web resulterar i ett meddelande. En manuell inspektion måste kontrollera om dessa namnrymder används på ett sätt som överensstämmer med etsapp-reglerna. Om inte så nekas valideringen. |
Om den manuella inspektionen avslöjar olaglig användning av de misstänkta namnrymderna, ta då bort de användningarna. |
19 |
Saknar engelskspråkligt stöd |
Varning |
n.a. – Regeln kontrolleras för appen, inte för varje sammansättning. |
Om appen tillhandahåller stöd för flera språk så måste engelska vara bland de språk som stöds. Kontrollen söker efter en engelsk lokalisering för appen. Om ingen hittas så måste den inspekteras manuellt om de neutrala texterna redan är engelska. |
Lägg till stöd för engelska. |
Regler som måste bekräftas formellt
Dessa regler måste bekräftas manuellt av utvecklarna eftersom automatisk verifiering inte är möjlig.
Om utvecklaren bryter mot någon av reglerna (antingen de som automatiskt verifieras eller de som formellt bekräftats) så kommer valideringen nekas. Om en överträdelse av en av reglerna upptäcks efter valideringen så kan valideringen återkallas.
Namn | Beskrivning | Lösning |
Uppdateringar är bara möjliga via MyKNX |
Appen kanske inte har en egen uppdateringsmekanism. Uppdateringar för en app är endast tillgängliga via KNX OLT. Detta förhindrar distribution av obehöriga appar. |
Ta bort alla mekanismer som används för att uppdatera appen och kringgår KNX OLT. |
Inga SQL-anslutningar till ETS4-databasen |
Ingen app får tillgång till databasen direkt. |
Ta bort alla mekanismer som går direkt till ETS4-databasen. |
Appar kanske inte håller kvar data i filsystemet |
Appar får inte hålla kvar data utanför ETS4-databasen. För sådana åtgärder måste AppData vid projektet, tillhandahållet av SDK, användas. |
Ta bort alla mekanismer som lagrar data direkt i filsystemet och ersätt dem med användningen av projektets AppData. |
Appar kan kanske inte köras i helskärmsläge |
En app får inte gömma ETS5-fönstret och agera som huvudapplikation. ETS5 måste alltid vara identifierbar som huvudapplikation. |
Ta bort all kod som låter appen fungera som huvudprogram. |
Appen måste antingen vara responsiv eller indikera status upptagen |
Om appen utför en tidskrävande operation som medför att ETS5 inte svarar så måste appen visa en indikator för framsteg eller upptagen. |
Implementera en framstegsindikator för tidskrävande operationer. |
Appen får inte stängas oväntat. |
Appen måste reagera på undantag genom att tillhandahålla ett användarvänligt felmeddelande. Efter att ha visat meddelandet måste appen fortsätta köras. Generella eller otillräckliga felmeddelanden accepteras inte liksom oväntad stängning av ansökan efter obehandlade undantag. |
Implementera en korrekt felhantering som visar användarvänliga meddelanden i varje situation. Se till att inget obehandlat undantag kan krascha appen. |