معماران نرم افزار بدنبال راه حلی برای توسعه یک پروژه به صورت تیمی هستند بطوریکه هر شخص بروی لایه ای از پروژه تمرکز کند و بدون وابستگی به دیگر افراد (یا لایههای دیگر پروژه) بتواند فعالیت خود را تکمیل کند.
برای این منظور خیلی از برنامه نویسان (مخصوصاً DDD کارها) از لایه ای با عنوان DTO استفاده میکنند. وظیفهی این لایه انتقال اطلاعات اشیاء بدون هیچ پیچیدگی و بدون در نظر گرفتن رفتار آن اشیاء بین لایهها است. درواقع ادبیات مشترک لایه سرویس و لایه ارائه را میتوان مهمترین کاربرد DTO دانست.
برای مثال زمانیکه معماری شما سرویس محور طراحی شده است بسیار معقولانه است که به جای ارسال و دریافت Entity ها به یا از سرویس ها، از EntityDTO استفاده کنید.
اگر با MVVM آشنایی داشته باشید حتماً متوجه شباهت زیاد ViewModel با DTO شده اید.
البته میدانیم که ViewModel در WPF شامل رفتار اشیاء هم میتواند باشد اما DTO به هیچ عنوان دربرگیرنده رفتار اشیاء نیست.
حال سوال اساسی اینست که در ASP.NET MVC نیازی به استفاده از DTO و ViewModel در کنار یکدیگر است؟ این موضوع یعنی یک استفاده مجدد از AutoMapper جهت نگاشت این دولایه. آیا این موضوع را ضروری میبینید؟
یا اینکه شما از DTO و ViewModel به عنوان یک لایه استفاده میکنید و به قولی DTO را برابر ViewModel میدانید؟
خیر
با ۱۹ رای
بله
با ۱۴ رای