Gez, XAML'yi XML'e dayandırmak bir hata mı yoksa iyi bir yaklaşım mı?


16

XAML aslında bir XML alt kümesidir. XAML'yi XML'ye dayandırmanın ana avantajlarından birinin, mevcut araçlarla ayrıştırılabileceği söylenir. Ve büyük ölçüde, (sözdizimsel olarak önemsiz) özellik değerleri metin biçiminde kalacak ve daha fazla ayrıştırma gerektirecektir.

XML'den türetilmiş bir dilde GUI'yi tanımlamanın iki ana alternatifi vardır. Birincisi, WinForms'un yaptıklarını yapmak ve gerçek kodda tanımlamaktır. Bununla ilgili pek çok sorun var, ancak tamamen avantajsız değil ( XAML'yi bu yaklaşımla karşılaştırmak için bir soru ). Diğer önemli alternatif, eldeki görev için özel olarak hazırlanmış tamamen yeni bir sözdizimi tasarlamaktır . Bu genellikle alana özgü bir dil olarak bilinir .

Yani, geçmişte ve gelecek nesiller için bir ders olarak, XAML'yi XML'ye dayandırmak iyi bir fikir miydi, yoksa özel olarak tasarlanmış bir etki alanına özgü dil olarak daha iyi olurdu mi? Daha iyi bir kullanıcı arayüzü çerçevesi tasarlıyor olsaydık, XML mi yoksa özel bir DSL mi seçmeliyiz?

O, statükonun hakkında olumlu oldukça topluluk tarafından sevilir özellikle birini düşünmek daha kolay olduğundan, ben XML üstünde oluşturma niçin bazı örnek nedenlerini vereceğiz olabilecek bir hata olarak kabul edilebilir.

Bir dili XML'ye dayandırmanın bir şeyi vardır: ayrıştırmak çok daha kolaydır (çekirdek ayrıştırıcı zaten mevcuttur), çok daha az tasarım çalışması gerektirir ve alternatif ayrıştırıcılar da 3. taraf geliştiriciler için yazmak çok daha kolaydır.

Ancak ortaya çıkan dil çeşitli şekillerde tatmin edici olmayabilir. Oldukça ayrıntılı. Bir şeyin türünü değiştirirseniz, onu kapanış etiketinde değiştirmeniz gerekir. Yorumlar için çok zayıf bir desteği var; bir özelliği yorumlamak imkansızdır. Niteliklerin içeriğine XML ile ilgili sınırlamalar vardır. İşaretleme uzantıları, XML sözdiziminin "üstüne", derin ve güzel bir şekilde entegre edilmemiş olarak oluşturulmalıdır. Ve benim kişisel favorim, bir özellik aracılığıyla bir şey ayarlarsanız, bir içerik özelliği ile aynı şeyi ayarlamanızdan tamamen farklı bir sözdizimi kullanırsınız .

Ayrıca herkes XML bildiğinden XAML'nin daha az öğrenmeye ihtiyacı olduğu söyleniyor. Açıkçası bu doğrudur, ancak sözdizimini öğrenmek, yeni bir kullanıcı arayüzü çerçevesi öğrenmek için harcanan zamanın küçük bir kısmıdır; eğrinin dik olmasını sağlayan çerçevenin kavramları. Ayrıca, XML tabanlı bir dilin kendine özgü ifadeleri aslında "öğrenme ihtiyacı" sepetine ekleyebilir.

Bu dezavantajlar ayrıştırma kolaylığı tarafından daha mı ağır basıyor? Bir sonraki harika çerçeve geleneği sürdürmeli mi, yoksa mevcut araçlar tarafından ayrıştırılamayan ve sözdizimi herkes tarafından öğrenilmesi gereken müthiş bir DSL tasarlamak için zaman harcamalı mı?

PS Herkes XAML ve WPF'yi karıştırmaz , ancak bazıları karıştırır . XAML XML benzeri bir şeydir. WPF, ciltleme, tema, donanım hızlandırma ve diğer birçok harika özelliği destekleyen çerçevedir.


3
Evet, bir XML ayrıştırıcı tarafından ayrıştırılabilir, ancak anlamlı / tamamen kullanılamaz. Örneğin, veri kaynaklarını ve özellik eşlemelerini tanımlamak için dize niteliklerini kullanır.
Konrad Rudolph

