PDA

View Full Version : تفاوت برنامه نویسی سه لایه با MVC در NET.



Jason.Bourne
سه شنبه 10 بهمن 1391, 02:50 صبح
من تاپیکی را در اینجا (http://barnamenevis.org/forumdisplay.php?48-%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%D9%88-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1) با موضوع "آیا برنامه نویسی به روش سه لایه، همون برنامه نویسی به الگوی MVC است؟" را ایجاد کردم و در آنجا پاسخ را هم دریافت کردم. اما در این تاپیک، تاکید من تفاوت این دو با هم در NET. هست.

amir-yeketaz
سه شنبه 10 بهمن 1391, 12:00 عصر
سه لایه یک معماری است ولی MVC یک الگو است (َApplication Pattern) ... شما در قلب معماری سه لایه میتوانید از الگوی MVC استفاده کنید ... حال شاید برای شما سوال شود که الگوی MVC در کدام لایه قرار دارد؟!
از دید معماری سه لایه، MVC در لایه ی presentation Layer قرار دارد . یعنی در معماری سه لایه UI را الگوی MVC تشکیل میدهد.

سوال بعدی که ممکن است پیش بیاید این است که اگر MVC در لایه ی UI قرار میگیرد پس M که به معنای Model است چگونه توجیه میشود ؟!

در تعریف MVC این گونه میگوییم که مدل چیزی است که کنترلر برای ویو میفرستد لذا ویو با آن سرکار دارد که به تعبیری Model همان ViewModel تعریف میشود . لذا با تعریف Data Model که در لایه ی DAL قرار دارد متفاوت است. مثلا شما ممکن است در ویو از 30 فیلد یک موجودیت در Data Model فقط 10 فیلد آن را نیاز داشته باشید که آن موجودیت با 10 فیلد Model شما خواهد بود که برخی برنامه نویسان آن را قسمت ViewModel می دانند.



موفق باشید ...

اوبالیت به بو
شنبه 28 بهمن 1391, 16:24 عصر
سه لایه یک معماری است ولی MVC یک الگو است (َApplication Pattern) ... شما در قلب معماری سه لایه میتوانید از الگوی MVC استفاده کنید ... حال شاید برای شما سوال شود که الگوی MVC در کدام لایه قرار دارد؟!
از دید معماری سه لایه، MVC در لایه ی representation Layer قرار دارد . یعنی در معماری سه لایه UI را الگوی MVC تشکیل میدهد.

سوال بعدی که ممکن است پیش بیاید این است که اگر MVC در لایه ی UI قرار میگیرد پس M که به معنای Model است چگونه توجیه میشود ؟!

در تعریف MVC این گونه میگوییم که مدل چیزی است که کنترلر برای ویو میفرستد لذا ویو با آن سرکار دارد که به تعبیری Model همان ViewModel تعریف میشود . لذا با تعریف Data Model که در لایه ی DAL قرار دارد متفاوت است. مثلا شما ممکن است در ویو از 30 فیلد یک موجودیت در Data Model فقط 10 فیلد آن را نیاز داشته باشید که آن موجودیت با 10 فیلد Model شما خواهد بود که برخی برنامه نویسان آن را قسمت ViewModel می دانند.



موفق باشید ...

درود بر شما

یعنی اگر ما پروژه ای را قبلا به صورت WebForm نوشته باشیم که بر مبنای معماری 3 لایه بوده، حال اگر بخواهیم نسخه MVC به اون اضافه کنیم، احتیاجی نیست که DAL بازنگری بشود؟

amir-yeketaz
شنبه 28 بهمن 1391, 18:55 عصر
یعنی اگر ما پروژه ای را قبلا به صورت WebForm نوشته باشیم که بر مبنای معماری 3 لایه بوده، حال اگر بخواهیم نسخه MVC به اون اضافه کنیم، احتیاجی نیست که DAL بازنگری بشود؟

احتیاجی نیست! ... به شرط اینکه لایه ی DAL وابستگی به لایه های دیگه نداشته باشه که اون به زیبایی معماری شما بستگی داره :)