เว็บแอปพลิเคชันที่นักจิตอายุรเวทที่เชี่ยวชาญสาขาของตนสามารถตอบคำถามที่ถามบนแพลตฟอร์มนี้ได้
ฉันใช้:
อาคารสถาปัตยกรรม
โครงการประกอบด้วยสองชั้น Persistence Layer ซึ่งเกี่ยวข้องกับฐานข้อมูล และ Core Layer ซึ่งไม่เกี่ยวข้องกับฐานข้อมูล
ตัวควบคุม => แกน <= ความคงอยู่
เราสามารถพูดคุยเกี่ยวกับแผนภาพการพึ่งพาเช่นนี้ Core Layer มีคลาสอินเทอร์เฟซ ความคงอยู่ ประกอบด้วยคลาสที่ฉันกำหนดอินเทอร์เฟซเหล่านี้ ที่ฝั่งคอนโทรลเลอร์ ฉันใช้คลาส UnitOfWork เพื่อลดการพึ่งพา DBContext ของคอนโทรลเลอร์ อย่างไรก็ตาม แม้ว่าคอนโทรลเลอร์จะเป็นเลเยอร์ ระดับสูง แต่มันก็เชื่อมโยงอย่างแน่นหนากับ UnitOfWork ซึ่งเป็นเลเยอร์ ระดับต่ำ ฉันใช้คลาส IUnitOfWork สำหรับสิ่งนี้ IUnitOfWork กำหนดคลาสนามธรรมที่สมบูรณ์ซึ่งมี IRepository's จากนั้นฉันสร้างคลาส UnitOfWork ขึ้นอยู่กับคลาส IUnitOfWork ในทำนองเดียวกัน ฉันสร้างการพึ่งพาระหว่างเลเยอร์ Controller และ IUnitOfWork
ตัวควบคุม => IUnitOfWork <= UnitOfWork
ตอนนี้เลเยอร์ระดับสูง ของคอนโทรลเลอร์ ขึ้นอยู่กับคลาส Abstract ในทำนองเดียวกัน ใน UnitOfWork ซึ่งเป็นคลาสระดับต่ำและมีรายละเอียด Abstrack จะต้องขึ้นอยู่กับคลาส จริงๆ แล้ว สิ่งที่ฉันทำคือทำให้ Core Layer เป็นอิสระอย่างสมบูรณ์ ความสามารถในการทดสอบของแอปพลิเคชันเพิ่มขึ้น นอกจากนี้ Core Layer ยังมีโครงสร้างที่เป็นอิสระจาก ORM Framework การเปลี่ยนแปลงที่จะทำใน UnitOfWork จะไม่ส่งผลกระทบต่อ IUnitOfWork Layer
ในทางกลับกัน ในแอปพลิเคชัน การพึ่งพา DbContext ยังคงดำเนินต่อไป ใน UnitOfWork Layer สิ่งนี้ทำให้เกิดปัญหาการเชื่อมต่อ คอนโทรลเลอร์ - DbContext อย่างแน่นหนาทางอ้อม ฉันใช้ เฟรมเวิร์กการพึ่งพาการฉีด เพื่อแก้ไขปัญหานี้ (นินจา 3.2.1.0)