5
Alternatif olarak ne öneriyorsunuz? Belirli bir teknolojinin uygunluğu ile ilgili her türlü tartışmanın uygun değiştirme teknolojilerini ele alması gerekir.
Robert Harvey

2
XAML emsalleri olmadan değil. XUL, Glade ve QML aynı fikre dayanıyor. Sanırım XAML'yi haksız bir şekilde söylüyorsun.
user16764

3
XAML'nin en büyük faydasının XML ayrıştırıcıları tarafından ayrıştırılabileceği olmadığını düşünüyorum. Daha ziyade XAML, XML'e benzer ve çoğu geliştirici zaten XML ile nasıl çalışacağını biliyor ve bu nedenle öğrenme eğrisi çok daha az dik.
Juozas Kontvainis

2
@JuozasKontvainis Eğer "iş" ile "araçlarında ayrıştırmak" demek istiyorsan, o zaman evet. "Tarafından tarif edilen bir kullanıcı arayüzü yazın" demek istiyorsanız, tanıdık sözdizimi yardımcı gibi görünebilir, ancak gerçekçi olarak, yine de özniteliklerin içine ne koyacağınızı öğrenmeniz gerekir (çünkü bu XML değildir) ve bu çok zor kişisel deneyimlerime göre. Yeni bir sözdizimini öğrenmek, özellikle de basit ve iyi tasarlanmışsa, bence önemsizdir.
Roman Starkov

Yanıtlar:


4

XML kullanmanın tek zorlayıcı nedeni açık bir veri standardı oluşturmaktır. XAML, hem Silverlight hem de WPF'de kullanılan görüntüleme dilinin aynısıdır; herhangi bir tedarikçi kendi platformu için bir ekran tanımı oluşturmak için aynı biçimlendirme standardını kullanabilir ve Silverlight veya WPF'de yeniden kullanılabilir.

Havacılık ve uzay endüstrisinde, bilgisayar teknolojisindeki gelişmeler sayesinde artık oldukça esnek olan kontrol odalarımız var. Geçmişte, tüm donanım özel, benzersiz ve çok pahalıydı; bugün hepsi ucuz, yaygın olarak bulunan, kullanıma hazır PC'lerle çalışıyor. Bu, satıcı kilidini büyük ölçüde azaltır. Ancak, ekran widget'ları hala ActiveX kullanılarak yazılır, çünkü her zaman böyle yapılır.

ActiveX, kullanılmayan Microsoft araçlarına erişim gerektirir. Hava Kuvvetleri ve Aralıklar Arası Enstrümantasyon Grubu , XML tabanlı bir Veri Görüntüleme İşaretleme Dili ile geliyor. Bu, uygulayıcıların seçtikleri düzenleyicide XML işaretlemesi kullanarak ekranlar tasarlamasına olanak tanır. Kulağa tanıdık geliyor mu?

Hiç kimse XML'in hatasız olmadığını iddia etmez. Ancak, daha iyi bir şey gelene kadar yapmak için tasarlandığı şey için mevcut en iyi şey.

Ayrıca XML'in Neden Emmediğine Bakın


3
Aynı akıl yürütmenin, örneğin YACC dilbilgisi açıklamaları, TeX, regexes, Verilog ve hatta LISP gibi şeyler için de aynı derecede geçerli olduğunu kabul eder misiniz? Bunların her biri için özel bir sözdizimi hazırladık. İlk paragrafta listelediğiniz şekilde faydalanırlar. O zaman XML, sizin bahsettiğiniz hedefleri karşıladığından, onlar için XML kullanmanın doğru olacağını takip etmiyor mu?
Roman Starkov

Yalnızca XML, evrensel veri meta standardı olarak tanınır ve buradan istediğiniz kadar bireysel veri standardı oluşturabilirsiniz. Suların çamurlanmasını önlemek için ilk paragrafı kaldırdım.
Robert Harvey

