PDA

View Full Version : چند ابهام مفهومی



sasansara
سه شنبه 08 آذر 1390, 13:14 عصر
من یه مدته دارم رو یادگیری MVC کار می کنم. یه چند مورد برام ابهام وجود داره.
اول با اینکه در همه جا ذکر شده که این تکنولوژی باعث جداسازی لایه های برنامه به صورت اجباری! میشه و از اسمش هم مشخصه که همچین هدفی داره، ولی من از کتابها و آموزشهایی که دنبال میکنم به نظرم قسمت های مختلف این تکنولوژی بسیار به هم وابسته هستن. یعنی در خیلی از موارد view به model و همینطور controller به view وابسته هستش.
دوم اینکه الان اینطور به نظرم میرسه که یه طراح نمی تونه بدون اینکه شناختی از MVC داشته باشه بیاد ظاهر کار رو انجام بده و اون رو تحویل برنامه نویس بده. چون وقتی من می خوام یه پروژه رو شروع کنم نمی تونم بدون اینکه به قسمت های model و controller فکر کنم view ها رو بسازم .

از طرفی به نظر خودم عجیبه که اینطور باشه و به نظرم من یه جاهایی رو خوب متوجه نشدم. به خاطر همین سوال پرسیدم اینجا تا دوستانی که تجربه کار دارن من رو راهنمایی کنن.

یه نکته : view ها رو نمی شه از طریق Designer دید یا بازهم مشکل از منه؟!
منظورم دیدن تغییرات انجام شده بدون اجرای برنامه هست.

amir-yeketaz
چهارشنبه 09 آذر 1390, 00:46 صبح
سلام ...

MVC از مفهمومConcern (SOC) Separation of تبعیت میکنه ... به این معنی که قسمت های منطقی برنامه از هم جدا میشن ...

اینکه میگین view با Model یا controller "وابستگی" به هم دارن که یه جورایی درست نیست ولی خوب این بخش ها با هم در ارتباط هستن و پیاده سازی های مختلفی در باب پیاده سازی این ارتباط وجود داره (چه درست چه نادرست!)



Mvc یه شعار معروفی که داره که میگه : Convention Over Configuration

یعنی میگه از این چیزایی که من میگم تبعیت کنی خیلی برات بهتره! ... در حالی که تقریبا هر مرحله از مراحل پشت صحنه ای که انجام میشه در asp.net mvc قابلیت سفارشی سازی داره(این یکی از مهمترین ویژگی های این فریمورکه!)



در مورد سوال دوم هم راه حل های زیادی وجود داره ... یکی میتونین پسوند فایل ویو رو به aspx تغییر بدین و designer داشته باشین (که من تست نکردم!) ولی یه جا خوندم که یکی پیشنهاد کرده بود!

راه دومی که من استفاده میکنم اینه که وقتی شما رو لوکال هاست هستین وقتی برای بار اول پروژه رو ران میکنین آیکونی کنار ساعت پدیدار میشه که گزینه ای به نام Open In Web Browser داره که دیگه همیشه این پایین هست تا شما پروژه رو از VS ببندین یا از همون پایین Stop کنین ... حالا دیگه میتونین پروژه رو Stop کنین و هر بار که تغییری تو پروژه دادین اون رو Build کنین (F6 ) و باز Open In Web Browser رو بزنین یا پیج باز شده در مرورگر رو رفرش کنین ...

