Trong 'RẮN', 'Tôi' là viết tắt của Phân đoạn giao diện. Toàn bộ ý tưởng của nguyên tắc này là chia các giao diện lớn thành các giao diện nhỏ hơn, nhiều mô đun hơn. Trong dịch vụ MVC thông thường sẽ có một giao diện mà bộ điều khiển sẽ dựa vào. Bạn không muốn bộ điều khiển của mình biết về việc triển khai cụ thể dịch vụ đó. Do đó, một loạt các dịch vụ với một hoặc hai phương pháp là một điều tốt để có.
Các dịch vụ thường trả lại DTO trong các ứng dụng lớn hoặc mô hình miền trực tiếp trong các ứng dụng nhỏ hơn. DTO thường có nghĩa là nhiều công việc hơn, nhưng phân tách mối quan tâm tốt hơn. Dòng chảy điển hình là:
- Điều khiển cuộc gọi dịch vụ
- Dịch vụ trả về một đối tượng (có thể là DTO, mô hình miền hoặc một cái gì đó khác)
- Bộ điều khiển ánh xạ mô hình DTO / domain sang mô hình xem
Việc lập bản đồ có thể được thực hiện thủ công, nhưng hầu hết các nhà phát triển thích sử dụng khung ánh xạ tự động như Automapper vì chúng tôi không thích viết mã hệ thống ống nước và chúng tôi có thể khá lười biếng :-)
http://en.wikipedia.org/wiki/Interface_segregation_principl
https://github.com/AutoMapper/AutoMapper
Một trong nhiều cuộc thảo luận về stackoverflow liên quan đến việc sử dụng DTO và mô hình miền: /programming/2680071/dto-or-domain-model-object-in-the-view-layer