XAML jest zasadniczo podzbiorem XML. Mówi się, że jedną z głównych zalet bazowania XAML na XML jest to, że można go sparować z istniejącymi narzędziami. I może, w dużym stopniu, chociaż (atrybuty nietrywialne) wartości atrybutów pozostaną w formie tekstowej i będą wymagały dalszej analizy.
Istnieją dwie główne alternatywy dla opisu GUI w języku pochodnym XML. Jednym z nich jest zrobienie tego, co zrobił WinForms i opisanie tego w prawdziwym kodzie. Jest z tym wiele problemów, choć nie jest to całkowicie pozbawione korzyści ( pytanie, aby porównać XAML z tym podejściem ). Inną ważną alternatywą jest zaprojektowanie całkowicie nowej składni specjalnie dostosowanej do danego zadania. Jest to ogólnie znany jako język specyficzny dla domeny .
Więc, z perspektywy czasu i jako lekcja dla przyszłych pokoleń, czy dobrym pomysłem było oparcie XAML na XML, czy też byłoby lepiej jako niestandardowy język specyficzny dla domeny? Jeśli projektujemy jeszcze lepszą platformę interfejsu użytkownika, czy powinniśmy wybrać XML lub niestandardową DSL?
Ponieważ o wiele łatwiej jest myśleć pozytywnie o status quo, szczególnie takim, które jest bardzo lubiane przez społeczność, podam kilka przykładowych powodów, dla których budowanie na bazie XML może być uważane za błąd.
Oparcie języka na XML wymaga jednej rzeczy: jest o wiele łatwiejsze do parsowania (podstawowy parser jest już dostępny), wymaga znacznie, dużo mniej pracy projektowej, a alternatywne parsery są również znacznie łatwiejsze do pisania dla programistów zewnętrznych.
Ale wynikowy język może być niezadowalający na różne sposoby. To raczej gadatliwe. Jeśli zmienisz rodzaj czegoś, musisz to zmienić w tagu zamykającym. Ma bardzo słabe poparcie dla komentarzy; nie można skomentować atrybutu. Istnieją ograniczenia nałożone na treść atrybutów przez XML. Rozszerzenia znaczników muszą być budowane „na wierzchu” składni XML, a nie głęboko do niej zintegrowane. I, mój ulubiony, jeśli ustawisz coś za pomocą atrybutu, użyjesz zupełnie innej składni niż wtedy, gdy ustawisz dokładnie to samo, co właściwość content.
Mówi się również, że ponieważ każdy zna XML, XAML wymaga mniej nauki. Ściśle mówiąc, jest to prawda, ale nauka składni to niewielki ułamek czasu poświęconego na naukę nowej struktury interfejsu użytkownika; to koncepcje szkieletu sprawiają, że krzywa jest stroma. Poza tym osobliwości języka opartego na XML mogą faktycznie zwiększyć koszyk „wymaga nauki”.
Czy te wady przeważają nad łatwością analizowania? Czy następny fajny framework powinien kontynuować tradycję, czy poświęcić czas na zaprojektowanie niesamowitej DSL, której nie da się przeanalizować za pomocą istniejących narzędzi i której składni wszyscy powinni się nauczyć?
PS Nie wszyscy mylą XAML i WPF , ale niektórzy tak. XAML jest czymś podobnym do XML. WPF to framework z obsługą powiązań, tematów, akceleracji sprzętowej i wielu innych fajnych rzeczy.
źródło
Odpowiedzi:
Jedynym istotnym powodem używania XML jest ustanowienie standardu otwartych danych. XAML jest tym samym językiem wyświetlania, który jest używany zarówno w Silverlight, jak i WPF; każdy sprzedawca może użyć tego samego standardu znaczników, aby utworzyć definicję wyświetlania dla własnej platformy i można go ponownie wykorzystać w Silverlight lub WPF.
W przemyśle lotniczym mamy pokoje kontrolne, które dzięki postępowi technologii komputerowej są obecnie dość elastyczne. W przeszłości cały sprzęt był niestandardowy, unikalny i bardzo drogi; dziś wszystko działa na niedrogich, powszechnie dostępnych komputerach z półki. To znacznie zmniejsza blokadę dostawcy. Widżety wyświetlania są nadal pisane przy użyciu ActiveX, ponieważ tak zawsze było.
ActiveX wymaga dostępu do przestarzałych narzędzi Microsoft. Air Force i Inter-Range Instrumentation Group opracowują język znaczników wyświetlania danych oparty na języku XML. Umożliwi to praktykom projektowanie ekranów przy użyciu znaczników XML w wybranym przez nich edytorze. Brzmi znajomo?
Nikt nie twierdzi, że XML nie jest pozbawiony wad. Ale to najlepsza dostępna rzecz do tego, do czego została zaprojektowana, dopóki nie pojawi się coś lepszego.
Zobacz także,
dlaczego XML nie jest do kitu
źródło
Twoje zastrzeżenia do XML nie mają nic wspólnego z używaniem go jako języka opisu GUI; wszystkie są skargami na pracę ze składnią XML, które dotyczą jednakowo dowolnej formy XML.
Brzmi więc tak, jakbyś po prostu nie lubił XML.
Masz rację, może nie być to optymalny wybór do ręcznej edycji, ale dla języka opisu GUI przedstawiłbym kilka kontrargumentów:
(IMHO,) GUI są graficzne i powinny być ułożone graficznie. Format pliku nie jest tak ważny, ponieważ naprawdę nie powinieneś edytować go ręcznie. (Tekstowe jest dobre dla kontroli źródła, ale gadatliwość nie stanowi problemu).
Oprócz dostępnego analizatora składni XML jest również łatwy do sprawdzenia: można napisać schemat DTD lub XML, a następnie użyć ogólnych narzędzi, aby stwierdzić, czy plik jest legalny. Będzie to bardzo przydatne dla języka opisu GUI. Robienie tego samego w JSON lub YAML nie jest tak proste.
Jeśli naprawdę nie jesteś zadowolony z pisania XAML bezpośrednio, nic nie stoi na przeszkodzie, aby opracować nowy format, a następnie skompilować go do XAML. Na przykład możesz wymyślić proste mapowanie z JSON na XAML, dzięki czemu możesz mieć lżejszą składnię JSON (i możliwość komentowania atrybutów), a następnie wygenerować XAML podczas tworzenia aplikacji. Ludzie rzadko piszą już HTML bezpośrednio, ale HTML jest nadal świetnym formatem.
źródło
To pytanie jest subiektywne, więc myślę, że sprawiedliwe jest opublikowanie odpowiedzi opartej na moich osobistych preferencjach.
XML jest trudny do odczytania. Na przykład otwórz ten link i kliknij „Próbka”, aby porównać XML i YAML obok siebie. Ten ostatni jest wyraźnie bardziej czytelny dla człowieka.
Jeśli chcesz użyć XML do opisania GUI, to niech cię cholernie zapewni , że zapewnisz wystarczające narzędzia, aby ludzie nie musieli patrzeć na XML.
Najwyraźniej XPF zawiodło w tym względzie.
źródło