ในความเข้าใจย้อนหลังการอ้างอิง XAML บน XML เป็นความผิดพลาดหรือแนวทางที่ดีหรือไม่?


16

XAML เป็นส่วนหนึ่งของ XML หนึ่งในประโยชน์หลักของการอ้างอิง XAML บน XML คือว่าสามารถแยกวิเคราะห์ด้วยเครื่องมือที่มีอยู่ และในระดับมากถึงแม้ว่าค่าแอตทริบิวต์ (syntactically non-trivial) จะยังคงอยู่ในรูปแบบข้อความและต้องการการแยกวิเคราะห์เพิ่มเติม

มีสองทางเลือกหลักในการอธิบาย GUI ในภาษาที่ได้จาก XML หนึ่งคือการทำสิ่งที่ WinForms ทำและอธิบายด้วยรหัสจริง มีปัญหามากมายเกี่ยวกับสิ่งนี้แม้ว่าจะไม่ได้ประโยชน์อย่างสมบูรณ์ ( คำถามเพื่อเปรียบเทียบ XAML กับแนวทางนี้ ) ทางเลือกที่สำคัญอื่น ๆ คือการออกแบบไวยากรณ์ใหม่ทั้งหมดที่ปรับแต่งเป็นพิเศษสำหรับงานในมือ นี้เป็นที่รู้จักกันโดยทั่วไปเป็นโดเมนภาษาเฉพาะ

ดังนั้นในความเข้าใจย้อนหลังและเป็นบทเรียนสำหรับคนรุ่นต่อไปในอนาคตมันเป็นความคิดที่ดีที่จะยึด XAML บน XML หรือจะดีกว่าในฐานะภาษาเฉพาะโดเมนที่ออกแบบเองหรือไม่? หากเราออกแบบกรอบ UI ที่ดียิ่งขึ้นเราควรเลือก XML หรือ DSL ที่กำหนดเองหรือไม่

เนื่องจากเป็นการง่ายกว่าที่จะคิดในแง่บวกเกี่ยวกับสภาพที่เป็นอยู่โดยเฉพาะอย่างยิ่งสิ่งที่ชุมชนชื่นชอบมากฉันจะให้เหตุผลบางอย่างเกี่ยวกับสาเหตุที่การสร้างส่วนบนของ XML อาจถือเป็นข้อผิดพลาด

การแยกภาษาออกจาก XML มีสิ่งหนึ่งเกิดขึ้น: แยกวิเคราะห์ได้ง่ายกว่า (ตัวแยกวิเคราะห์หลักมีอยู่แล้ว) ต้องการงานออกแบบที่น้อยกว่ามาก

แต่ภาษาที่เกิดขึ้นอาจไม่เป็นที่พอใจในหลาย ๆ ด้าน มันค่อนข้าง verbose หากคุณเปลี่ยนประเภทของบางสิ่งคุณต้องเปลี่ยนในแท็กปิด มีการสนับสนุนที่ไม่ดีสำหรับความคิดเห็น เป็นไปไม่ได้ที่จะออกความเห็นเกี่ยวกับคุณลักษณะ มีข้อ จำกัด เกี่ยวกับเนื้อหาของแอตทริบิวต์โดย XML ส่วนขยายมาร์กอัปจะต้องมีการสร้าง "ด้านบน" ของไวยากรณ์ XML ซึ่งไม่ได้รวมอยู่ในนั้นอย่างลึกซึ้ง และรายการโปรดส่วนตัวของฉันหากคุณตั้งค่าบางอย่างผ่านแอททริบิวคุณจะใช้ไวยากรณ์ต่างกันโดยสิ้นเชิงกว่าถ้าคุณตั้งค่าสิ่งเดียวกันกับคุณสมบัติเนื้อหา

มีการกล่าวอีกว่าเนื่องจากทุกคนรู้จัก XML จึงจำเป็นต้องเรียนรู้น้อย การพูดอย่างเคร่งครัดนี้เป็นความจริง แต่การเรียนรู้ไวยากรณ์เป็นส่วนเล็ก ๆ ของเวลาที่ใช้ในการเรียนรู้กรอบ UI ใหม่ เป็นแนวคิดของกรอบงานที่ทำให้เส้นโค้งชัน นอกจากนี้สำนวนของภาษาที่ใช้ XML อาจเพิ่มลงในตะกร้า "ต้องการเรียนรู้"

