it-swarm-eu.dev

Pokud je XML tak špatné ..... proč ho tolik lidí používá?

Rozumím účelu XML, ale vždy slyším, jak si lidé stěžují, jak je to BAD? Opravdu nechápu, co je na tom tak špatného? Obvykle slyším výrazy „nafouklé“ a „pomalé“.

Ale myslím, že jako programátoři, k čemu to hlavně používáte? A opravdu to považujete za „špatné“ .... protože pokud je, tak ho používá hodně lidí k přenosu dat ...

37
user6791

Xml je skvělý pro to, k čemu byl navržen - platformově neutrální, lidsky čitelný protokol pro přenos dat s některými schopnostmi vynutit validaci dat na nízkých úrovních. Pochybuji, že každý, kdo používá Xml tímto způsobem, má skutečnou stížnost. Je to nejúspěšnější formát drátu? Ne. Ale existují horší možnosti. Je to tak rychlé jako čtení vlastního binárního formátu? Ne. Ale vaši obchodní partneři si ji mohou přečíst v jakémkoli zásobníku, který používají.

Problém je však v tom, že lidé - zejména plemeno známé jako architekti podniku - jsou zlí a berou dobré věci a činí je špatnými. V případě Xml byla na počátku tohoto století Xml považována za univerzální kladivo pro každý IT problém. Posypte se v malém designu výborem a skončíte s některými strašnými monstrami, jako SOAP a oXML ). Žádný z nich by si neměl přát nepřátele, nemilé přátele nebo kolegy.

91
Wyatt Barnett

XML je jen nástroj, který má mnoho příchutí a použití. XML vyniká v některých věcech a na druhé saje. Myslím, že jedním z problémů je to, že lidé viděli „podnikové“ XML, které je zbytečně složité s jmennými prostory a kecy rozházenými kolem (SOAP, někdo?). Trik při navrhování formátů XML pro člověka spočívá v tom, že data přidává skutečný význam, aniž by je nutil ke čtení.

Jedna z věcí, se kterými se lidé potýkají, je to, že XML někdy škrtí nějakou postavu nebo chybějící závorku. K tomu však existuje i vzestupná i záporná stránka. Výhodou je, že nemáte dvojznačnost jako s HTML, kde lze různé případy poloplatné syntaxe interpretovat odlišně.

Nevýhodou je, že je o něco těžší napsat a těžší se učit. Souhlasím s tím, že je třeba učinit argument, že web by se nestal tak velkým, kdyby HTML bylo stejně přísné jako XML, ale také bych tvrdil, že bychom byli rádi, kdyby to udělal dnes. :)

Nepoužívejte je pro všechno jen proto, že můžete, mít smysl a úsudek, abyste je řádně aplikovali. Pokud máte pouze XML, máte sklon být vždy transformací XSLT od toho, co chcete. :)

Tvrdil bych, že na formátu skutečně záleží jen tehdy, když s ním lidé musí komunikovat. Pokud píšete nějaký program, který něco serializuje a pošle jej někam, kde má být spotřebován jiným z vašich programů, kdo se stará o to, jak to vypadá, pokud je to tak efektivní, jak je to možné? Pro vše, co mě zajímá, použijte binární formát nebo králíčky a jednorožec.

Výhody XML

  • Pokrývá mnoho případů Edge, které YAML a JSON ne
  • Existují vynikající nástroje pro analýzu a ověření XML v řadě různých platforem a jazyků
  • XML lze snadno a mocně převést do jiného formátu (například pomocí XSLT)
  • Rozumné dokumenty XML jsou pro lidi snadno čitelné a editovatelné; neříkej mi JSON je snazší, není to :)
  • XML se do určité míry samo popisuje, tj. Přímo obsahuje informace o jeho struktuře a významu (na rozdíl od většiny binárních formátů)
  • Popisuje kódování
  • Whitespace agnostic, což usnadňuje použití napříč platformami
  • Přeruší se, pokud není správně naformátovaný (zajišťuje strukturálně správná data)
  • Není to SGML

Nevýhody

  • Podrobný
  • Není tak rychlé analyzovat jako binární
  • Přeruší se, pokud není správně naformátovaný (dojde k selhání aplikace)

Dobré použití

  • Konfigurační soubory
  • Formáty výměny dat
  • Formáty souborů odolné vůči verzi
  • Ukládání dokumentů do databází

Ne tak dobré využití

  • Formáty přenosu dat
  • Serializace objektů
  • Ukládání relačních dat do databází
  • Formát souboru pro vysoce výkonné I/O scénáře
24
Homde

