Saya mengerti tujuan XML, tapi saya selalu mendengar orang mengeluh tentang betapa buruknya itu? Saya tidak begitu mengerti apa yang seburuk itu? Saya biasanya mendengar istilah "kembung" dan "lambat".
Tapi saya kira sebagai programmer, untuk apa Anda menggunakannya? Dan apakah Anda benar-benar menganggapnya "buruk" ... karena jika ya, banyak orang yang menggunakannya untuk mengirim data ...
Jawaban:
Xml sangat bagus untuk apa yang telah dirancang - platform netral, protokol transfer data yang dapat dibaca manusia dengan beberapa kemampuan untuk menegakkan validasi data pada level rendah. Saya ragu siapa pun yang menggunakan Xml dengan cara ini memiliki keluhan nyata. Apakah ini format kawat yang paling berhasil? Tidak. Tapi ada opsi yang lebih buruk. Apakah secepat membaca format biner kustom Anda? Tidak. Tetapi mitra bisnis Anda dapat membacanya di tumpukan apa pun yang mereka gunakan.
Masalahnya, bagaimanapun, adalah bahwa manusia - khususnya keturunan yang dikenal sebagai arsitek perusahaan - adalah jahat dan mengambil hal-hal baik dan menjadikannya buruk. Dalam kasus Xml, bagian awal abad ini melihat Xml sebagai palu universal untuk setiap masalah TI. Taburkan dalam desain kecil oleh komite dan Anda berakhir dengan beberapa monster mengerikan seperti SOAP dan oXML . Tak satu pun dari yang harus diharapkan pada musuh, tidak pernah menghiraukan teman atau kolega.
sumber
XML hanyalah alat yang memiliki banyak rasa dan kegunaan. XML unggul dalam beberapa hal dan mengisap yang lain. Saya pikir salah satu masalah adalah orang-orang telah melihat "perusahaan" XML yang tidak perlu rumit dengan ruang nama dan omong kosong berserakan (SOAP, ada orang?). Trik untuk mendesain format XML untuk manusia adalah menambahkan makna nyata pada data tanpa membuatnya berlebihan untuk dibaca.
Salah satu hal yang menjadi masalah orang adalah bahwa XML terkadang tersedak beberapa karakter atau beberapa braket yang hilang. Namun, ada sisi positif dan negatifnya. Sisi baiknya adalah Anda tidak memiliki ambiguitas seperti yang Anda miliki dengan HTML di mana berbagai kasus sintaksis semi-tidak valid dapat ditafsirkan secara berbeda.
Kelemahannya adalah agak sulit untuk penulis dan sulit untuk dipelajari. Saya setuju ada argumen yang dibuat bahwa web tidak akan menjadi terlalu cepat jika HTML seketat XML, tapi saya juga berpendapat bahwa kami akan senang jika melakukannya hari ini. :)
Juga, jangan menggunakannya untuk semuanya hanya karena Anda bisa, memiliki akal dan penilaian untuk menerapkannya dengan tepat. Jika semua yang Anda miliki adalah XML, Anda cenderung selalu menjadi transformasi XSLT dari yang Anda inginkan. :)
Saya berpendapat bahwa format hanya penting ketika manusia perlu berinteraksi dengannya. Jika Anda menulis beberapa program yang membuat serial sesuatu dan mengirimkannya ke suatu tempat di mana ia akan dikonsumsi oleh program Anda yang lain, siapa yang peduli seperti apa bentuknya selama itu seefisien mungkin? Gunakan format biner atau kelinci dan unicorn untuk semua yang saya pedulikan.
Pro dari XML
Cons
Penggunaan yang baik
Penggunaannya tidak begitu baik
sumber
Jeff Atwood memiliki posting blog yang cukup bagus di XML: Pajak Angle Bracket tentang ini jika Anda ingin sumber membicarakannya.
Kegunaan paling umum yang saya miliki untuk itu adalah:
Layanan berbicara satu sama lain. Misalnya, situs web yang menggunakan sistem manajemen konten harus mengirim beberapa data ke sistem manajemen hubungan pelanggan dan ini dilakukan dengan XML.
Penyimpanan konfigurasi. Web.config dan app.config menjadi contoh umum tetapi skrip nAnt juga dapat menggunakan beberapa XML.
Saya tidak berpikir itu optimal tetapi itu saja tidak membuatnya buruk bagi pikiran saya.
sumber
Dua alasan:
sumber
<Problem:Worsening> <Problem:TimeDescription>Now</Problem:TimeDescription> <Problem:Posessive>they have</Problem:Posessive> <Problem:Quantity>many, many</Problem:Quantity> <Problem:WorseningDescription>more problems</Problem:WorseningDescription> </ProblemWorsening>
Ini bukan sintaks yang paling kompak, tetapi jelas yang paling ekspresif. Dapat dibaca manusia? tergantung pada bagaimana Anda mendesain bahasa Anda. Kebanyakan orang tidak mendesain bahasa untuk XML, mereka hanya membuat serial objek sebagai XML.
Itu ada di mana-mana. Anda dapat meminta basis data XML dengan XQuery, mengubah hasil dengan XSLT sebagai XHTML atau Atom, mendapatkan Atom atau format XML lainnya dari layanan web lain, mendapatkan XML dari pengguna menggunakan XForms, memvalidasinya dengan XMLSchema, Relax NG atau Schematron, memprosesnya dengan XProc, simpan kembali ke database dengan Pembaruan XQuery. Semua alat ini memahami XML, jadi tidak perlu untuk memetakan antara representasi yang berbeda.
XML bukan teknologi serialisasi, ini adalah kumpulan informasi tujuan umum.
sumber
Di sini, kami menggunakannya untuk pertukaran data antara sistem yang berbeda yang dibuat oleh vendor yang berbeda dengan representasi internal yang berbeda. Kami membangun sistem transformasi / interchange XML untuk mengirim ulang data bolak-balik. Ini berfungsi dengan baik untuk itu.
XML pada dasarnya tidak buruk, tetapi saya mengakui bahwa mendesain solusi "baik" menggunakan XML tidak sepele.
sumber
"Inti dari XML adalah ini: masalah yang diselesaikannya tidak sulit, dan itu tidak menyelesaikan masalah dengan baik." - Phil Wadler, POPL 2003
Pendapat pribadi saya adalah selama Anda tidak peduli tentang validasi, skema, XSLT, dan hal-hal buruk lainnya dan Anda menjaga ukuran file kecil (jika parsing menjadi lambat) Anda dapat menemukan beberapa kegunaan XML yang baik (contoh adalah untuk mengkonfigurasi aplikasi Anda daripada menggunakan file INI).
sumber
Dalam pengalaman saya, kebanyakan orang mengeluh tentang cara itu digunakan, bukan teknologi itu sendiri.
Bit kembung dan lambat yang dikeluhkan orang biasanya adalah perpustakaan / metode yang digunakan untuk mengambil info darinya.
Saya menggunakannya untuk menyimpan sejumlah kecil informasi terstruktur yang ingin saya simpan pada disk (tanpa basis data atau serialisasi biner), atau meneruskan ke aplikasi lain (yang pada dasarnya juga menggambarkan SOAP).
sumber
Ini Bagus karena:
Ini adalah "Antarmuka" standar yang dapat digunakan berbagai sistem heterogen untuk berkomunikasi. Dan "Manusia" Dapat Dibaca (semacam, coba menatap 5 MB XML)
Ini buruk karena:
Ukurannya lebih besar, lebih besar = lebih banyak bandwidth = lebih banyak $$
Ada alasan lain, setiap orang memiliki keluhan ...
sumber
<advanceAcceptanceIndicator>Y</advanceAcceptanceIndicator>
Rasio data / markup sangat rendah ... Saya menyebutnya "kembung". JSON, misalnya, akan hanya sebagai setengah membengkak:advanceAcceptanceIndicator: "Y"
. Ada juga fakta bahwa teks di antara tag adalah valid, jadi ketika membaca Xml, Anda perlu memutuskan apa yang harus dilakukan dengan cruft ini\n\t\t\t
, dan solusinya adalah dengan mengabaikannya saja, karena Anda tidak pernah benar-benar tertarik untuk memulainya.value
?) Mungkin akan lebih unggul juga, karena orang bisa tergoda untuk memasukkan spasi putih antara dua tag.Seperti halnya teknologi lainnya: ada banyak alat dan perpustakaan yang tersedia.
Saya tidak suka XML, terutama karena itu funky, ketika orang mengatakan itu dapat dibaca manusia, mereka bercanda, saya pikir, atau tidak pernah benar-benar membaca xml ketika seseorang mencoba menanamkan xml dalam atribut ... entitas xml membuatnya sangat tidak terbaca. Selain itu, luar biasa betapa banyak ruang yang terbuang karena tag-end yang berlebihan, dan kemampuan untuk mencampur teks dan data gratis ...
Tapi:
Ini juga memiliki keunggulan diutamakan, sebagian besar kali. Ketika Anda sudah menyediakan layanan web dalam Xml, dan seseorang meminta layanan baru ... itu mungkin akan dilakukan dalam Xml karena itulah yang Anda ketahui.
sumber
data Person = Person { surname :: String, firstName :: String, age :: Int }
jika saya kemudian melihatnyaPerson "Doe" "John" 42
dapat dibaca juga, dan menghindari banyak cacat, namun itu lebih dekat dengan koma yang dibatasi.XML adalah pilihan yang buruk untuk file yang harus dikelola oleh manusia. Tidak ada pemisahan visual antara markup dan konten, sehingga sulit dibaca. Sangat membosankan untuk menulis dengan benar tanpa editor tujuan khusus. Kesalahan dalam dokumen XML berakibat fatal; dokumen XML tidak dapat diproses sebagian. Ketika file XML tidak valid, pesan kesalahan yang dihasilkan sering tidak membantu.
Untuk file apa pun yang harus dikelola oleh manusia, saya lebih suka menggunakan JSON, YAML, atau kode sumber apa pun dalam beberapa bahasa yang ditafsirkan (Python, Ruby, Groovy, dll.). Kami telah menemukan bahwa cara terbaik untuk membuat konfigurasi XML untuk kode lawas adalah dengan menggunakan Groovy MarkupBuilder. Pilihan bagus lainnya adalah membuat bahasa khusus domain; ini cukup mudah dilakukan dengan Ruby, Groovy, dan banyak bahasa lainnya.
sumber
Parsing relatif mudah sekaligus dapat dibaca manusia pada saat yang bersamaan.
Dan beberapa parser yang bagus (Eg Xerces {c ++}) sudah tersedia.
sumber