การรวมกันของ MVVMCross และปริซึม

ฉันกำลังมองหาการนำ MvvmCross มาใช้ในการพัฒนาซอฟต์แวร์รุ่นต่อไปของเรา โดยมีเป้าหมายหลักในการพัฒนา UI ของแท็บเล็ตสำหรับซอฟต์แวร์ดังกล่าว ฉันเข้าใจว่าปัจจุบัน MvvmCross ไม่รองรับ WPF แต่ฉันเห็นว่าเรากำลังพัฒนาสิ่งนั้นและสนับสนุนมันกลับคืนมา

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

จากสิ่งที่ระบุไว้ใน https://stackoverflow.com/questions/10224376/mvvmcross-experiences-hindsight-limitations เกี่ยวกับการฟอร์กหรือกลิ้งของคุณเองโดยใช้ MvvmCross เป็นข้อมูลอ้างอิง และเนื่องจากเราต้องการสถานการณ์ UI ที่ซับซ้อนมากกว่าสถานการณ์ที่ MvvmCross จัดเตรียมไว้ให้ แนวทางปฏิบัติที่ดีที่สุดคือ แยกและปรับใช้ส่วนของปริซึมที่เราต้องการใหม่ ลองให้ MvvmCross ทำงานร่วมกับ Prism เหมือนเดิม หรือพัฒนาของเราเองจากแรงบันดาลใจของ MvvmCross และ MonoCross ล่ะ?


person Arthur van Leeuwen    schedule 13.12.2012    source แหล่งที่มา
comment
ตัวอย่างบางส่วนของ UI แบบรวมที่คุณกำลังมองหาน่าจะดี เช่น มันขับเคลื่อนด้วยเมนูหรือเปล่า? แถบด้านข้างและแผงหลัก? แท็บ? ฯลฯ (ฉันสนใจ!)   -  person Stuart    schedule 13.12.2012
comment
การออกนอกบ้านครั้งแรกของประเภท UI ที่เรากำลังดำเนินการนั้นมีให้ใช้งานในรูปแบบแอปพลิเคชัน ClickOnce บน apps.datacare.nl/ ovm (ข้อมูลรับรองการเข้าสู่ระบบสาธิตอยู่ที่ ovmsupport.nl/Demonstratie.aspx) นี่เป็นงานที่อยู่ระหว่างดำเนินการมาก แอปพลิเคชันที่นำเสนอมีฟังก์ชันการทำงานที่คล้ายกันประมาณหนึ่งโหล   -  person Arthur van Leeuwen    schedule 14.12.2012


คำตอบ (1)


อัปเดต: ดูคำตอบที่สองด้านล่าง...


พรุ่งนี้ฉันอาจต้องเขียนคำตอบที่ยาวกว่านี้...

เป็นคำตอบเบื้องต้น:

  • มีคนทำพอร์ต MvvmCross ไปยัง Silverlight แล้ว และนักพัฒนาได้แนะนำว่าสิ่งนี้อาจใช้ได้กับชุมชนในวงกว้าง
  • MvvmCross เวอร์ชัน PCL ควรตรงไปตรงมามากในการพอร์ตไปยัง WPF - แม้ว่าอาจไม่ใช่หากจำเป็นต้องใช้เวอร์ชัน .Net Runtime ที่เก่ากว่า
  • ในฐานะหัวหน้าฝ่ายพัฒนาของ MvvmCross จนถึงปัจจุบัน ฉันสนใจที่จะสนับสนุน WPF เป็นการส่วนตัว โดยเฉพาะตอนนี้สำหรับโปรเจ็กต์ของฉัน http://github.com/slodge/BallControl ซึ่งต้องใช้เดสก์ท็อปในการทำงาน (Windows Store พิการ - pah!)
  • รองรับ UI แบบคอมโพสิตใน MvvmCross - เช่น แท็บ, pivots, พาโนรามา, การแยก, ลูกโมดอล ฯลฯ - แต่ยังไม่มีงานทำมากนักบน UI แบบคอมโพสิตเต็มรูปแบบเหมือนที่เห็นบ่อยใน Prism
  • ฉันเคยเห็นผู้คนรวม MvvmCross เข้ากับเฟรมเวิร์ก IoC อื่น ๆ แต่ (ยังไม่มีงานที่ฉันรู้) จนถึงปัจจุบันในการรวม MvvmCross กับ MEF (ซึ่งมักใช้กับปริซึม?)