Jeff Atwood má docela dobrý blogový příspěvek na XML: The Angle Bracket Tax o tom, pokud chcete o tom mluvit zdroj.

Nejběžnější použití, která pro něj mám, jsou:

  • Služby mluvit k sobě navzájem. Například web, který používá systém pro správu obsahu, musí poslat některá data do systému pro správu vztahů se zákazníky, a to se provádí pomocí XML.

  • Úložiště konfigurace. Běžné příklady jsou Web.config a app.config, ale skripty nAnt mohou také použít některé XML.

Nemyslím si, že je to optimální, ale to samo o sobě neznamená, že je to pro mě špatné.

14
JB King

Dva důvody:

  1. Existuje spousta špatných programátorů. XML může být špatné, ale je také jednoduché (alespoň na povrchu) a je velmi snadné psát špatný software. Sorta jako VB.
  2. Mnoho lidí, kteří dělají tato rozhodnutí, nejsou programátoři, ale typy podniků, které pouze slyšely, že „každý používá XML“, a tak se rozhodnou, že chtějí, aby jejich produkt používal i XML.
11
Mason Wheeler

Obvykle slyším výrazy „nafouklé“ a „pomalé“.

Nejedná se o nejkompaktnější syntax, ale o zjevně nejexpresivnější. Člověk čitelný? záleží na tom, jak si navrhujete svůj jazyk. Většina lidí nenavrhuje jazyk pro XML, pouze serializuje objekty jako XML.

… Proč to tolik lidí používá?

Je to všudypřítomné. Můžete dotazovat XML databázi s XQuery, transformovat výsledky s XSLT jako XHTML nebo Atom, získat Atom nebo jiný formát XML z jiných webových služeb, získat XML od uživatelů pomocí XForms, ověřit jej pomocí XMLSchema , Relax NG nebo Schematron, zpracovejte jej pomocí XProc, uložte jej zpět do databáze pomocí XQuery Update. Všechny tyto nástroje rozumí XML, takže není nutné mapovat mezi různými reprezentacemi.

XML není technologie serializace, je to sada obecných informací.

8
Max Toro

Zde je používáme pro výměnu dat mezi různými systémy od různých dodavatelů s různými interními reprezentacemi. Stavíme systém transformace/výměny XML, který data přenáší sem a tam. Funguje to dobře.

XML není ze své podstaty špatné, ale uznávám, že navrhování „dobrého“ řešení pomocí XML není triviální.

"Podstata XML je tato: problém, který řeší, není těžký a problém nevyřeší dobře." - Phil Wadler, POPL 2003

Můj osobní názor je, že pokud vám nebude záležet na ověřování, schématech, XSLT a ostatních ošklivých věcech a budete mít velikost souborů malou (v opačném případě bude analýza pomalá), můžete najít několik dobrých použití XML (příklad) slouží ke konfiguraci aplikace namísto použití INI).

5
sakisk

Podle mých zkušeností si lidé většinou stěžují na to, jak se používá, ne na samotnou technologii.

Očarované a pomalé bity, na které si lidé stěžují, jsou obvykle knihovny/metody, které se z nich získávají.

Používám je pro ukládání malých množství strukturovaných informací, které chci uložit na disk (bez databáze nebo binární serializace), nebo předat jiné aplikaci (která v podstatě popisuje SOAP)).

4
Steven Evers

Je to dobré, protože:

Je to standard "Interface", s nímž může komunikovat více heterogenních systémů. A je „lidský“ čitelný (druh, zkuste hledět na 5 MB XML)

Je to špatné, protože:

Jeho nadýmané, větší velikost = větší šířka pásma = více $$

Existují i ​​jiné důvody, každý má jinou hrozbu ...

2
Darknight

Stejně jako u jakékoli jiné technologie: existuje mnoho dostupných nástrojů a knihoven.

Nelíbí se mi XML, zejména proto, že je to funky, když lidé říkají, že je to lidsky čitelné, myslím si, že žertovali, nebo nikdy nečetli xml, když se jeden pokusil vložit xml do atributu ... nečitelný. Kromě toho je úžasné, kolik místa se zbytečně ztrácí díky redundantní koncové značce a schopnosti míchat volný text a data ...

Ale:

  • Lze specifikovat Xml (xsd) a jsou k dispozici nástroje, které kontrolují shodu dat Xml
  • spousta nástrojů (textových editorů a podobně) podporuje Xml
  • spousta knihoven (přibližně v každém programovacím jazyce) podporuje Xml

Výhodou je také jeho přednost. Když již poskytujete webové služby v Xml a jeden požádá o novou službu ... pravděpodobně to bude provedeno v Xml, protože to je to, co víte.

2
Matthieu M.