XML'in amacını anlıyorum, ancak insanların her zaman ne kadar KÖTÜ olduğunu şikayet ettiklerini duyuyorum? Bu konuda neyin kötü olduğunu gerçekten anlamıyorum? Genellikle "şişirilmiş" ve "yavaş" terimlerinin duyulduğunu duyarım.
Ama sanırım programcı olarak, bunu esas olarak ne için kullanıyorsunuz? Ve bunu gerçekten "kötü" olarak mı düşünüyorsunuz ... çünkü eğer öyleyse, çok sayıda insan veri taşımak için kullanıyor ...
Xml, tasarlandığı şey için harikadır - düşük seviyelerde veri doğrulamasını zorunlu kılmak için bazı yeteneklere sahip, platformdan bağımsız, insan tarafından okunabilir bir veri aktarım protokolü. Bu şekilde Xml kullanan herkesin gerçek bir şikayeti olduğundan şüpheliyim. En özlü tel formatı mı? Hayır. Ama daha kötü seçenekler var. Özel ikili biçiminizi okumak kadar hızlı mı? Hayır. Ancak iş ortaklarınız, kullandıkları yığında okuyabilir.
Ancak sorun şu ki, insanlar - özellikle kurumsal mimarlar olarak bilinen cins - şeytani ve iyi şeyler alıp onları kötü yapıyorlar. Xml durumunda, bu yüzyılın başlarında Xml, her BT sorunu için evrensel çekiç olarak görüldü. Komite tarafından küçük bir tasarıma serpiştirin ve SOAP ve oXML gibi korkunç canavarlıklarla sonuçlanın.
XML sadece birçok lezzet ve kullanımda gelen bir araçtır. XML bazı şeylerde mükemmel, bazılarında berbat. Bence sorunlardan biri insanların ad alanları ve etrafa saçılmış bok (SOAP, kimse?) İle gereksiz yere karmaşık "kurumsal" XML görmüş olmasıdır. İnsanlar için XML formatları tasarlamanın püf noktası, verilerin okunmasını zorlaştırmazken verilere gerçek bir anlam katıyor.
İnsanların sorun yaşadıkları şeylerden biri, XML'nin bazen bir karakter veya eksik bir parantez tıklamasıdır. Bununla birlikte, bunun için hem bir yukarı hem de bir dezavantaj var. Bunun tersi, farklı yarı geçersiz sözdizimi vakalarının farklı şekilde yorumlanabileceği HTML'de olduğu gibi belirsizliğe sahip olmamanızdır.
Dezavantajı yazar için biraz daha zor ve öğrenmesi zor. HTML, XML kadar katı olsaydı, web'in bu kadar hızlı olmayacağı yönünde bir argüman olduğunu kabul ediyorum, ancak bugün yaptıkça memnun olacağımızı da iddia ediyorum. :)
Ayrıca, bunu yapabildiğiniz için her şey için kullanmayın, uygun şekilde uygulamak için mantıklı ve yargıya sahip olun. Tek sahip olduğunuz XML ise, her zaman istediğinizden uzak bir XSLT dönüşümü olma eğilimindesiniz. :)
Biçimin yalnızca insanların onunla etkileşim kurması gerektiğinde önemli olduğunu iddia ediyorum. Bir şeyi serileştiren ve başka bir program tarafından tüketileceği bir yere gönderen bir program yazıyorsanız, olabildiğince verimli olduğu sürece kimin umurunda? Tüm umurumda için bir ikili biçim veya bunnies ve tek boynuzlu atlar kullanın.
Jeff Atwood'un XML: The Angle Bracket Tax adresinde oldukça iyi bir blog yazısı var.
Bunun için en yaygın kullanımları:
Hizmetler birbirleriyle konuşuyor. Örneğin, bir içerik yönetim sistemi kullanan bir web sitesi, bir müşteri ilişkileri yönetim sistemine bazı veriler göndermek zorundadır ve bu XML ile yapılır.
Yapılandırma deposu. Web.config ve app.config yaygın örneklerdir, ancak nAnt komut dosyaları da bunlara XML ekleyebilir.
Bunun en uygun olduğunu düşünmüyorum ama bu tek başıma zihnimi kötü yapmıyor.
İki sebep:
Genellikle "şişirilmiş" ve "yavaş" terimlerinin duyulduğunu duyarım.
En kompakt sözdizimi değil, ama açıkça en etkileyici sözdizimi. İnsan tarafından okunabilir mi? dilinizi nasıl tasarladığınıza bağlıdır. Çoğu insan XML için bir dil tasarlamaz, sadece nesneleri XML olarak serileştirir.
… Neden bu kadar çok insan kullanıyor?
Her yerde var. XQuery ile bir XML veritabanını sorgulayabilir, XSLT ile sonuçları XHTML veya Atom olarak dönüştürebilir, Atom veya diğer web hizmetlerinden başka bir XML biçimi alabilir, XForms kullanan kullanıcılardan XML alabilir, XMLSchema ile doğrulayabilirsiniz , Relax NG veya Schematron, XProc ile işleyin, XQuery Update ile veritabanına geri kaydedin.
XML bir serileştirme teknolojisi değildir, genel amaçlı bir bilgi kümesidir.
Burada, farklı dahili temsillere sahip farklı satıcılar tarafından yapılan farklı sistemler arasında veri alışverişi için kullanıyoruz. Verileri ileri geri yönlendirmek için bir XML dönüşüm/değişim sistemi oluşturuyoruz. Bunun için iyi çalışıyor.
XML doğası gereği kötü değil, ama XML kullanarak "iyi" bir çözüm tasarlamanın önemsiz olmadığını kabul ediyorum.
"XML'in özü şudur: çözdüğü sorun zor değildir ve sorunu iyi çözmez." - Phil Wadler, POPL 2003
Kişisel düşüncem, doğrulama, şemalar, XSLT'ler ve geri kalan çirkin şeyleri önemsemediğiniz ve dosyaların boyutunu küçük tuttuğunuz sürece (aksi takdirde ayrıştırma yavaşlar) XML'in bazı iyi kullanımlarını bulabilirsiniz (bir örnek INI dosya) yerine uygulamanızı yapılandırmak içindir.
Deneyimlerime göre, insanlar teknolojinin kendisinden değil, çoğunlukla nasıl kullanıldığından şikayet ediyorlar.
İnsanların şikayet ettiği şişkin ve yavaş bitler genellikle ondan bilgi almak için kullanılan kütüphaneler/yöntemlerdir.
Diskte depolamak istediğim (veritabanı veya ikili serileştirme olmadan) küçük miktarlarda yapılandırılmış bilgi depolamak veya başka bir uygulamaya geçmek için kullanıyorum (aslında SOAP da açıklanmaktadır).
İyi çünkü:
Birden fazla heterojen sistemin iletişim kurmak için kullanabileceği bir standart "Arayüz". Ve "İnsan" Okunabilir (bir çeşit, 5 MB XML'e bakmayı deneyin)
Kötü çünkü:
Şişirilmiş, daha büyük boyutu = daha fazla bant genişliği = daha fazla $$
Başka nedenleri var, herkesin farklı bir tutuşu var ...
Diğer tüm teknolojilerde olduğu gibi: Mevcut birçok araç ve kütüphane vardır.
XML'i sevmiyorum, özellikle korkak, insanlar insan tarafından okunabilir olduğunu söylediğinde, şaka yapıyorlar, sanırım ya da bir özelliği xml'yi bir özniteliğe gömmeye çalıştığında hiç bir xml okumadım ... xml varlıkları gerçekten okunmaz. Ayrıca, gereksiz bitiş etiketi ve serbest metin ve verileri karıştırma yeteneği nedeniyle ne kadar alanın boşa harcanması şaşırtıcı ...
Ama:
Aynı zamanda, önceliğin avantajına sahiptir, çoğu zaman. Zaten Xml'de web hizmetleri sunuyorsanız ve biri yeni bir hizmet istediğinde ... muhtemelen Xml'de yapılacaktır, çünkü bildiğiniz şey budur.