PDA

View Full Version : گفتگو: آیا یادگیری MVC نسبت به WebForm آسان تر است؟خیر!



پیام حیاتی
جمعه 30 مرداد 1394, 22:23 عصر
سلام
بنده webform کار کردم و نگاه تعصبی به هیچ تکنولوژی و زبانی را ندارم.
یک ماهی هست دارم آموزش های MVC را از این سایت (http://tamr.in/) و مطالب w3schools میبینم و مطالعه می کنم.

1.پیچیدگی در پیاده سازی :
بر خلاف مطالبی که گفته میشه کار در MVC تا اینجای کار از نظر من خیلی پیچیده تر شده ، برای یک Request ساده باید یک Controller تعریف شده باشه و هر Controller یک View لازم داره در برخی درخواست های سمت سرور برای برقراری ارتباط ها Model و کلاس ها نیز وارد بازی میشه که هر کدام از آنها در پوشه های متناسب خود باید قرار بگیرند.در صورتی که در وب فرم ما دو محیط داریم یکی برای طراحی یکی هم کد نویسی ، تمام! .

2.ابزارها و برخی از مزایای MVC نسبت به وب فرم :
چند جمله که در آموزش ها نتونستم برای خودم هضمشون کنم :
- در MVC از ابزارهاهای toolBox خبری نیست اما دست شما باز است که همه چیز را خلق کنید!
- یعنی به جای اینکه ما یک textbox رو در محیط درگ کنیم کد آن را می نویسیم!
- MVC متن باز است.
- رابط نرم افزاری مدرن

3.نوع کدنویسی :
یک مثال می زنم ، کدام یک از کدهای زیر برای ایجاد یک TextBox ساده تر هستند :


MVC:
@Html.TextAreaFor(x => x.user)
WebForm:
<asp:TextBox ID="user" runat="server" >

کدهای ایجاد یک فرم در MVC :


@using (Html.BeginForm())
{
<p>Your Name: @Html.TextAreaFor(x => x.Name)</p>
<p>Your Name: @Html.TextAreaFor(x => x.Email)</p>
<p>Your Name: @Html.TextAreaFor(x => x.Phone)</p>

<p>
Will you Attend?
@Html.DropDownListFor(x => x.WillAttend, new[] {
new SelectListItem() {Text="Yes",Value=bool.TrueString},
new SelectListItem() {Text="No",Value=bool.FalseString}
},"Choose Please"
)
</p>
<input type="submit" value="submit RSVP" />
}

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

4.پایان کار وب فرم کارها:
وب فرم در حالت انقضاء قرار گرفته و MVC جایگزین آن خواهد شد پس وب فرم کارها باید به سمت آن بروند.
بعد این جمله از یکی از مسئولین بلند پایه مایکروسافت رو دیدم :

Different customers look for different programming approaches, and a lot love WebForms and think it is great.Others love MVC and think it is great. That is why we are investing in both.
Scott Guthrie



5.آیا وب فرم کارها می توانند نسبت به سایرین سریعتر MVC را فرا بگیرند؟
همه چیز تقریبا" تغییر پیدا کرده و تنها موردی که کار ما را سریعتر خواهد کرد دانستن زبان #C هست.

HOSSEINONLINE7
جمعه 30 مرداد 1394, 23:09 عصر
مشکل اینجاست که وب فرم اینقدر برنامه نویسا را تنبل کرده که فکر میکنن کدنویسی و نظم MVC سخته .

واقعا وب فرم مضخرفه از هر لحاظ . اگر MVC نبود شخصا هیچ وقت دات نت کار نمیکردم .

malloc
جمعه 30 مرداد 1394, 23:33 عصر
مشکل اینجاست که وب فرم اینقدر برنامه نویسا را تنبل کرده که فکر میکنن کدنویسی و نظم MVC سخته .

واقعا وب فرم مضخرفه از هر لحاظ . اگر MVC نبود شخصا هیچ وقت دات نت کار نمیکردم .
وب فرم که کدهاش سختر از MVC هست برادر ..... من خودم قبول دارم که MVC سریعتر از WEbform رندر میشه و میاد بالا اما تا الان با MVc کد نزدم اما میدونم که راحتتر از webfrom و قابل فهمتره

HOSSEINONLINE7
شنبه 31 مرداد 1394, 00:28 صبح
وب فرم که کدهاش سختر از MVC هست برادر ..... من خودم قبول دارم که MVC سریعتر از WEbform رندر میشه و میاد بالا اما تا الان با MVc کد نزدم اما میدونم که راحتتر از webfrom و قابل فهمتره

قابل فهم تر هست ولی راحت تر نیست . ساختارش اصولی طراحی شده نه مثل وب فرم انگار داری اپ ویندوز میزنی . همه وب فرم کارا اولش همینا میگن ولی بعد از اینکه بیان سمت MVC اقرار میکنن به اون سادگی هم که فکر میکنن نیست ولی شیرینه .
البته اونم بستگی داره در چه حدی بخواید کار کنید . نه مثل بعضی همکاران بعضا با سابقه که باگ تولید میکنن بجای وب اپلیکیشن .

من هر دو را کار کردم البته اول MVC . جدیدا بخاطر یک پروژه ی زورکی مجبور شدم وب فرم کار کنم اونم در حد کار خودم فقط . هرچقدر هم بیشتر ازش یاد میگیرم از مایکروسافت بیشتر بدم میاد .

با 4 تا کلیک سایت ساختن کجاش سخت تره برادر ؟

یکی مشتری هام که یک خط برنامه نویسی هم بلد نبود رفتم دیدم یک سایت برا خودش زده اصلا توش موندم . گفت تا کلیپ دیدم با چند کلیک سایت را زدم . انصافا قشنگ هم زده بود . کدهایی هم که براش خودکار تولید شده بود روحش خبر نداشت چکار میکنه .

از انجایی که مایکروسافت سیاستش فقط پوله و دیگر هیچ فلسفه ی بوجود آمدن وب فرم هم همینه که برنامه نویسان ویندوز بتونن سایت هم بزنن .

وگرنه یک برنامه نویس سی شارپ را بیارید بگید MVC کار کن اصلا نمیفهمه چی به چیه . البته بودن اطرافم وب فرم کارایی که وقتی میومدن MVC کار کنن سختشون بود و بعد از اینکه یاد گرفتن تازه فهمیدن وب یعنی چی .

پیام حیاتی
شنبه 31 مرداد 1394, 00:46 صبح
قابل فهم تر هست ولی راحت تر نیست . ساختارش اصولی طراحی شده نه مثل وب فرم انگار داری اپ ویندوز میزنی .

من هر دو را کار کردم البته اول MVC . جدیدا بخاطر یک پروژه ی زورکی مجبور شدم وب فرم کار کنم اونم در حد کار خودم فقط . هرچقدر هم بیشتر ازش یاد میگیرم از مایکروسافت بیشتر بدم میاد .

با 4 تا کلیک سایت ساختن کجاش سخت تره برادر ؟

یکی مشتری هام که یک خط برنامه نویسی هم بلد نبود رفتم دیدم یک سایت برا خودش زده اصلا توش موندم . گفت تا کلیپ دیدم با چند کلیک سایت را زدم . انصافا قشنگ هم زده بود . کدهایی هم که براش خودکار تولید شده بود روحش خبر نداشت چکار میکنه .

از انجایی که مایکروسافت سیاستش فقط پوله و دیگر هیچ فلسفه ی بوجود آمدن وب فرم هم همینه که برنامه نویسان ویندوز بتونن سایت هم بزنن .

وگرنه یک برنامه نویس سی شارپ را بیارید بگید MVC کار کن اصلا نمیفهمه چی به چیه . البته بودن اطرافم وب فرم کارایی که وقتی میومدن MVC کار کنن سختشون بود و بعد از اینکه یاد گرفتن تازه فهمیدن وب یعنی چی .

به این سادگی ها هم نیست که می فرمائید با چند کلیک سایت ساخته شود، این حالت مختص CMS هاست ، اگر ابزار toolbox را در وب فرم برداریم آن را به MVC شبیه تر کرده ایم،شاید یک تازه کار با درگ کردن بتواند یک فرم برای خود ایجاد کند اما ارتباط داده های وارد شده ، پردازش بر روی آنها و Action هایی که ممکن است بخواهیم با یک کلیک انجام و نتیجه حاصل شود را باید جدای از ابزارها بدانیم.
چرا اینطور نگاه نکنیم که یکی از اهداف مایکروسافت در وب فرم ها تسریع در طراحی و پیاده سازی هست.

hakim22
شنبه 31 مرداد 1394, 09:02 صبح
اول اینکه تغییر دادن عادت خیلی سخت تر از یاد گرفتن یک چیز برای اولین باره. کسی که میخواد از وب فرم به MVC مهاجرت کنه تقریبا باید گذشتشو بزاره کنار و چیزهایی که باید با خودش بیارهدر حد آشنایی با حلقه و شرط در #C هست !

اما در نهایت MVC یک فریم ورک از ASP هست و یجوریایی زیر مجموعه ی ASP محسوب میشه. MVC شما رو ملزم میکنه با نظم خاصی کد بنویسید. وقتی پروژه ی شما تمام میشه و نیاز به تغییر در قسمتی از پروژه دارید برگشتن به اون قسمت و اصلاح اون کد خیلی ساده تر میشه. در واقع در این سیستم جدید تغییر و بروز رسانی و حفظ و نگه داری کارایی خیلی بیشتری داره. به یک علت ساده اونم اینکه کدهای قسمتهای مختلف از هم جدا هستند. کلا وقتی در MVC درون یک ویو کد نویسی میکنید حکم گناه کبیره داره در حالی که در وب فرم یک عادت روزانه هست.

اگر دید شما به پروژه بساز بفروش (بنداز) است. همان وب فرم و CMS های آن بسیاری از نیازهای شما را برطرف خواهد کرد. اما نوشتن کدی که ساختار مناسبی داشته باشد و برای بروز رسانی حداقل استاندارد را داشته باشد در وب فرم خیلی سخت تر است.

در حقیقت MVC حاصل تلاش عده ای از برنامه نویسان وب فرم است تا ساختار منظمی به پروژه و کدهای آن بدهند.

اینجوری بگم :

اگر شما چند پروژه با وب فرم کار کنید و همیشه در این فکر باشید که کد بهتری بنویسید و ایرادات را برطرف کنید بعد از چند وقت به MVC میرسید. در MVC یک تیم کار بهتری دارد. برنامه نویسی وب روی کنترلر ، برنامه نویسی UI روی ویو و برنام نویس دیتابیس و پس زمینه روی Model کار میکند. جدا بودن این موارد از هم کمک میکند همزمان بتوانند روی یک پروژه کار کنند همچنین حفظ نگه داری و بروز رسانی در آینده راحت تر شود.

عین همین سیستم در PHP هم هست یعنی برای بسیاری از برنامه نویسیان PHP پیاده سازی به صورت MVC در پروژه های بزرگتر یک الزام اجتناب تاپذیر است.هرچند که بدون MVCهم صدها سایت ساخته شده و میشوند اما مشکلات خود را در ادامه ی عمر کاریشان خواهند داشت.

r4hgozar
شنبه 31 مرداد 1394, 11:12 صبح
سلام.
دوستان مطالب رو گفتن.
به نظر من سخت تر بودن mvc بخاطر اینه که ما تسلط درستی به برنامه نویسی C# که پایه کاره نداریم
وقتی تو webform یه دگمه رو میاریم و میندازیم تو صفحه اصلا نمی دونیم ه خبره.
اما وقتی تو mvc خودمون میام کد هاش رو می نویسیم و اونجوری که خودمون دلمون می خواد می نویسیم . پس تسلط بیشتری هم باید رو مجموع برنامه نویسی داشته باشیم.
اگه یک سری مفاهیم رو خوب بفیمیم و یاد بگیریم خیلی راحت میشه.
واسه همینه mvc کار ها C#‎‎ خیلی قوی تره نسبت به به های asp.

moradian
شنبه 31 مرداد 1394, 20:02 عصر
دوستان عزیزم سلام
مکمل صحبت دوستان:
یادگیری MVC یه کمی اولش مشکله و آدم رو زده می کنه. مخصوصا بحث Routing و Filterها و Attributeها و...
اولش که با Helperها و سینتکس Razor و... آشنا میشی یه جورایی برات واقعا غریبه مخصوصا این عبارت های لامبدا و دلگیت های خلاصه شده!
بنده خودم چندتا پروژه با وب فرم زده بودم و فکر می کردم طراحی وب یعنی همین کنترل های سمت سرور asp ولی همیشه ته دلم از این گسستگی و بی نظمی خوشم نمی اومد مخصوصا از دستور IsPostBack و ViewStateها و این داستان ها (که تو محاسن MVC تو مستنداتش خودتون مطالعه کردین که رفع شده) و همواره آرزو داشتم یه تکنولوژی بیاد این داستان ها رو خاتمه بده که MVC اومد. حقیقتش مهاجرت به اون خیلی سخت بود و دوسه باری رهاش کردم ولی یه خورده همت کردم و چسبیدم بهش تا برام قابل هضم شد و حالا بعد از یکی دو سال از ویندوزفرم سی شارپ هم برام شیرینتره، تا حدی که جدیدا به جای اپلیکیشن ویندوزی که باید تو شبکه لوکال مشتری کار کنه از اپلیکیشن وبی اونم با MVC طراحی می کنم که قابلیت استفاده در وب اون در حد دستکاری در فایل وب کانفیگش باشه!
به هرجهت بنده هم اگر جای کسانی بودم که تازه میخوان MVC رو شروع کنن دقیقا همین عقاید رو داشتم و همین ابهامات برام پیش اومده بود. ولی توصیه می کنم یه خورده همت به خرج بدین و سعه صدر داشته باشین. موفق باشید.
ای که خواهی که شوی برنامه نویس ***** هی بنویس، هی بنویس، هی بنویس!

HOSSEINONLINE7
یک شنبه 01 شهریور 1394, 00:04 صبح
به این سادگی ها هم نیست که می فرمائید با چند کلیک سایت ساخته شود، این حالت مختص CMS هاست ، اگر ابزار toolbox را در وب فرم برداریم آن را به MVC شبیه تر کرده ایم،شاید یک تازه کار با درگ کردن بتواند یک فرم برای خود ایجاد کند اما ارتباط داده های وارد شده ، پردازش بر روی آنها و Action هایی که ممکن است بخواهیم با یک کلیک انجام و نتیجه حاصل شود را باید جدای از ابزارها بدانیم.
چرا اینطور نگاه نکنیم که یکی از اهداف مایکروسافت در وب فرم ها تسریع در طراحی و پیاده سازی هست.

عزیز هر چیزی منطق داره . وب منطق خودشا داره .

برنامه نویسی که همش پول و تموم شدن پروژه نیست . برای شخص برنامه نویس اول علاقه و لذته . بگذریم که تو ایران البته فرق داره .

برنامه نویس سختشه با js کار کنه و سمت کلاینت بتونه کار کنه مایکروسافت گفته نگران نباش تو Run At Server اضافه کن به هرجا میخوای بعدش دیگه با سی شارپ برو کنترلش کن هرکار میخوای بکن بقیش با من دیگه تو کاری به اونجاش نداشته باش .

من از همچین تکنولوژی که پشت صحنه کار کنه و برنامه نویس ندونه دقیقا داره چی میگذره خوشم نمیاد و قبولش ندارم . نمیشه همه چیز را فدای تسریع در پیاده سازی کرد .

پس یعنی خارج کشور که جاوا و PHP کار میکنن تسریع در پیاده سازی و راحتی براشون مهم نیست ؟

من خودم دات نت MVC کار میکنم و فکر نکنید از تعصبی های جاوا و PHP هستم اومدم دارم طرفداری میکنم ولی یکم واقع بینانه فکر کنید .

طرف وب فرم کار میکنه دیگه فکر میکنه تمام وب همینه . وقتی میاد سراع وب خالص فکر میکنه گیج کننده هست و چیزای اضافیه و به درد نمیخوره چرا ؟ چون اونجا مسائل مهم وب ازش مخفی بوده پشت پرده انجام میشده دیگه اون کاری نداشته .


سلام.
دوستان مطالب رو گفتن.
به نظر من سخت تر بودن mvc بخاطر اینه که ما تسلط درستی به برنامه نویسی C#‎ که پایه کاره نداریم
وقتی تو webform یه دگمه رو میاریم و میندازیم تو صفحه اصلا نمی دونیم ه خبره.
اما وقتی تو mvc خودمون میام کد هاش رو می نویسیم و اونجوری که خودمون دلمون می خواد می نویسیم . پس تسلط بیشتری هم باید رو مجموع برنامه نویسی داشته باشیم.
اگه یک سری مفاهیم رو خوب بفیمیم و یاد بگیریم خیلی راحت میشه.
واسه همینه mvc کار ها C#‎‎‎ خیلی قوی تره نسبت به به های asp.

همچنین MVC کارا js قوی تری هم دارن و کلا وب را بهتر میتونن درک کنن .

وب فرم که همون ویندوز اپلیکیشن هست با این تفاوت که توی مرورگر اجرا میشه .

Roia_del
دوشنبه 02 شهریور 1394, 15:29 عصر
اصولا وب به صورت Connection Less هست . و وب فرم به این خاطر ایجاد شد که مایکروسافت برنامه نویس های VB کارش رو تو دنیای وب از دست نده . همین.
در ضمن وب فرم در هر سه زبان PHP و JAVA و ASP دارد
1) Parado در PHP
2) JFace در JAVA
3)WebForm در ASP