همینطور استفاده از FireBug (http://getfirebug.com/) فراموش نشه!

sasansara
چهارشنبه 09 آذر 1390, 14:38 عصر
متشکر از توجه و پاسخ شما . به خصوص در مورد designer.

ای کاش دوستان دیگه هم نظرشون رو بگن.

sasansara
شنبه 19 آذر 1390, 07:42 صبح
ای کاش دوستان دیگه هم راهنمایی می کردن.
من در ادامه مطالعه و بررسی به این نتیجه رسیدم که یه بخشی از ابهامات من با استفاده از ViewModel حل میشه . یعنی وابستگی یا ارتباط بین Model و View از بین میره.

alimomen54
جمعه 23 دی 1390, 02:47 صبح
سلام
طراح شما نیازی نداره از برنامه نویسی یا MVC و لایه های اون چیزی بدونه.
اصل کار اینه که طراح T، طرح اصلی را به شما میده و شما داده ها و فرمهای برنامه خودتون را در همون چارچوب پیاده می کنید. بدون اینکه نیازی باشه از طراحی هم اطلاعی داشته باشید. فقط در هنگام کد نویسی باید دقت کنید که ID و Class عناصر HTML تولید شده توسط کدهای شما با اسامی و کدهای CSS طراح یکی باشه.
استفاده از CSS و مفهوم Theme در هنگام طراحی جداگانه توسط یک طراحی دیگه خیلی مهمه.

EnKamran
شنبه 24 دی 1390, 15:06 عصر
دوستان مفهوم Persistance ignorant چیه ؟ معنی لغوی رو می دونم مفهومش و کاربردش تو MVC رو نمی فهمم.

sasansara
یک شنبه 25 دی 1390, 08:01 صبح
قبل از هر چیز از اینکه وارد این بحث شدید متشکرم.


اصل کار اینه که طراح ، طرح اصلی را به شما میده و شما داده ها و فرمهای برنامه خودتون را در همون چارچوب پیاده می کنید

درسته. در مورد قالب کلی میشه این کار رو کرد.

اما طراح نمی تونه تمام فرم ها ، از جمله ورودی ها و نحوه چیدمان کنترلها و ظاهر اونها رو مستقلا آماده کنه و در اختیار برنامه نویس قرار بده. مگه اینکه با یه سری تگ html این کار رو انجام بده و بعد برنامه نویس مدل رو جایگزینش کنه.

EnKamran
یک شنبه 25 دی 1390, 19:33 عصر
آقا اون جواب ما رو ندادیدا.
ببینید بنده تازه وارد MVC شدم و طی آموزشات و مقالاتی که خوندم و کارهایی که خودم انجام دادم دیدم میشه این کار رو هم کرد.
ببینید شما چه n-layer کار کنید چه نه باید یک برنامه از پیش تعیین شده داشته باشید، یعنی منی که قراره فلان پروژه رو درست کنم 99 درصد کار رو توی کاغذ برای خودم پیاده سازی کردم بعد میرم سراغ کامپیوتر و ..
پس شما اگه از این دید ببینید همه چیز معلومه و می تونید دقیقا طبق مفهوم چندلایه ای عمل کنید.
البته این کار رو اگر گروهی و با سیستم چک آوت چک این انجام بدید دیگه دقیقا همون چند لایه بودن رعایت میشه.
البته این همه اش از برداشت های خودم بوده و جایی ندیدم که این حرف من رو زده باشه، اگر اساتید اشکالی می بینند که بنده ندیدم بگن که منم متوجه بشم.

alimomen54
سه شنبه 27 دی 1390, 00:58 صبح
اما طراح نمی تونه تمام فرم ها ، از جمله ورودی ها و نحوه چیدمان کنترلها و ظاهر اونها رو مستقلا آماده کنه و در اختیار برنامه نویس قرار بده. مگه اینکه با یه سری تگ html این کار رو انجام بده و بعد برنامه نویس مدل رو جایگزینش کنه.

این قبیل قسمتها را هم با تعاملات بعدی با طراح میشه حل کرد. باز هم آنچه مهم، اینه که طراح فقط ظاهر و چیدمان را تعیین میکنه و شما فقط دیتا را در آنها میریزید.

alimomen54
سه شنبه 27 دی 1390, 01:00 صبح
به نظر میاد اختلاف در مورد مفاهیم و شرح وظایف طراح و برنامه نویس است. که البته در ایران کاملا طبیعی است

sasansara
سه شنبه 27 دی 1390, 08:10 صبح
به نظر میاد اختلاف در مورد مفاهیم و شرح وظایف طراح و برنامه نویس است. که البته در ایران کاملا طبیعی است

جالبه. نظر من هم همینه!!

طراح UI می تونه یه فردی خارج از شرکت باشه. به نظر این امکان رو باید داشته باشه که طرح رو تحویل بده و برنامه نویس هم فقط منطق برنامه رو در web form از طریق event handler و در mvc از طریق controller فراخوانی کنه.


کاری که کاملا در web form قابل انجام هستش، و من چون در حال یادگیری mvc هستم ، می خوام بدونم چطور در mvc می تونه انجام بشه

alimomen54
چهارشنبه 28 دی 1390, 09:20 صبح
در اینجا چون خود شما کدهای HTML را تولید می کنید باید طراح حتما از CSS استفاده کنه. چون در ابتدای کار عملا صفحه خامی وجود نداره یا به عبارت بهتر محیط دیزاین سابق را ندارید. شما یه خروجی از صفحه یا صفحات HTML نهایی ذخیره کرده و به طراح میدهید. ایشون هم بدون اینکه به سورس شما دسترسی داشته باشه و فقط بر اساس ID و Class عناصر صفحه به شما یه طرح CSS یا به عبارت بهتر یک Theme میده. به این ترتیب میتونید در طراحهای بعدی فقط Theme را تغییر بدهید.

این نظرات کاملا شخصی و بر اساس تجربیات قبلی است. بنابراین اصراری به صحت آنها ندارم.

EnKamran
پنج شنبه 29 دی 1390, 01:36 صبح
دوست من توی MVC دیگه با Theme ها کار نمیشه، البته این قابلیت گذاشته نشده ولی برای کار با Theme ها میتونید سرچ کنید و طریقه استفاده رو متوجه بشید.
به نظر شخصی بنده کار Theme کار بیهوده ای بود که گذاشتند برای تغییر استایل صفحه خیلی راحت شما می تونید فایل CSS رو تغییر بدید، و در مورد MVC هم باید بگم که خیر کدهای تولید شده توسط Scoffolding فابریک و پیشفرض هستند که شما می تونید اونها رو عوض کنید.
توی خود وب سایت ASP.NET بخش MVC و Tutorials آموزشهای خوبی هست اما اونها با استانداردهای خودشتون ( مثل Scoffolding ) پیش رفتند، همیشه استانداردها بهترین نیستند.

sasansara
شنبه 01 بهمن 1390, 07:15 صبح
اتفاقا یه مسئله من توی mvc ، همین به قول شما استانداردها ( مثلا Scoffolding ) هستش که به نظر من برای برنامه های پیچیده تر واقعی نمیشه به اونها تکیه کرد و چون توی همه مثال ها از اونها استفاده میشه، طول میکشه آدم بخواد از یه روش دیگه استفاده کنه.

EnKamran
یک شنبه 02 بهمن 1390, 18:44 عصر
ببینید توی آموزش ها کلیت و اصول کار رو به شما آموزش می ده که خوب طبیعیه، چون تا زمانی که شما ندونید اکشن کارش چی هست و چیکار می کنه نمی تونید ازش استفاده کنید، پس برای یاد گیری اولیه باید این چیز ها گفته بشه، همین بحث Scoffolding چیزیه که خوب توی مثالها خیلی ساده بیان شده شما می تونید خیلی تغییرات روش اعمال کنید و به شکل مورد نیاز درش بیارید.
یک تاپیک باز می کنم و آموزشاتی که توی بلاگم میدم رو لینک می کنم تا ببینید اگر سوالی بود و یا اشتباهی داشتم می تونید توی بلاگ ازم بپرسید و یا همینجا بحث کینم، بنده هر دو جا در خدمتم

sasansara
دوشنبه 03 بهمن 1390, 07:27 صبح
یک تاپیک باز می کنم و آموزشاتی که توی بلاگم میدم رو لینک می کنم تا ببینید اگر سوالی بود و یا اشتباهی داشتم می تونید توی بلاگ ازم بپرسید و یا همینجا بحث کینم، بنده هر دو جا در خدمتم

خیلی عالیه.

آدرس وبلاگ تون رو هم بذارید متشکر میشم

EnKamran
دوشنبه 03 بهمن 1390, 15:58 عصر
توی تاپیک " آموزش ASP.NET و مکات " آدرس وبلاگ و آدرس آموزش ها رو گذاشتم.
وب لاگ (http://sadin.ir)