ایراد های اساسی 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 استفاده شده است.