انتقال تجربیات در حوزه برنامه نویسی دات نت

۲ مطلب با موضوع «آموزش سریع و کاربردی MVC» ثبت شده است

جلسه اول: چه چیزی در وب فرم اشتباه بود؟

ایراد های اساسی Asp.Net WebForm چیست؟

1- View State: در وب فرم برای حفظ وضعیت جاری فرم از View State استفاده میشود. مثلا وقتی کاربر مقادیر یک فرم ورود اطلاعات را وارد میکند این فرم پس از ارسال به سرور و بازگشت به سمت کاربر همچنان اطلاعات ورودی را حفظ کرده یعنی مقادیر تکست باکس ها و سایر عناصر خالی نمیشود این اتفاق به صورت پیش فرض فعال است و در سمت کلاینت ذخیره میشود. حالا فرض کنید حجم این داده ها بسیار زیاد باشد و فرایند رفت و برگشت به سرور هم چندین بار اتفاق بیوفتد که این امر سبب کندی زیادی خواهد شد.


2- Page Life Cycle: فرایند اتصال Event های سمت کلاینت به Event Handler های سمت سرور پیچیده میباشد. و برای این کار باید یک بار چرخه حیات یک صفحه دوباره اتفاق بیوفتد.


3- احساس کاذب در جداسازی مفاهیم!: asp.net web form code behind مفهومی را ارائه کرد که طی آن کدها و منطق برنامه از کدهای html جداسازی شوند که در واقع اتفاق بسیار خوبی بود تا Logic و presentation از هم جداشوند اما با گذشت زمان برنامه نویسان علاقه داشتند از سمت سرور تغییراتی سمت کلاینت داشته باشند مثلا فرض کنید در سمت کد میخواهید تغییراتی روی یک TextBox و یا حتی Div داشته باشید.


4- کنترل محدود روی عناصر HTML : کنترل های سرور پس از بررسی یک درخواست و کامپایل شدن دستورات به html تبدیل میشوند و نتیجه کار با چیزی که خودتان نوشته اید متفاوت است. مثلا یک textbox به input تبدیل میشود و ID متفاوت با آن چیزی که شما داده ای میگیرد(هرچند که میتوان این مشکل را برطرف کرد) در نتیجه کنترل شما روی عناصر خروجی خصوصا برای کار با JavaScript کاهش پیدا میکند. ضمناً همین فرایند تبدیل کنترل های سمت سرور به html نیز میتواند سرباری را برای سیستم به وجود بیاورد.


5- تستینگ ضعیف: از آنجایی که عناصر وب فرم و کدهای آن به صورت اتصال قوی (Tightly Coupled) میباشد این انتظار نمیرود که بتوان تست های اتوماتیک روی پروژه انجام داد.


6- وابستگی طراح و برنامه نویس و کاهش سرعت برنامه نویسی و توسعه: از نطر من این ایراد یک ضعف بزرگ میباشد. در وب فرم شما ابتدا باید عناصر صفحه را اضافه کنید (مثلا گرید ها، تکست باکس ها ، دکمه و سایر آیتم ها) تا سپس بتوانید در کد از آنها استفاده کنید. پس در عمل این وابستگی بین ظاهر صفحه و کد ها وجود دارد و طراح و برنامه نویس نمیتوانند همزمان روی یک صفحه کار کنند. اما در MVC به راحتی این امر امکان پذیر میباشد زیرا هر کدام یک از طراحان و برنامه نویسان با مدل کار میکنند. این مدل یک کلاسی است که قرار است مقادیر درون آن ذخیره شود یا مقادیر آن نمایش داده شود پس یک طراح به راحتی آن مدل را در صفحه استفاده میکند و برای فیلد های آن آیتم های مناسب Html قرار میدهد. برنامه نویس هم به راحتی برای آن کدنویسی میکند و آن را به سمت صفحه هدایت میکند تا اطلاعات آن مدل نمایش داده شود فارغ از اینکه چه آیتم هایی در صفحه html استفاده شده است.


۱۹ آذر ۹۵ ، ۱۲:۱۷ ۰ نظر موافقین ۰ مخالفین ۰
احسان احسانی اطهر

مقدمه آموزش سریع و کاربردی MVC

سلام خدمت همه دوستان

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

این سری از آموزش ها مناسب افرادی است که از قبل وب فرم کار کردند و با مفاهیم اصلی ASP.NET آشنایی دارند.

بزرگترین تغییر MVC نسبت به ASP.NET چیست؟

خب این مهمترین سوالی بود که خودم همیشه قبل از یاد گرفتن MVC داشتم و دوست داشتم یکی خیلی خلاصه و صریح بهم جواب بده!

اگه بخوام خیلی ساده بگم بزرگترین تغییر اینه که در MVC برخلاف WebForm کاربر مستقیما یک صفحه را صدا نمیزند بلکه یک مفهوم را در سمت سرور صدا میزند(فرض کنید یک متد را صدا میزنیم) و آن متد مشخص میکند چه چیزی به سمت کاربر برگردد.

 همانطور که به یاد دارید در ASP.NET WebForm یک صفحه با پسوند aspx داشتیم که تمام کدها در فایل cs این صفحه و کدهای مربوط به ظاهر هم در همین صفحه aspx قرار میگرفت. یعنی خیلی راحت یک صفحه جدید اضافه میکردیم یک دکمه از ToolBox میکشیدیم و می انداختیم روی صفحه کمی ظاهر فرم را درست میکردیم و اگر نیاز بود بین قسمت های Design و Source سوییچ میکردیم تا ظاهر فرم را درست کنیم و در نهایت روی دکمه دوبار کلیک میکردیم تا به قسمت Code برویم و کدهای مورد نظر را همانجا مینوشتیم.

در نهایت هم برای دیدن آن صفحه کافی بود در انتهای نام آدرس سایتمان آدرس آن صفحه مثلا test.aspx نوشته میشد تا آن صفحه نمایش داده میشد.

www.MySite.com/test.aspx

اما در MVC روند کار به صورت خیلی خلاصه به این صورت است:

شما به جای اینکه در انتهای نام ساییتان آدرس یک صفحه را بنویسید فقط نام یک متد (اکشن) را مینویسید مثلا:

www.MySite.com/Method1

درون این Method1 هم یک سری کدهای سمت سرور (سی شارپ یا وی بی) قرار دارد که شما نوشته اید.

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

به همین سادگی! به این متدهایی که شما مینویسید و از بیرون صدا زده میشوند کنترلر گفته میشود حرف C در MVC برای همین Controller میباشد.

اصلا نترسید! این کنترلر ها کلاس های ساده ای هستند که به راحتی ایجاد میشوند و در فولدر Controller یک پروژه MVC قرار میگیرند. (مثلا با پسوند cs برای پروژه های سی شارپ)

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

پس کدهای HTML کجا قرار دارند!

کد های HTML درون صفحاتی با پسوند cshtml قرار دارند و این صفحات در فولدر View ذخیره میگردد. این صفحات همان صفحاتی هستند که قرار است در صورت نیاز برای درخواست کنندگان به عنوان خروجی ارسال شود. پس حالا متوجه شدید که کلمه V در MVC به همین View اشاره میکند.

علت اینکه پسوند این صفحات cshtml میباشد این است که درون این صفحات هم میتوان کدهای Html نوشت و هم کدهای سمت سرور مثل سی شارپ.

درباره مدل هم در قسمت های بعدی توضیح خواهم داد.



۱۷ آذر ۹۵ ، ۱۵:۰۱ ۰ نظر موافقین ۰ مخالفین ۰
احسان احسانی اطهر