ข้อเสียเหล่านี้มีน้ำหนักเกินกว่าความสะดวกในการแยกวิเคราะห์หรือไม่ เฟรมเวิร์กสุดเจ๋งต่อไปควรดำเนินต่อไปตามประเพณีหรือใช้เวลาในการออกแบบ DSL ที่ยอดเยี่ยมซึ่งไม่สามารถแยกวิเคราะห์ได้ด้วยเครื่องมือที่มีอยู่และทุกคนต้องเรียนรู้ไวยากรณ์

PS ไม่ใช่ทุกคนที่สับสนXAMLและWPFแต่บางคนก็ทำ XAML เป็นสิ่งที่คล้ายกับ XML WPF เป็นเฟรมเวิร์กที่รองรับการเชื่อมโยงการเร่งฮาร์ดแวร์และสิ่งดีๆอื่น ๆ อีกมากมาย


3
ใช่มันสามารถแยกวิเคราะห์โดยตัวแยกวิเคราะห์ XML แต่ไม่ได้มีความหมาย / สมบูรณ์ ตัวอย่างเช่นมันใช้คุณลักษณะสตริงเพื่อกำหนดแหล่งข้อมูลและการแมปคุณสมบัติ
Konrad Rudolph

5
คุณเสนออะไรเป็นทางเลือก? การอภิปรายเกี่ยวกับความเหมาะสมของเทคโนโลยีเฉพาะจะต้องระบุเทคโนโลยีทดแทนที่เหมาะสม
Robert Harvey

2
XAML ไม่ได้อยู่โดยปราศจากคู่หูคุณรู้ไหม XUL, Glade และ QML ล้วน แต่มีพื้นฐานมาจากแนวคิดเดียวกัน ฉันคิดว่าคุณกำลังออก XAML อย่างไม่เป็นธรรม
user16764

3
ฉันคิดว่าประโยชน์ที่ใหญ่ที่สุดของ XAML ไม่ใช่การแยกวิเคราะห์โดยตัวแยกวิเคราะห์ XML ค่อนข้างเป็นที่ XAML คล้ายกับ XML และนักพัฒนาส่วนใหญ่รู้วิธีทำงานกับ XML แล้วและการเรียนรู้จึงน้อยลงมาก
Juozas Kontvainis

2
@JozozKontvainis หาก "ทำงาน" คุณหมายถึง "แยกวิเคราะห์ในเครื่องมือ" แล้วใช่ หากคุณหมายถึง "เขียน UI ที่อธิบายโดย" ไวยากรณ์ที่คุ้นเคยอาจดูเหมือนช่วย แต่ในความเป็นจริงคุณยังต้องเรียนรู้สิ่งที่จะใส่ในแอตทริบิวต์ (เพราะไม่ใช่ XML) และนั่นคือสิ่งที่ยากที่สุด สิ่งในประสบการณ์ส่วนตัวของฉัน การเรียนรู้ไวยากรณ์ใหม่โดยเฉพาะอย่างยิ่งถ้ามันเป็นเรื่องง่ายและได้รับการออกแบบมาอย่างดี
Roman Starkov

คำตอบ:


4

เหตุผลที่น่าสนใจเพียงอย่างเดียวในการใช้ XML คือการสร้างมาตรฐานข้อมูลแบบเปิด XAML เป็นภาษาที่แสดงเดียวกันกับที่ใช้ใน Silverlight และ WPF ผู้ขายใด ๆ สามารถใช้มาตรฐานมาร์กอัปเดียวกันเพื่อสร้างนิยามการแสดงผลสำหรับแพลตฟอร์มของตนเองและสามารถนำมาใช้ซ้ำใน Silverlight หรือ WPF