S ifadeleri hiçbir zaman meta veri standardı olarak yakalanmadı, belki de hiç kimse bu aptal parantezleri sevmiyordu. Ubiquity burada zorlayıcı faktör; bahsettiğiniz bu alternatif sözdizimlerinin tümü, eğer bu kadar eğimli iseniz XML'de temsil edilebilir.
Robert Harvey

2
Hepsi YAML ve JSON'da da temsil edilebilir (ya da tam tersi).
Timwi

2
Bu argüman boyunca gördüğüm büyük bir sorun, XAML'nin gerçekten veri olmadığıdır. Elbette, sadece bir nesne grafiği olarak ele alınabilir, ancak bu tür bir düşünce muhtemelen birçok insanın neden sevmediği ve neden böyle bir öğrenme eğrisine sahip olduğudur. msgstr "hey bir nesne grafiği yapalım, er, yani bir kullanıcı arayüzü". Nasıl daha iyi hale getirilebileceği hakkında hiçbir fikrim yok, ancak bunun olabileceğinden eminim.
Earlz

2

XML'e yönelik itirazlarınızın bunun bir GUI açıklama dili olarak kullanılmasıyla ilgisi yoktur; hepsi, herhangi bir XML biçimine eşit olarak uygulanan XML sözdizimi ile çalışma ile ilgili şikayetlerdir.

Yani XML gibi değil.

Haklısınız, elle düzenlemek için en uygun seçenek olmayabilir, ancak bir GUI açıklama dili için bazı karşı argümanlar yaparım:

  1. (IMHO,) GUI'leri grafikseldir ve grafiksel olarak yerleştirilmelidir. Dosya formatı o kadar önemli değil, çünkü elle düzenlememelisiniz. (Metin tabanlı, kaynak denetiminin iyiliği için iyidir, ancak ayrıntı düzeyi bir sorun değildir.)

  2. Ayrıştırıcının kullanılabilir olmasının yanı sıra, XML'nin doğrulanması da kolaydır: bir DTD veya XML Şeması yazabilir ve ardından dosyanızın yasal olup olmadığını söylemek için genel araçları kullanabilirsiniz. Bu bir GUI açıklama dili için çok yararlı olacaktır. Aynı şeyi JSON veya YAML'de yapmak o kadar kolay değildir.

  3. XAML'yi doğrudan yazmaktan gerçekten memnun değilseniz, yeni bir biçim geliştirmenizi ve ardından bunu XAML'de derlemenizi engelleyen hiçbir şey yoktur. Örneğin, JSON'dan XAML'ye basit bir eşleme bulabilir, böylece JSON'un daha hafif sözdizimine (ve nitelikleri yorumlama yeteneğine) sahip olabilir ve ardından uygulamanızı oluştururken XAML'yi oluşturabilirsiniz. İnsanlar nadiren HTML'yi doğrudan yazıyor, ancak HTML hala harika bir format.


1
XML'i severim; Sadece elle yazmayı sevmiyorum. 1. Evet, öyle olmalı, ama gerçek şu ki, Visual Studio gerçekten bunu kaldıramaz. 3. Bu, XAML'nin geriye dönüp bakıldığında kötü bir fikir olup olmadığı tartışmasına diktir. Evet, biri olabilir, ama XAML'nin kötü bir seçim olmasa neden bir kişiye ihtiyacı var ?
Roman Starkov

1
Demek istediğim, onu tamamen yazma kriterlerine göre yargıladığınız; endişeleriniz de onaylama ve yorumlama ile dengelenmelidir. Yazması daha hoş olan bir DSL'nin ayrıştırılması neredeyse kesinlikle daha zor olurdu. Ancak bir ara derleme adımı size her iki dünyanın en iyisini verebilir.
benzado

0

Bu soru özneldir, bu yüzden kişisel tercihime dayalı bir cevap yayınlamanın adil olduğunu düşünüyorum.

XML okumak zor. Örneğin, XML ve YAML'yi yan yana karşılaştırmak için bu bağlantıyı açın ve "Örnek" i tıklayın. İkincisi açıkça daha çok insan tarafından okunabilir.

Bir GUI'yi tanımlamak için XML kullanmak istiyorsanız , insanların XML'e bakmak zorunda kalmaması için yeterli araç sağladığınızdan emin olmalısınız.

Açıkça XPF bu konuda başarısız oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.