ขณะนี้ฉันกำลังจับกับ Reactive Extensions framework สำหรับ. NET และฉันกำลังดำเนินการตามแหล่งข้อมูลแนะนำต่างๆที่ฉันพบ (ส่วนใหญ่เป็นhttp://www.introtorx.com )
แอปพลิเคชันของเราเกี่ยวข้องกับอินเทอร์เฟซฮาร์ดแวร์จำนวนมากที่ตรวจจับเฟรมเครือข่ายสิ่งเหล่านี้จะเป็น IObservables ของฉันจากนั้นฉันก็มีส่วนประกอบหลายอย่างที่จะใช้เฟรมเหล่านั้นหรือทำการแปลงข้อมูลบางอย่างและสร้างเฟรมประเภทใหม่ นอกจากนี้ยังมีส่วนประกอบอื่น ๆ ที่จำเป็นต้องแสดงทุก n เฟรมเช่น ฉันเชื่อว่า Rx จะเป็นประโยชน์สำหรับแอปพลิเคชันของเราอย่างไรก็ตามฉันกำลังดิ้นรนกับรายละเอียดการใช้งานสำหรับอินเทอร์เฟซ IObserver
ทรัพยากรส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) ที่ฉันอ่านได้บอกว่าฉันไม่ควรใช้อินเทอร์เฟซ IObservable ด้วยตัวเอง แต่ใช้ฟังก์ชันหรือคลาสที่มีให้ จากการวิจัยของฉันดูเหมือนว่าการสร้างSubject<IBaseFrame>
จะให้สิ่งที่ฉันต้องการฉันจะมีเธรดเดียวของฉันที่อ่านข้อมูลจากอินเทอร์เฟซฮาร์ดแวร์แล้วเรียกใช้ฟังก์ชัน OnNext ของSubject<IBaseFrame>
อินสแตนซ์ของฉัน ส่วนประกอบ IObserver ที่แตกต่างกันจะได้รับการแจ้งเตือนจากเรื่องนั้น
ความสับสนของฉันมาจากคำแนะนำที่ให้ไว้ในภาคผนวกของบทช่วยสอนนี้ซึ่งระบุว่า:
หลีกเลี่ยงการใช้ประเภทหัวเรื่อง Rx เป็นกระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชันอย่างมีประสิทธิภาพ การใช้วิชาหมายความว่าตอนนี้เรากำลังจัดการสถานะซึ่งอาจกลายพันธุ์ได้ การจัดการกับสถานะการกลายพันธุ์และการเขียนโปรแกรมแบบอะซิงโครนัสในเวลาเดียวกันนั้นยากมากที่จะทำให้ถูกต้อง นอกจากนี้ตัวดำเนินการจำนวนมาก (วิธีการขยาย) ได้รับการเขียนอย่างรอบคอบเพื่อให้แน่ใจว่าอายุการใช้งานและลำดับการสมัครสมาชิกที่ถูกต้องและสม่ำเสมอ เมื่อคุณแนะนำวิชาคุณสามารถทำลายสิ่งนี้ได้ นอกจากนี้การเปิดตัวในอนาคตอาจทำให้ประสิทธิภาพลดลงอย่างมากหากคุณใช้วัตถุอย่างชัดเจน
แอปพลิเคชันของฉันค่อนข้างสำคัญในด้านประสิทธิภาพฉันกำลังจะทดสอบประสิทธิภาพของการใช้รูปแบบ Rx ก่อนที่จะเข้าสู่รหัสการผลิต อย่างไรก็ตามฉันกังวลว่าฉันกำลังทำบางสิ่งที่ขัดต่อเจตนารมณ์ของเฟรมเวิร์ก Rx โดยใช้คลาส Subject และเฟรมเวิร์กเวอร์ชันในอนาคตจะส่งผลกระทบต่อประสิทธิภาพ
มีวิธีที่ดีกว่าในการทำสิ่งที่ฉันต้องการหรือไม่? เธรดการสำรวจฮาร์ดแวร์จะทำงานอย่างต่อเนื่องไม่ว่าจะมีผู้สังเกตการณ์หรือไม่ก็ตาม (บัฟเฟอร์ HW จะสำรองข้อมูลเป็นอย่างอื่น) ดังนั้นนี่จึงเป็นลำดับที่ร้อนแรงมาก ฉันต้องส่งเฟรมที่ได้รับออกไปให้ผู้สังเกตการณ์หลายคน
คำแนะนำใด ๆ จะได้รับการชื่นชมอย่างมาก