ในอุตสาหกรรมการบินและอวกาศเรามีห้องควบคุมที่ต้องขอบคุณความก้าวหน้าของเทคโนโลยีคอมพิวเตอร์ซึ่งมีความยืดหยุ่นอย่างสมเหตุสมผล ในอดีตฮาร์ดแวร์ทั้งหมดเป็นแบบกำหนดเองไม่ซ้ำใครและมีราคาแพงมาก วันนี้ทุกอย่างทำงานด้วยพีซีราคาถูกที่หาได้ทั่วไป สิ่งนี้ช่วยลดการล็อกผู้ขายลงอย่างมากอย่างไรก็ตามวิดเจ็ตการแสดงยังคงเขียนโดยใช้ ActiveX เพราะนั่นเป็นวิธีที่ทำมาตลอด

ActiveX ต้องการการเข้าถึงเครื่องมือของ Microsoft ที่ล้าสมัยแล้ว ดังนั้นกองทัพอากาศและกลุ่มเครื่องมือวัดระยะจึงมีภาษามาร์กอัปแสดงข้อมูลซึ่งใช้ XML สิ่งนี้จะช่วยให้ผู้ปฏิบัติงานออกแบบหน้าจอโดยใช้มาร์กอัป XML ในเครื่องมือแก้ไขที่เลือกไว้ ฟังดูคุ้น ๆ ไหม?

ไม่มีใครโต้แย้งว่า XML ไม่ได้ไม่มีข้อบกพร่อง แต่มันเป็นสิ่งที่ดีที่สุดสำหรับสิ่งที่มันถูกออกแบบมาให้ทำจนกว่าสิ่งที่ดีกว่ามาพร้อม

ดูเพิ่มเติม
ว่าทำไม XML จึงไม่ดูด


3
คุณเห็นด้วยหรือไม่ว่าการใช้เหตุผลแบบเดียวกันนั้นใช้ได้ดีกับสิ่งต่าง ๆ เช่นพูดคำอธิบายไวยากรณ์ YACC, TeX, regexes, Verilog และ LISP เราสร้างไวยากรณ์พิเศษสำหรับแต่ละรายการเหล่านี้ พวกเขาจะได้รับประโยชน์ในลักษณะเดียวกับที่คุณเขียนไว้ในย่อหน้าแรก ถ้าเช่นนั้นการใช้ XML สำหรับพวกเขาจะไม่ใช่สิ่งที่ถูกต้องเพราะ XML ตรงกับเป้าหมายที่คุณกล่าวถึงหรือไม่
Roman Starkov

XML เท่านั้นที่ได้รับการยอมรับอย่างกว้างขวางว่าเป็นมาตรฐานข้อมูลเมตาดาต้าสากลซึ่งคุณสามารถสร้างมาตรฐานข้อมูลส่วนบุคคลได้มากเท่าที่คุณต้องการ เพื่อหลีกเลี่ยงการโคลนน้ำฉันได้ลบวรรคแรก
Robert Harvey

S-expressions ไม่เคยเป็นมาตรฐานของเมตาดาต้าอาจเป็นเพราะไม่มีใครชอบวงเล็บที่โง่ ๆ ความแพร่หลายเป็นปัจจัยที่น่าสนใจที่นี่; ไวยากรณ์สำรองทั้งหมดที่คุณกล่าวถึงสามารถแสดงใน XML ได้หากคุณมีความโน้มเอียง
Robert Harvey

2
พวกเขาทั้งหมดสามารถแสดงใน YAML และ JSON ด้วย (และในทางกลับกัน)
Timwi

2
ปัญหาใหญ่อย่างหนึ่งที่ฉันเห็นตลอดการโต้แย้งนี้คือ XAML ไม่ใช่ข้อมูลจริงๆ แน่นอนว่ามันอาจได้รับการปฏิบัติเหมือนเป็นกราฟวัตถุ แต่ความคิดแบบนี้อาจเป็นเหตุผลว่าทำไมผู้คนจำนวนมากไม่ชอบและทำไมมันถึงมีช่วงการเรียนรู้เช่นนี้ "เฮ้ไปสร้างกราฟวัตถุเอ่อฉันหมายถึงส่วนต่อประสานผู้ใช้" ฉันไม่รู้ว่ามันจะทำให้ดีขึ้นได้อย่างไร แต่ฉันมั่นใจว่ามันจะเป็นเช่นนั้น
Earlz

2

