سلام خدمت استاد عزیز
توی سرچ های اینترنتی که انجام دادم و حتی از هوش مصنویی هم سوال کردم ویو مدل ها رو توی لایه Presentations قرار میدادند که به نظرم منطقی میاد چون مربوط Ui میشه . و تقریبا ربطی به منطق نداره . البته اینارو از توضیحات خوندم . ولی به نظر منطقی میومد. چون ما یه ویو مدل میسازیم برای یه صفحه که اون بالا به عنوان مدل صفحه تعریف میکنیم .
حالا اگه مثلا من یه پروژه دیگه داشته باشم که مثلا نرم افزار موبایل یا ویندوز بنویسم برای این پروژه که ویو مدل مخصوص خودش رو خواهد داشت (ممکنه بعضی فیلد ها رو نیاز نداشته باشه نشون بدیم تو ویندوز) اونوقت چرا باید توی دامین ویو مدل تعریف کنیم .
البته این رو هم میدونم که این دوره مربوط به پروژه وب هست و اگر فقط بخوایم برای وب استفاده کنیم میتونه منطقی باشه .
اگر سوال بی مورد بود ببخشید .
سلام ، وقت بخیر
در دوره راجع به این موضوع صحبت خواهم کرد
درود
دوست گرامی در پروژه های حرفه ای، نوع نگاهشون به پروژه کمی با این دوره متفاوته.
در این سبک پروژه ها سیاست به این شکله که پروژه یک بخش هسته داره که تمامی عملکرد ها مثل افزودن محصول، فعال سازی کاربر، ارسال ایمیل و... همه وظیفه لایه Application هست.
اما لایه های نمایشی (Presentation / UI) وظیفهشون صرفا تعامل با کاربر و نمایش و تعامل با هسته است، برای همین شما ممکنه توی اون پروژه دیده باشی که WebAPI هم توی پوشه Presentation قرار گرفتن.
در این نوع برنامه ها رویکرد به این شکل هستش که شما در آینده حتی میتونی بدون اینکه لایه Application کوچکترین تغییری کنه بتونی برنامه تحت دستکتاپ با تکنولوژی های دیگر داتنت مثل MAUI و... داشته باشی.
خب پس نتیجه میگیریم حالا که احتمال داره این همه لایه های مختلف داشته باشیم مثل MVC، WebAPI و... بنابراین هسته باید در متود های خودش باید یک فرمت استاندارد رو به عنوان ورودی بگیره
و هر لایه برای استفاده از متود ها میتونه به کمک ابزار های Mapping، ورودی به فرمت استاندارد Application تبدیل کنه.
و به صورت کلی در حالت استاندارد، جای ViewModel ها توی لایه Web (MVC / Razor Page) هست. جای DTO ها هم توی لایه Application هست.