คุณใช้กรอบการจัดการความสามารถในการขยายอย่างไร


10

ฉันทำงานกับ MEF มาประมาณ 2 สัปดาห์ ฉันเริ่มคิดว่า MEF คืออะไรค้นคว้าหาวิธีใช้ MEF และในที่สุดก็ใช้โฮสต์กับ 3 โมดูล สัญญาที่พิสูจน์แล้วว่าง่ายต่อการเข้าใจและจัดการโมดูลได้ง่าย

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

ใช่ฟังดูแล้วก็ทำไม่ได้อย่างบ้าคลั่ง วาทศาสตร์พูด:

  • MEF ส่งผลต่อแนวโน้มปัจจุบันในการเขียนโปรแกรมอย่างไร

  • คุณเริ่มมองหาโอกาสในการใช้ MEF หรือไม่?

  • คุณได้เริ่มวางแผนเขียนใหม่ของแอพที่มีอยู่แล้วซึ่งอาจได้ประโยชน์จากการเพิ่มความสามารถหรือไม่?

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

มีใครใช้ MEF ไหม

คำตอบ:


8

มีใครใช้ MEF ไหม

ฉันกำลังทำงานในโครงการ Silverlight โดยใช้รูปแบบ MVVM เราเริ่มต้นด้วยการเชื่อมต่อ VMs ทั้งหมดเข้าด้วยกันตามความจำเป็นผ่านอินเทอร์เฟซและการฉีดขึ้นต่อกันแบบแมนนวล มันเริ่มเจ็บปวดและเราเริ่มใช้ MEF โดยทั่วไปเป็นกรอบการฉีดพึ่งพาเพื่อส่งออกบริการบางอย่างที่ใช้ในโมเดลการดูและนำเข้าสู่โมเดลการดูที่ต้องการ ทำงานได้อย่างสมบูรณ์แบบและมีรหัสน้อยมาก

ใช่มีคนพิถีพิถันอยู่บ้างที่จะบอกว่า MEF ไม่ได้มีไว้สำหรับการฉีดแบบพึ่งพาและกรอบการฉีดแบบพึ่งพานั้นจะดีขึ้นมาก อย่างไรก็ตาม MEF ถูกอบเข้าสู่. NET ซึ่งเป็นข้อดีอย่างมากและก็เพียงพอที่จะตอบสนองความต้องการของเรา

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

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


6

ความผิดพลาดที่คนทำและฉันคิดว่าเป็นเพราะการตั้งชื่อ (Managed Extensibility Framework) โดยสมมติว่า MEF นั้นเป็นประโยชน์สำหรับการขยายเท่านั้น MEF กล่าวถึงสามสิ่งสำคัญ: ความสามารถในการขยายการค้นพบและข้อมูลเมตา สองอันสุดท้ายนั้นทรงพลังมากแม้สำหรับแอปพลิเคชั่นที่จะไม่เห็นปลั๊กอินหรือส่วนขยายเดียว

นี่คือบทความที่ฉันเขียนเกี่ยวกับพลังในการค้นพบในฐานะภาชนะบรรจุ IOC: http://www.informit.com/articles/article.aspx?p=1635818

ฉันใช้ MEF ในแอพพลิเคชั่นธุรกิจส่วนใหญ่เพราะมันทำให้การสร้างและบำรุงรักษาแอพพลิเคชั่นแบบโมดูลใน Silverlight ทำได้เร็วขึ้นและง่ายขึ้น


ฉันอ่านบทความของคุณแล้ว - อย่างน้อยสองครั้ง;)
IAbstract

4

ขณะนี้ฉันกำลังใช้ MEF ในบางโครงการที่รวมรูปแบบ Repository

หนึ่งคือการใช้ประเภทพื้นที่เก็บข้อมูลที่แตกต่างกันในขณะที่การทดสอบหน่วยโครงการอื่น ๆ คือการใช้ท้องถิ่น (ตรงกับฐานข้อมูล) ระยะไกล (WCF) และการทดสอบที่เก็บ

ทั้งสองโครงการสามารถเปลี่ยนประเภทพื้นที่เก็บข้อมูลของพวกเขาผ่านรหัสหรือการกำหนดค่าและขึ้นอยู่กับ MEF เมตาดาต้า / ประเภท Lazy

ในวันนี้ทั้งสองโครงการทำงานได้ดีอย่างไม่น่าเชื่อ

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