Snabb infoset
Fast Infoset (eller FI ) är en internationell standard som specificerar ett binärt kodningsformat för XML Information Set ( XML Infoset ) som ett alternativ till XML -dokumentformatet. Det syftar till att ge effektivare serialisering än det textbaserade XML-formatet.
FI är i praktiken en förlustfri komprimering , analogt med gzip , för XML, förutom att medan den ursprungliga formateringen går förlorad, förloras ingen information i konverteringen från XML till FI och tillbaka till XML. Medan syftet med komprimering är att minska den fysiska datastorleken, strävar FI efter att optimera både dokumentstorlek och bearbetningsprestanda.
Fast Infoset-specifikationen definieras av både ITU-T och ISO / IEC- standardorganen. FI definieras officiellt i ITU-T Rec. X.891 och ISO/IEC 24824-1, med titeln Fast Infoset . Standarden publicerades av ITU-T den 14 maj 2005 och av ISO den 4 maj 2007. Standarddokumentet Fast Infoset kan laddas ner från ITU:s webbplats . Även om dokumentet inte hävdar immateriella rättigheter (IP) begränsningar för implementering eller användning, varnar sidan ii för att det har tagit emot meddelanden och att ämnet kanske inte är helt fritt från IP-påståenden.
En vanlig missuppfattning är att FI kräver ASN.1 verktygsstöd. Även om den formella specifikationen använder ASN.1-notation, inkluderar standarden Encoding Control Notation (ECN) och ASN.1-verktyg krävs inte av implementeringar.
Ett alternativ till FI är FleXPath.
Strukturera
Det underliggande filformatet är ASN.1 , med tagg/längd/värdeblock. Textvärden för attribut och element lagras med längdprefix snarare än ändavgränsare, och datasegment kräver inte escapement för specialtecken. Motsvarigheten till sluttaggar ("terminators") behövs bara i slutet av en lista med underordnade element. Binär data sänds i eget format och behöver inte konverteras till ett överföringsformat som base64 .
Fast Infoset är ett format på högre nivå byggt på ASN.1-formulär och notation. Element- och attributnamn lagras i oktettströmmen, till skillnad från traditionella ASN.1-kodningsscheman. Följaktligen kan den konventionella XML-filen återställas från den binära strömmen utan referens till XML-schemat, och XML-schemat behöver inte uttryckas som en ASN.1-definition. (ASN.1 "Taggar" är bara typnamn, t.ex. String, Integer eller komplexa typer.) ASN.1 tillsammans med ECN används för att definiera filformatet.
En indextabell är byggd för de flesta strängar, som inkluderar element- och attributnamn och deras värden. Det betyder att texten för upprepade taggar och värden endast visas en gång per dokument.
Genomföranden
Referensimplementering
En Java-implementering av FI-specifikationen är tillgänglig som en del av Eclipse-implementeringen av JAXB. Biblioteket är öppen källkod och distribueras under villkoren i Apache License 2.0. Flera projekt använder denna implementering, inklusive referensimplementeringen för JAX-WS som används i Eclipse Metro .
Implementeringen av QtitanFastInfoset för C++ är tillgänglig under kommersiell licens som en komponent för Qt -ramverket.
Prestanda
Eftersom snabba infomängder komprimeras som en del av XML-genereringsprocessen, är de mycket snabbare än att använda Zip-kompressionsalgoritmer på en XML-ström, även om utdata inte är lika väl komprimerad.
Analysprestandan av SAX-typ för Fast Infoset är också mycket snabbare än analysprestandan för XML 1.0, även utan någon zip-liknande komprimering. Typiska ökningar i analyshastighet som observeras för Java- referensimplementeringen är en faktor 10 över Java Xerces och en faktor 4 över Piccolo-drivrutinen (en av de snabbaste Java-baserade XML-parsarna).
Typiska Användningsområden
Bärbara enheter – Mobila enheter har vanligtvis låg bandbredd dataanslutningar och långsammare processorer. Fast Infoset använder mindre bandbredd än XML och är snabbare att bearbeta, vilket gör det till ett överlägset val.
Lagring av stora datavolymer – När du lagrar XML till antingen fil eller databas kan mängden data som ett system producerar ofta överskrida rimliga gränser, med ett antal nackdelar: åtkomsttiderna ökar när mer data läses, CPU-belastningen ökar med XML-data tar mer kraft att bearbeta och lagringskostnaderna ökar. Genom att lagra XML-data i Fast Infoset-format kan datavolymen minskas med så mycket som 80 procent.
Skicka XML via Internet – När en applikation skickar data över internet kan nätverkets bandbredd vara en stor flaskhals, som allvarligt försämrar prestanda hos klientapplikationer och begränsar serverns förmåga att behandla förfrågningar. [ citat behövs ] Att minska storleken på data som överförs över internet minskar tiden som krävs för att skicka eller ta emot meddelandet, och ökar antalet transaktioner som en server kan bearbeta per timme.
Se även
externa länkar
- En tung teknisk beskrivning på OTN
- FastInfoset.NET hemsida
- FI-projektets hemsida
- Snabb informationssida på ASN.1-webbplatsen
- OSS Fast Infoset Tools sida
- Gratis nedladdning av Fast Infoset-standarden (ITU-T Rec. X.891) från ITU:s webbplats
- Gratis nedladdning av Fast Infoset-standarden (ISO/IEC 24824-1:2007) från ISO Freely Available Standards
- Liquid Fast Infoset .Net (en Open Source .Net-implementering)