ใน 'SOLID' ตัว 'I' ย่อมาจาก Interface Segregation แนวคิดทั้งหมดของหลักการนี้คือการแยกอินเทอร์เฟซขนาดใหญ่ให้เล็กลง ในบริการ MVC จะมีส่วนต่อประสานที่ตัวควบคุมจะต้องพึ่งพา คุณไม่ต้องการให้ผู้ควบคุมของคุณรู้เกี่ยวกับการใช้บริการนั้นอย่างเป็นรูปธรรม ดังนั้นการให้บริการที่มีหนึ่งหรือสองวิธีจึงเป็นเรื่องดี
โดยปกติบริการจะส่งกลับ DTO ในแอปพลิเคชันขนาดใหญ่หรือรุ่นโดเมนโดยตรงในแอปพลิเคชันขนาดเล็ก โดยปกติแล้ว DTO หมายถึงการทำงานที่มากขึ้น การไหลทั่วไปคือ:
- บริการควบคุมการโทร
- บริการส่งคืนวัตถุ (ไม่ว่าจะเป็น DTO, โมเดลโดเมนหรืออย่างอื่น)
- คอนโทรลเลอร์แมปโมเดล DTO / โดเมนกับโมเดลมุมมอง
การทำแผนที่สามารถทำได้ด้วยตนเอง แต่นักพัฒนาส่วนใหญ่ต้องการใช้กรอบการแมปอัตโนมัติเช่น Automapper เพราะเราไม่ชอบเขียนรหัสการประปาและเราค่อนข้างขี้เกียจ :-)
http://en.wikipedia.org/wiki/Interface_segregation_principle
https://github.com/AutoMapper/AutoMapper
หนึ่งในหลาย ๆ การอภิปรายเกี่ยวกับ stackoverflow เกี่ยวกับการใช้ DTO และโมเดลโดเมน: /programming/2680071/dto-or-domain-model-object-in-the-view-layer