การคัดค้านของคุณไปยัง XML ไม่เกี่ยวข้องกับการใช้มันเป็นภาษาคำอธิบาย GUI พวกเขาทั้งหมดร้องเรียนเกี่ยวกับการทำงานกับไวยากรณ์ XML ที่ใช้กับรูปแบบของ XML ใด ๆ

ดังนั้นดูเหมือนคุณจะไม่ชอบ XML

คุณพูดถูกมันอาจไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับการแก้ไขด้วยมือ แต่สำหรับภาษาคำอธิบาย GUI ที่ฉันต้องการโต้เถียง:

  1. (IMHO,) GUIs เป็นกราฟิกและควรวางกราฟิก รูปแบบไฟล์นั้นไม่สำคัญจริง ๆ เพราะคุณไม่ควรแก้ไขด้วยมือ (ข้อความเป็นสิ่งที่ดีเพื่อประโยชน์ของการควบคุมแหล่ง แต่ความฟุ่มเฟื่อยไม่เป็นปัญหา)

  2. นอกจากตัวแยกวิเคราะห์ที่พร้อมใช้งานแล้ว XML ยังง่ายต่อการตรวจสอบ: คุณสามารถเขียน DTD หรือ XML Schema แล้วใช้เครื่องมือทั่วไปเพื่อบอกคุณว่าไฟล์ของคุณถูกกฎหมายหรือไม่ สิ่งนี้จะมีประโยชน์มากสำหรับภาษาคำอธิบาย GUI การทำเช่นเดียวกันใน JSON หรือ YAML นั้นไม่ตรงไปตรงมา

  3. หากคุณไม่พอใจกับการเขียน XAML โดยตรงไม่มีสิ่งใดที่จะป้องกันไม่ให้คุณพัฒนารูปแบบใหม่แล้วรวบรวมมันลงใน XAML ตัวอย่างเช่นคุณสามารถทำแผนที่ตรงไปตรงมาจาก JSON ถึง XAML เพื่อให้คุณมีไวยากรณ์ที่เบากว่าของ JSON (และความสามารถในการแอตทริบิวต์การแสดงความคิดเห็นออก) แล้วสร้าง XAML เมื่อคุณสร้างแอปของคุณ ผู้คนไม่ค่อยเขียน HTML โดยตรงอีกต่อไป แต่ HTML ยังคงเป็นรูปแบบที่ยอดเยี่ยม


1
ฉันชอบ XML ฉันไม่ชอบเขียนด้วยมือ 1. ใช่พวกเขาควรจะ แต่ความจริงก็คือ Visual Studio ไม่สามารถดึงสิ่งนั้นออกมาได้ 3. นี่เป็นมุมฉากของการอภิปรายว่า XAML เป็นปัญหาย้อนหลังหรือไม่ ใช่ใครทำได้ แต่ทำไมคนเราต้องทำถ้า XAML ไม่ใช่ตัวเลือกที่ไม่ดี?
Roman Starkov

1
ประเด็นของฉันคือคุณกำลังตัดสินโดยสิ้นเชิงกับเกณฑ์การเขียน ข้อกังวลของคุณจะต้องมีความสมดุลกับการตรวจสอบและการตีความเช่นกัน DSL ที่ดีกว่าในการเขียนคงจะยากที่จะแยกวิเคราะห์ แต่ขั้นตอนการคอมไพล์กลางสามารถมอบสิ่งที่ดีที่สุดให้กับคุณทั้งสองโลก
benzado

0

คำถามนี้เป็นอัตวิสัยดังนั้นฉันคิดว่ามันยุติธรรมที่จะโพสต์คำตอบที่อิงตามความชอบส่วนตัวของฉัน

XML อ่านยาก ตัวอย่างเช่นเปิดลิงก์นี้และคลิก "ตัวอย่าง" เพื่อเปรียบเทียบ XML และ YAML เคียงข้างกัน ชัดเจนหลังมนุษย์อ่านได้มากขึ้น

หากคุณต้องการใช้ XML เพื่ออธิบาย GUI คุณควรถูกสาปให้แน่ใจว่าคุณมีเครื่องมือเพียงพอที่มนุษย์จะไม่ต้องดู XML

เห็นได้ชัดว่า XPF ล้มเหลวในเรื่องนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.