LINQ to XML ile diğer XML teknolojileri karşılaştırması

Bu makalede LINQ ile XML şu XML teknolojileri karşılaştırır: XmlReader, XSLT, MSXML ve XmlLite. Bu bilgiler, hangi teknolojileri kullanacağınıza karar vermenize yardımcı olabilir.

LINQ to XML ile Belge Nesne Modeli (DOM) karşılaştırması için bkz . LINQ to XML vs. DOM.

LINQ to XML vs. XmlReader

XmlReader hızlı, yalnızca ileri, önbelleğe almayan bir ayrıştırıcıdır.

LINQ to XML, üzerinde XmlReaderuygulanır ve sıkı bir şekilde tümleştirilir. Ancak, doğrudan da kullanabilirsiniz XmlReader .

Örneğin, saniyede yüzlerce XML belgesini ayrıştıracak bir Web hizmeti oluşturduğunuzu ve belgelerin aynı yapıya sahip olduğunu, yani XML'yi ayrıştırmak için kodun yalnızca bir uygulamasını yazmanız gerekeceğini varsayalım. Bu durumda, büyük olasılıkla doğrudan kullanmak XmlReader istersiniz.

Buna karşılık, çok sayıda daha küçük XML belgesini ayrıştıran bir sistem oluşturuyorsanız ve her biri farklıysa, LINQ to XML'nin sağladığı üretkenlik geliştirmelerinden yararlanmak istersiniz.

LINQ to XML ile XSLT karşılaştırması

Hem LINQ to XML hem de XSLT kapsamlı XML belge dönüştürme özellikleri sağlar. XSLT kural tabanlı, bildirim temelli bir yaklaşımdır. Gelişmiş XSLT programcıları, XSLT'i durum bilgisi olmayan bir yaklaşımı vurgulayan işlevsel bir programlama stilinde yazar. Dönüştürmeler, yan etkileri olmadan uygulanan saf işlevler kullanılarak yazılabilir. Bu kural tabanlı veya işlevsel yaklaşım birçok geliştirici tarafından tanınmaz ve öğrenmesi zor ve zaman alabilir.

XSLT, yüksek performanslı uygulamalar sağlayan üretken bir sistem olabilir. Örneğin, bazı büyük Web şirketleri farklı türlerdeki veri depolarından çekilen XML'den HTML oluşturmanın bir yolu olarak XSLT kullanır. Yönetilen XSLT altyapısı, XSLT'yi ortak dil çalışma zamanı (CLR) koduna derler ve bazı senaryolarda yerel XSLT altyapısından daha iyi performans gösterir.

Ancak XSLT, birçok geliştiricinin sahip olduğu C# ve Visual Basic bilgilerinden yararlanmaz. Geliştiricilerin farklı ve karmaşık bir programlama dilinde kod yazmasını gerektirir. C# (veya Visual Basic) ve XSLT gibi tümleşik olmayan iki geliştirme sisteminin kullanılması, geliştirilmesi ve bakımı daha zor olan yazılım sistemleriyle sonuçlanıyor.

LINQ to XML sorgu ifadelerini kullanmada ustalaştıktan sonra, LINQ to XML dönüştürmeleri kullanımı kolay güçlü bir teknolojidir. Temel olarak, XML belgenizi işlevsel yapıyı kullanarak, çeşitli kaynaklardan veri çekerek, nesneleri dinamik olarak oluşturarak XElement ve tamamını yeni bir XML ağacına birleştirerek oluşturursunuz. Dönüştürme tamamen yeni bir belge oluşturabilir. LINQ to XML'de dönüştürmeler oluşturmak nispeten kolay ve sezgiseldir ve sonuçta elde edilen kod okunabilir. Bu, geliştirme ve bakım maliyetlerini azaltır.

LINQ to XML, XSLT'nin yerini alacak şekilde tasarlanmamıştır. XSLT, özellikle belgenin yapısı iyi tanımlanmamışsa karmaşık ve belge merkezli XML dönüştürmeleri için hala tercih edilir.

XSLT, World Wide Web Konsorsiyumu (W3C) standardı olmanın avantajına sahiptir. Yalnızca standart olan teknolojileri kullanmanız gerekiyorsa XSLT daha uygun olabilir.

XSLT XML'dir ve bu nedenle program aracılığıyla değiştirilebilir.

LINQ to XML ile MSXML karşılaştırması

MSXML, Microsoft Windows'a dahil olan XML'yi işlemek için COM tabanlı bir teknolojidir. MSXML, DOM'un XPath ve XSLT desteğiyle yerel bir uygulamasını sağlar. Ayrıca SAX2 önbelleğe almayan, olay tabanlı ayrıştırıcıyı da içerir.

MSXML iyi performans gösterir, çoğu senaryoda varsayılan olarak güvenlidir ve AJAX stili uygulamalarda istemci tarafı XML işlemesi yapmak için bir tarayıcıda erişilebilir. MSXML, C++, JavaScript ve Visual Basic 6.0 dahil olmak üzere COM'u destekleyen herhangi bir programlama dilinden kullanılabilir.

MSXML' nin CLR tabanlı yönetilen kodda kullanılması önerilmez.

LINQ to XML vs. XmlLite

XmlLite önbelleğe almayan, yalnızca ileriye doğru bir çekme ayrıştırıcısıdır. Geliştiriciler öncelikle C++ ile XmlLite kullanır. Geliştiricilerin yönetilen kodla XmlLite kullanması önerilmez.

XmlLite'in temel avantajı, çoğu senaryoda güvenli olan basit ve hızlı bir XML ayrıştırıcısı olmasıdır. Tehdit yüzeyi alanı küçüktür. Güvenilmeyen belgeleri ayrıştırmak zorundaysanız ve hizmet reddi veya verilerin açığa çıkarılması gibi saldırılara karşı koruma sağlamak istiyorsanız, XmlLite iyi bir seçenek olabilir.

XmlLite, DilLe Tümleşik Sorgu (LINQ) ile tümleştirilmez. LINQ'in arkasındaki motivasyon gücü olan programcı üretkenliği geliştirmelerini sağlamaz.

Ayrıca bkz.