เมื่อใช้ csla.net กับ mvvmcross การแยกตรรกะทางธุรกิจจะเกิดขึ้นได้โดยการใช้ประโยชน์จากจุดแข็งของทั้งสองเฟรม CSLA.NET ได้รับการออกแบบมาเพื่อห่อหุ้มตรรกะทางธุรกิจภายในวัตถุธุรกิจเพื่อให้มั่นใจว่ากฎการตรวจสอบความถูกต้องการตรวจสอบการอนุญาตและตรรกะการเข้าถึงข้อมูลจะถูกแยกออกจากเลเยอร์การนำเสนออย่างชัดเจน [2] [3] ในทางกลับกัน MVVMcross ให้กรอบ MVVM ที่แข็งแกร่งสำหรับการจัดการตรรกะ UI และระดับแอปพลิเคชันในหลายแพลตฟอร์ม [1]
ตรรกะทางธุรกิจด้วย csla.net
CSLA.NET ส่งเสริมการแบ่งความรับผิดชอบที่ชัดเจนโดยเน้นการใช้วัตถุทางธุรกิจที่มีตรรกะทางธุรกิจทั้งหมด วัตถุเหล่านี้ได้รับการออกแบบโดยใช้แนวคิดการออกแบบเชิงวัตถุที่แท้จริงโดยมุ่งเน้นไปที่พฤติกรรมมากกว่าเพียงแค่คอนเทนเนอร์ข้อมูล [3] วิธีการนี้ทำให้มั่นใจได้ว่ากฎทางธุรกิจมีการบังคับใช้อย่างสม่ำเสมอตลอดแอปพลิเคชันทำให้ง่ายต่อการบำรุงรักษาและปรับขนาดแอปพลิเคชัน [2]
การรวมเข้ากับ mvvmcross
MVVMCROSS ส่วนใหญ่เกี่ยวข้องกับแอปพลิเคชันและระดับ UI ทำให้การเลือกบริการธุรกิจและรุ่นเปิดให้กับนักพัฒนา [1] เมื่อรวม CSLA.NET เข้ากับ MVVMCROSS คุณสามารถใช้ประโยชน์จากวัตถุทางธุรกิจของ CSLA เป็นเลเยอร์โมเดลในรูปแบบ MVVM ViewModel ใน MVVMcross สามารถใช้วัตถุธุรกิจเหล่านี้เพื่อขับเคลื่อนสถานะ UI และจัดการกับเหตุการณ์ผู้ใช้
แนวทางปฏิบัติที่ดีที่สุดสำหรับการแยก
1. ใช้วัตถุธุรกิจ CSLA เป็นแบบจำลอง: วัตถุธุรกิจของ CSLA ควรใช้เป็นเลเยอร์โมเดลในรูปแบบ MVVM สิ่งนี้ทำให้มั่นใจได้ว่าตรรกะทางธุรกิจยังคงถูกห่อหุ้มภายในวัตถุเหล่านี้
2. ViewModels บาง: ให้ ViewModels บางโดยการมุ่งเน้นไปที่ตรรกะเฉพาะ UI และการจัดการสถานะ หลีกเลี่ยงการวางตรรกะทางธุรกิจที่ซับซ้อนภายใน ViewModels เนื่องจากสามารถนำไปสู่การทำซ้ำรหัสและความไม่สอดคล้องกัน [4] [8]
3. การสืบทอด ViewModelBase: หากจำเป็นให้สืบทอดมาจาก 'ViewModelBase' ของ CSLA เพื่อรวมวัตถุทางธุรกิจของ CSLA เข้ากับข้อกำหนด ViewModel ของ MVVMCROSS อย่างไรก็ตามสิ่งนี้ควรทำอย่างรอบคอบเพื่อรักษาความกังวลที่ชัดเจน [1] [7]
4. เลเยอร์การเข้าถึงข้อมูล: ตรวจสอบให้แน่ใจว่าตรรกะการเข้าถึงข้อมูลถูกแยกออกจากตรรกะทางธุรกิจ CSLA รองรับตรรกะการเข้าถึงข้อมูลที่เป็นนามธรรมซึ่งจะเป็นประโยชน์เมื่อรวมกับ MVVMcross [2] [6]
โดยการปฏิบัติตามแนวทางปฏิบัติเหล่านี้คุณสามารถแยกตรรกะทางธุรกิจออกจากตรรกะ UI ได้อย่างมีประสิทธิภาพเมื่อใช้ CSLA.NET กับ MVVMCROSS เพื่อให้มั่นใจว่าสถาปัตยกรรมแอปพลิเคชันข้ามแพลตฟอร์มที่สามารถบำรุงรักษาได้และปรับขนาดได้
การอ้างอิง:[1] https://stackoverflow.com/questions/17373587/how-well-would-mvvmcross-and-csla-net-work-work-together-in-a-multi-platform-strategy
[2] https://ironpdf.com/blog/net-help/csla-net/
[3] https://github.com/marimerllc/csla/blob/main/docs/what-is-csla-.net.md
[4] https://www.reddit.com/r/androiddev/comments/13djgfv/business_logic_in_viewmodel_mvvm/
[5] https://blog.lhotka.net/2019/09/04/uno-platform-and-webassembly-with-csla-v5
[6] https://marcduerst.com/2017/07/07/layer-architecture-spearation-of-view-business-logic-and-physical-data-access/
[7] https://cslanet.com/old-forum/8575.html
[8] https://github.com/marimerllc/csla/discussions/1987