PDA

View Full Version : تفاوت domain model و viewModel



resident
جمعه 25 بهمن 1392, 07:36 صبح
سلام.
ما domain model مون شامل کلیه ی پراپرتی های لازم برای یک entity هست.
حالا میخوام بدونم چرا باید viewModel کنیم و مثلا پراپرتی های مورد نیاز رو داخلش میذاریم؟ تو دامین مدل ممکنه 30 تا فیلد داشته باشیم و تو viewmodel به 12 تاش نیاز داشه باشیم.
آیا تو حافظه مصرفی تاثیر داره یا دلایل دیگه داره؟

mze666
جمعه 25 بهمن 1392, 08:52 صبح
بله. در مصرف حافظه تاثیر داره چون فقط یک سری فیلدهایی که قرار هست نمایش داده بشن لود میشن. (این برای مواردی که دیتا رو میخواید مثلاً توی یک لیست نشون بدید و ...)
در مورد افزودن و ویرایش هم یک مورد امنیتی به حساب میاد چون کاربر مستقیماً با کلاس های domain مدل در ارتباط نیست.

resident
جمعه 25 بهمن 1392, 09:09 صبح
بله. در مصرف حافظه تاثیر داره چون فقط یک سری فیلدهایی که قرار هست نمایش داده بشن لود میشن. (این برای مواردی که دیتا رو میخواید مثلاً توی یک لیست نشون بدید و ...)
در مورد افزودن و ویرایش هم یک مورد امنیتی به حساب میاد چون کاربر مستقیماً با کلاس های domain مدل در ارتباط نیست.

دوست عزیز ممنونن از پاسختون...
در مورد نمایش لیستی که فقط اطلاعات مورد نیازمونو از دیتابیس می خونیم و تو پراپرتی ها میریزیم.
مثلا دامین مدل ما اگه 30 فیلد داشته باشه و ما اطلاعات 10 تا ستون رو بخوایم، یه نمونه می سازیم و فقط اطلاعات اون 10 تا پراپرتی رو پر می کنیم و بقیه null هستن.
در این صورت به ازاء پراپرتی هایی که null هستن هم حافظه اشغال میشه؟

hakim22
شنبه 26 بهمن 1392, 08:30 صبح
اطلاعاتی که درون فرم به سرور ارسال میشه همیشه به صورت string است و یک لیست 30 تایی همیشه بیشتر از یک لیست 10تایی هست.
استفاده از ViewModel به شدت توصیه میشه ، هم کد تمیز تری دارید و هم بازدهی بیشتر میشود. در مورد امنیت هم بهتر است. یک هکر همیشه میتونه ببینینه مدل ارسالی و دریافتی چیه ، و ارسال مدل کامل یعنی از ساختار کامل بانک ازاطلاعاتی شما با خبر میشه.

برای بسیاری استفاده از ViewModel بی معنیه به این دلیل که وقت زیادی صرفت انتساب property های دو کلای میکنند. این مشکل با استفاده از AutoMapper به راحتی حل میشه .

Cybersilent
دوشنبه 28 بهمن 1392, 20:24 عصر
اطلاعات بیشتر درباره ViewModel
http://www.dotnettips.info/post/815/asp-net-mvc-11