ใน MVVMCROSS ทั้ง Databinding สวิสและแบบคล่องแคล่วใช้สำหรับการเชื่อมต่อมุมมองเพื่อดูโมเดล แต่พวกเขามีจุดประสงค์ที่แตกต่างกันเล็กน้อยและเป็นที่ต้องการในสถานการณ์ที่แตกต่างกัน
Swiss Databinding
Swiss Databinding นำเสนอไวยากรณ์ที่สะอาดและน้อยกว่า verbose เมื่อเทียบกับ JSON Databinding รุ่นก่อน มันมีประโยชน์อย่างยิ่งเมื่อคุณต้องการกำหนดการผูกในลักษณะที่ตรงไปตรงมามักจะโดยตรงในไฟล์เลย์เอาต์ XML โดยตรง การเชื่อมโยงของสวิสนั้นง่ายต่อการอ่านและเขียนทำให้เหมาะสำหรับการผูกที่เรียบง่ายตรงซึ่งไวยากรณ์จะต้องรัดกุมและเข้าใจได้
สถานการณ์เฉพาะอย่างหนึ่งที่อาจเป็นที่ต้องการของ Swiss Databinding คือเมื่อคุณต้องการตั้งค่าการเชื่อมโยงอย่างรวดเร็วในไฟล์ XML โดยเฉพาะอย่างยิ่งในแพลตฟอร์มที่ใช้เลย์เอาต์ XML และแก้ไขได้ง่ายเช่น Android อย่างไรก็ตาม Swiss Databinding ไม่ได้ตรวจสอบการเปลี่ยนแปลงจากโมเดลมุมมองอย่างแข็งขันเว้นแต่แหล่งที่มาของการเชื่อมโยงจะถูกรีเซ็ตซึ่งอาจเป็นข้อ จำกัด ในสถานการณ์ที่ต้องมีการอัปเดตแบบเรียลไทม์
databinding ที่คล่องแคล่ว
ในทางกลับกัน Databinding ที่คล่องแคล่วมีไวยากรณ์ C#-based สำหรับการสร้างการผูก วิธีการนี้มีประโยชน์อย่างยิ่งในสภาพแวดล้อมที่เลย์เอาต์ XML ไม่ได้รับการแก้ไขอย่างง่ายดายเช่น iOS และ MacOS การผูกที่คล่องแคล่วช่วยให้การตั้งค่าที่มีความซับซ้อนและมีการเชื่อมโยงแบบไดนามิกมากขึ้นทำให้เหมาะสำหรับสถานการณ์ที่คุณต้องจัดการกับการผูกมัดแบบโปรแกรมหรือจัดการตรรกะที่ซับซ้อนมากขึ้น
Databinding ที่คล่องแคล่วเป็นที่ต้องการเมื่อคุณต้องการสร้างการเชื่อมโยงทางโปรแกรมซึ่งอาจมีความยืดหยุ่นและมีประสิทธิภาพมากขึ้นโดยเฉพาะอย่างยิ่งในแอปพลิเคชันที่ซับซ้อนหรือเมื่อทำงานกับแพลตฟอร์มที่ไม่รองรับเลย์เอาต์ XML อย่างมีประสิทธิภาพ
สถานการณ์การตั้งค่า
- ต้องการข้อมูลของสวิสเมื่อ:
-คุณต้องใช้ไวยากรณ์ที่ง่ายและอ่านง่ายสำหรับการผูกโดยเฉพาะในไฟล์ XML
- แอปพลิเคชันไม่จำเป็นต้องมีการตรวจสอบการเปลี่ยนแปลงอย่างต่อเนื่องจากรูปแบบมุมมอง
- คุณกำลังทำงานในสภาพแวดล้อมที่เลย์เอาต์ XML สามารถแก้ไขได้ง่าย
- ต้องการข้อมูลที่คล่องแคล่วเมื่อ:
- คุณต้องสร้างการเชื่อมโยงทางโปรแกรมเพื่อให้การตั้งค่าแบบไดนามิกและซับซ้อนมากขึ้น
- คุณกำลังทำงานบนแพลตฟอร์มที่เลย์เอาต์ XML ไม่สามารถแก้ไขได้ง่ายเช่น iOS
- แอปพลิเคชันต้องการการควบคุมตรรกะที่มีผลผูกพันมากขึ้นหรือจำเป็นต้องจัดการกับสถานการณ์ที่ซับซ้อน
โดยสรุปในขณะที่ทั้ง Databinding สวิสและ Flueent มีจุดแข็งตัวเลือกระหว่างพวกเขาขึ้นอยู่กับข้อกำหนดเฉพาะของแอปพลิเคชันของคุณรวมถึงความต้องการความเรียบง่ายกับความซับซ้อนและแพลตฟอร์มที่คุณกำลังพัฒนา
การอ้างอิง:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://crosscuttingconcerns.com/mvvmcross-fluent-databinding
[3] https://stackoverflow.com/questions/41462365/what-are-the-pros-and-cons-of-forid-data-binding
[4] https://stackoverflow.com/questions/60500840/should-view-binding-replace-data-binding
[5] https://learn.microsoft.com/en-us/dotnet/desktop/wpf/data/?view=netdesktop-9.0
[6] https://www.phunware.com/android-clean-coding-approach/
[7] https://www.reddit.com/r/androiddev/comments/ux9379/what_are_the_use_cases_of_data_binding_and_when/when/
[8] https://jesseliberty.com/2022/02/01/advanced-databinding-part-0-basics/