ฉันมีกรณีที่ฉันจัดการกับตรรกะของการค้นหาในคอนโทรลเลอร์เดียวและฉันสร้างข้อมูลบางส่วนจากการค้นหาและกลับมาเป็นสถิติ
เป็นวิธีปฏิบัติที่ดีในการเรียกใช้ฟังก์ชันคอนโทรลเลอร์จากคอนโทรลเลอร์อื่นหรือไม่? หรือผู้ควบคุมสองคนไม่ควร 'คุย'
ฉันมีกรณีที่ฉันจัดการกับตรรกะของการค้นหาในคอนโทรลเลอร์เดียวและฉันสร้างข้อมูลบางส่วนจากการค้นหาและกลับมาเป็นสถิติ
เป็นวิธีปฏิบัติที่ดีในการเรียกใช้ฟังก์ชันคอนโทรลเลอร์จากคอนโทรลเลอร์อื่นหรือไม่? หรือผู้ควบคุมสองคนไม่ควร 'คุย'
คำตอบ:
มันค่อนข้างแปลกแม้ว่าคำตอบจะขึ้นอยู่กับภาษา / กรอบงานที่คุณใช้เนื่องจากภาษา / กรอบงานต่าง ๆ มีวิธีการต่าง ๆ ของ MVC
โดยทั่วไปคุณจะไม่ใช้คอนโทรลเลอร์หนึ่งจากอีกอันหนึ่งตั้งแต่:
ตัวควบคุมมักจะส่งคืนผลลัพธ์ประเภทที่ต้องการใช้โดยกรอบงาน MVC ผลลัพธ์นี้มีข้อมูลจำนวนมากที่คุณไม่จำเป็นต้องใช้ (เช่นชื่อมุมมอง) และไม่ได้ทำให้ง่ายต่อการเข้าถึงข้อมูลที่คุณอาจสนใจ (ในกรณีของคุณ ถ้าฉันเดาถูก)
ตัวควบคุมไม่ใช่เรื่องง่ายในการเริ่มต้นจากรหัสธุรกิจเนื่องจากพวกเขามักต้องการข้อมูลจำนวนหนึ่งเกี่ยวกับคำขอ HTTP และบริบท ข้อมูลทั้งหมดนี้คาดว่าจะถูกส่งผ่านโดยกรอบ MVC
ที่สำคัญหากคุณต้องการพวงของผลการค้นหาในสองตัวควบคุมหนึ่งที่แสดงให้เห็นผลไปยังผู้ใช้ที่อีกคนหนึ่งซึ่งจะสร้างสถิติการใส่เพียงตรรกะการค้นหาในชั้นธุรกิจของคุณ (ที่มันเป็นในสถานที่แรก โดยวิธีการ) และทำให้ตัวควบคุมของคุณมีขนาดเล็กที่สุด
บทบาทของคอนโทรลเลอร์ใน MVC คือการประสานกระบวนการ:
บทบาทของคอนโทรลเลอร์ไม่ได้เกี่ยวข้องกับตรรกะทางธุรกิจ
เมื่อโค้ดถูกย้ายไปยังเลเยอร์ธุรกิจจากนั้นคุณสามารถให้อินเทอร์เฟซการค้นหาซึ่งสามารถนำมาใช้ซ้ำได้อย่างชัดเจนตรงไปตรงมาซึ่งแตกต่างจากคอนโทรลเลอร์ที่ใช้จากอีกอันหนึ่ง