หากฉันกำลังแก้ไขปัญหานี้ ฉันจะมาที่สิ่งนี้:

  1. ตรวจสอบให้แน่ใจว่าเราพยายามทำให้แอปที่ใช้งานได้ออกมาเป็นอันดับแรก สิ่งที่สำคัญที่สุดคือแอปมีความสำคัญมากกว่าเฟรมเวิร์ก
  2. สำหรับเฟรมเวิร์ก ฉันจะลองย้ายการตั้งค่า IoC พื้นฐานไปยังส่วนแรกและการนำทางแบบง่ายๆ
  3. สำหรับการนำทางที่กำหนดเอง (สำหรับการแสดง UI ในภูมิภาค) ฉันจะดูบทบาทของผู้นำเสนอใน MvvmCross - นี่คือสิ่งที่ฉันใช้ในตัวอย่างแท็บ ในตัวอย่างมุมมองแยกของ iPad ฯลฯ เพื่อให้คุณสมบัติ UI ที่ซับซ้อน
  4. หากการนำทางแบบกำหนดเองนี้ไม่เพียงพอ ฉันจะดูว่ามันจะเปลี่ยนแปลง / แทนที่ / ขยายได้อย่างไร - เดา ของฉันคือข้อกำหนดของแท้สำหรับ WPF/Prism จริง ๆ แล้วค่อนข้างคล้ายกับข้อกำหนดของแท้ สำหรับแอปแท็บเล็ต iPad, Surface และ Nexus ที่ใหญ่กว่า
  5. ฉันจะพยายามทำให้ทุกอย่างเป็นแบบโมดูลาร์และเป็นทางเลือกเพื่อให้แอปโทรศัพท์ขนาดเล็กไม่ต้องดึงกระบวนการนำทางขนาดใหญ่ที่แอปขนาดใหญ่อาจต้องการ ข้อเสียของสิ่งนี้อาจมีหลายโครงการและ DLLs!
  6. ฉันยังเปิดรับการแยกออกเป็นโปรเจ็กต์ที่แยกจากกัน - โลกซอฟต์แวร์สมัยใหม่ส่วนใหญ่ถูกปกครองโดยแอพที่มีเป้าหมายขนาดเล็กแทนที่จะเป็นเฟรมเวิร์กที่ใหญ่กว่าและแผ่กิ่งก้านสาขา
  7. เนื่องจากฉันเป็นงานพาร์ทไทม์ที่ Mvx และนี่คืองานเต็มเวลาของคุณ ฉันขอแนะนำอย่างยิ่งว่าอย่าปล่อยให้ Mvx รั้งคุณไว้!

ปฏิกิริยาแรกของฉันคือ 'ใช่ ฉันจะ จริงๆ สนใจทำงานนี้' ข้อเสีย (ดังที่กล่าวข้างต้น) ก็คือฉันมีเวลาว่างกับ mvx เท่านั้น....


นี่คือคำตอบที่สอง...


มีวิดีโอสาธิตการใช้งานนี้ - พร้อมคำอธิบายบางส่วนที่: http://youtu.be/pYkLxqpu_5E


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

ฉันจะพยายามทำงานให้มากกว่านี้ - แต่ไม่สามารถจัดลำดับความสำคัญให้เหนือกว่างานที่ได้ค่าจ้างได้... แต่ฉันเปิดรับค่าจ้างให้ทำงานกับ mvvmcross ด้วยเช่นกัน :)

person Stuart    schedule 13.12.2012
comment
ดังนั้น หากฉันเข้าใจถูกต้อง การปรับโครงสร้างโค้ด ViewModel และ Model ในปัจจุบันเพื่อใช้ PCL จะทำให้เราปรับตัวเข้ากับการใช้ MvvmCross ในภายหลัง แต่เราจะต้องปรับโครงสร้างบิต Prism ที่มีอยู่อย่างแพร่หลายออกไป ดี เนื่องจากบิตปริซึมส่วนใหญ่ที่เราใช้นั้นถูกใช้ในระดับนามธรรมที่ไม่ถูกต้องอยู่แล้ว - person Arthur van Leeuwen; 14.12.2012
comment
ดูคำตอบที่สอง - ขออภัยถูกพาไป :) - person Stuart; 14.12.2012
comment
ฉันได้ทำตัวอย่างที่สองแล้ว - เพียงแค่ UI ธรรมดา - เพิ่ม WPF ไปยัง BallControl - แสดงการรองรับ Bluetooth เหนือสิ่งอื่นใด! slodge.blogspot.co.uk/ 2012/12/ - person Stuart; 16.12.2012
comment
ยอดเยี่ยม! ตอนนี้ฉันแค่ต้องหาวิธีพอร์ต MvvmCross ไปยัง .Net 4.0 (ซึ่งฉันทำอยู่แล้ว :)) - person Arthur van Leeuwen; 17.12.2012
comment
อาจลองคำถามแบบพกพาคลาสไลบรารีแยกต่างหาก - ทีม. net clr อาจสามารถทำให้โปรไฟล์ไลบรารี PCL 104 ทำงานบน .net 4 ได้ - ถามคำถามที่นี่ และพวกเขาอาจตอบ - person Stuart; 17.12.2012
comment
เพียงเขียนว่า ฉันเปิดรับค่าตอบแทนให้ทำงานบน mvvmcross คุณอาจต้องการพิจารณา gittip.com/about - person ta.speot.is; 29.07.2013