ViewModel چیست؟
در این قسمت از دوره پیشرفته Entity Framework Core 9 برسی میکنیم که، ViewModel چیست؟ در معماریهای نرمافزار، ViewModel یک شیء است که برای مدیریت دادههایی استفاده میشود. و در رابط کاربری نمایش داده میشوند. به بیان دیگر، ViewModel پل ارتباطی بین مدل – Model و لایه نمایش – View است و دادههایی را فراهم میکند که View برای نمایش به کاربر نیاز دارد.

ViewModel چیست؟
ویژگیهای ViewModel
به طور خلاصه، ViewModel دارای ویژگیهای زیر است:
- دادههای مورد نیاز ویو را فراهم میکند. ViewModel تنها شامل دادههایی هستند که به صورت مستقیم در رابط کاربری نمایش داده میشوند. این دادهها ممکن است دقیقاً مطابق با ساختار Model دیتابیس نباشند و به شکل سادهتر یا قابل نمایشتری سازماندهی شده باشند.
- نمایش دادهها را تسهیل میکند. ViewModelها میتوانند دادهها را از چندین Model ترکیب کنند و اطلاعات را به شکل دقیقتری برای نمایش در UI فراهم کنند. برای مثال، اگر برای نمایش یک صفحه کاربری نیاز به اطلاعات حساب کاربری و سفارشات کاربر باشد، ViewModel میتواند این دادهها را ترکیب کند.
- منطق کسبوکار را از منطق نمایش جدا میکند. استفاده از ViewModel به جدا شدن منطق کسبوکار – Business Logic از منطق نمایش – Presentation Logic کمک میکند. این جداسازی باعث میشود که برنامهها ساختارمندتر و قابل نگهداریتر شوند.
- امنیت دادهها را مدیریت میکند. با استفاده از ViewModel، میتوان فقط دادههای ضروری و مورد نیاز برای View را در آن تعریف کرد و از ارسال مستقیم دادههای حساس Model به View جلوگیری کرد.
- اعتبارسنجی دادهها را انجام میدهد. در ViewModel میتوان قوانین اعتبارسنجی (Validation) تعریف کرد تا دادههایی که کاربر وارد میکند پیش از ارسال به Model و ذخیره در دیتابیس بررسی شوند.
چرا از ViewModel به جای Model در View استفاده میکنیم ؟
استفاده از ViewModelها بهترین شیوه برای کنترل دادهها و نمایش آنها در UI است، به ویژه در پروژههای حرفهای و بزرگ که نیاز به حفظ امنیت، انعطافپذیری و سادگی در نگهداری دارند.
- جداسازی مسئولیتها: در معماریهای صحیح نرمافزار، بهتر است هر لایه وظیفه خاص خود را داشته باشد. Modelها نمایانگر دادههای اصلی دیتابیس هستند و بهتر است مسئولیت منطق کسب و کار و نمایش دادهها را نداشته باشند. ViewModelها مخصوص انتقال داده بین لایهها و نمایش در UI طراحی میشوند و به این ترتیب، ساختار برنامه تمیزتر و قابل نگهداریتر خواهد بود.
- امنیت دادهها: استفاده مستقیم از Model ممکن است منجر به نشت دادههای حساس شود. به عنوان مثال، ممکن است ستونهایی در Model وجود داشته باشد که نیازی به نمایش یا ارسال آنها به کاربر نیست. با استفاده از ViewModel، میتوان تنها دادههای ضروری را به UI منتقل کرد.
- جلوگیری از تغییرات ناخواسته در دیتابیس: در صورتی که Modelهای اصلی مستقیماً به عنوان ViewModel استفاده شوند، ممکن است کاربر تغییراتی ناخواسته در اطلاعات اصلی دیتابیس ایجاد کند. ViewModelها این امکان را میدهند که اطلاعات نمایش داده شده بدون ارتباط مستقیم با دیتابیس مدیریت شوند.
- افزایش انعطافپذیری: ViewModelها امکان ترکیب دادهها از چند Model را فراهم میکنند، بدون اینکه نیازی به تغییر ساختار دیتابیس داشته باشیم. به این ترتیب، انعطافپذیری بیشتری برای نمایش اطلاعات پیچیدهتر به کاربر به دست میآید.
- سادگی در اعتبارسنجی: اعتبارسنجی دادهها (Validation) را میتوان به صورت جداگانه روی ViewModel انجام داد، بدون این که تغییرات در Model دیتابیس انجام شود. این باعث میشود که اعتبارسنجیهای مختلفی برای نمایش و ورود دادهها در UI داشته باشیم که مستقل از Model اصلی هستند. بنابراین، استفاده از ViewModelها بهترین شیوه برای کنترل دادهها و نمایش آنها در UI است، به ویژه در پروژههای حرفهای و بزرگ که نیاز به حفظ امنیت، انعطافپذیری و سادگی در نگهداری دارند.
دانلود فایل ارائه
سلام من عملیات مایگریشن رو بعد از ایجاد ویو مدل انجام دادم ولی در dbset فقط مدل اصلی developers را اضافه کردم با این حال ویو مدل listdevelopersviewmodel هم به دیتابیس اضافه شد چرا؟