‫کتاب Pro ASP.NET MVC 3

3هر وقت که مجبور شوم یک چیز جدید یاد بگیرم یکی از اولین کارهایی که انجام می‌دهم پیدا کردن یک منبع یا کتاب خوب برای یاد گرفتن آن است. برای کار روی یک پروژه ASP.NET MVC باید مقداری اطلاعات MVC خودم را به روز می‌کردم و چند مثال عملی می‌دیدم. به همین خاطر از چند جا پرس و جو کردم و به کتاب Apress Pro ASP.NET MVC 3 Framework by Adam Freeman and Steven Sanderson رسیدم.

اولین نکته‌ای که با خواندن این کتاب به ذهن می‌رسد این است که نویسندگان فرض کرده‌اند خواننده هیچ اطلاعات قبلی راجع به MVC ندارد. به همین خاطر کلی راجع به MVC توضیح داده‌اند. علاوه بر این مقدار زیادی هم راجع به C#‎ و Visual Studio توضیحات مفصل داده‌اند. به همین خاطر این کتاب برای کسانی که می‌خواهند از ASP.NET WebForm به ASP.NET MVC سویچ کنند و ضمناً مدت‌ها با C#‎ برنامه‌نویسی کرده‌اند کمی نامناسب شده است.

در کل این کتاب مخصوص مبتدی‌ها نوشته شده است. برای کسانی که می‌خواهند برنامه‌نویسی و برنامه‌نویسی وب را تازه با ASP.NET MVC شروع کنند. خوانندگان حرفه‌ای‌تر کتاب باید بعضی فصول را جا بگذارند و خیلی فصول دیگر را هم سرسری ورق بزنند. در یک کلام نباید گول حجم ۸۴۰ صفحه‌ای آن را بخورند.

‫‫آیا واقعاً بهتر است به جای ASP.NET AJAX از jQuery استفاده کنیم؟ – بخش سوم

نتیجه‌گیری
ASP.NET AJAX قابلیت‌های خوبی در بخش سرور و استخراج اطلاعات از آن دارد. jQuery هم قدرت و انعطاف خیلی خوبی در کلاینت دارد. jQuery در ASP.NET MVC به شدت مورد توجه است و بعضی امورات آن  از جمله آژاکس از طریق jQuery انجام می‌پذیرد. پس یادگیری jQuery یعنی یک گام به سوی ASP.NET MVC. نتیجه این که به نظر می‌رسد عاقلانه‌تر این باشد که در یک راه حل آژاکسی از هر دو به طور هم زمان استفاده شود، از jQuery در بخش کلاینت و کنترل‌ها و از ASP.NET AJAX در سمت سرور برای استخراج اطلاعات و ارسال آنها به کلاینت به شیوه‌هایی مثل JSON.

یادگیری
۱- سایت encosia.com – تاکید دارد به استفاده هم‌زمان jQuery و ASP.NET AJAX
۲- سایت http://www.asp.net/learn/ajax/ برای ASP.NET AJAX
۳- کتاب jQuery in Action (۳۷۶ صفحه)
۴- سایت «کد پراجکت» http://www.codeproject.com/KB/ajax/
۵- یک link blog راجع به ASP.NET و AJAX که مطالبش پیوندی است به خیلی از منابع معتبر (tipsdotnet.com )
۶- RefCardهای موجود در سایت DZone
۷- http://blog.dreamlabsolutions.com/
۸- سایت iDevCenter
۹- وبلاگ وحید نصیری

منابع
۱- یک مقایسه قدیمی ولی بسیار دقیق و آموزنده راجع به کتابخانه‌های آژاکسی قابل استفاده در ASP.NET
۲- یک RefCard از DZone با اطلاعاتی دقیق از آژاکس بدون استفاده از ASP.NET
۳- فهرستی از کتابخانه‌های آژاکسی قابل استفاده در زبان‌ها و سکوهای مختلف برنامه‌نویسی
۴- فهرستی از کتابخانه‌های آژاکسی قابل استفاده در ASP.NET اعم از ASP.NET AJAX و غیره
۵- مایکروسافت در این نوشته اعلام کرده پشتیبانی از jQuery را به مجموعه asp.net اضافه کرده است.
۶- مثالی از کاربرد jQuery و ASP.NET به جای آژاکس
۷- ضمن معرفی منابع خوبی برای ارتباط jQuery و ASP.NET راجع به یک ناهمخوانی کوچک jQuery و asp.net ajax صحبت می‌کند.
۸- مقایسه مختصری بین jQuery و ms ajax
۹- بهتر است در asp.net webforms از asp.net ajax استفاده شود ولی در asp.net mvc از jQuery استفاده شود

»»»قسمت‌های اول متن را در بخش اول و دوم بخوانید.

‫‫آیا واقعاً بهتر است به جای ASP.NET AJAX از jQuery استفاده کنیم؟ – بخش دوم

بررسی و مقایسه

آیا jQuery و ASP.NET AJAX رقیب و معادل (alternative) هم هستند؟
تا اندازه‌ای می‌توان گفت بله آنها در خیلی از قسمت‌ها رقیب هم محسوب می‌شوند. اما این دلیل نمی‌شود که یکی را به طور کامل کنار بگذاریم و سراغ دیگری برویم. بلکه (به اعتقاد من) باید سعی کنیم یکی را به عنوان راه حل اصلی انتخاب کنیم و از دیگری به عنوان روش کمکی استفاده کنیم. مثلاً ASP.NET AJAX می‌تواند در سمت سرور به دیتابیس متصل شود و اطلاعات زیادی را به صورت JSON برای jQuery که صرفاً در کلاینت کار می‌کند بفرستد. {۸} {۹}

آیا می‌شود از این دو فناوری درکنار هم استفاده کرد؟
بله. به جز بعضی ناسازگاری‌هایی خیلی کوچک مشکل دیگری وجود ندارد. حتی توصیه شده برای رسیدن به قدرت و سرعت بالاتر از ترکیب هر دو فناوری با هم استفاده شود. {۷}

کدام فناوری را می‌توانم در سکوهای دیگر نیز مورد استفاده قرار دهم؟
فقط jQuery را. از jQuery می‌شود در ASP.NET، ASP.NET MVC، PHP، Perl و… نیز استفاده کرد. در حالی که از ASP.NET AJAX حتی در ASP.NET MVC هم به جز بخش کوچکی از هسته آن را نمی‌توان استفاده کرد چون ASP.NET MVC از WebForm استفاده نمی‌کند. در ASP.NET MVC خود برنامه‌نویس مجبور است State صفحه را نگه دارد در نتیجه خبری از Post Back هم نیست!

مایکروسافت چه رابطه‌ای با jQuery دارد؟
مایکروسافت به jQuery ایمان دارد! jQuery در حال حاضر بخشی از ASP.NET MVC است و به زودی در دیگر محصولات مایکروسافت هم ظاهر خواهد شد. علی‌الظاهر مایکروسافت قصد داشته برای محصولاتش کتابخانه‌ای مانند jQuery ایجاد کند ولی وقتی دیده چنین چیزی از قبل وجود دارد برخلاف همیشه تصمیم گرفته به جای ایجاد نسخه مخصوص به خودش از همان jQuery استفاده کند. {۵}

مزایا و معایب هر کدام چیست؟
ASP.NET AJAX:
۱- مزیت: یادگیری خیلی زیادی نمی‌خواهد. لازم نیست XHR را بشناسید و کلی هم HTML، CSS و جاوا اسکریپت بلد باشید.
۲- مزیت: با کنترل‌های معمول ASP.NET یکی می‌شود و نیازی به دستکاری ندارد. مثلاً خیلی از کنترل‌های معمول ASP.NET مثل TextBox و Label را می‌توان با قرار دادن در یک UpdatePanel آژاکسی کرد.
۳- مزیت: یکپارچگی آن با ASP.NET باعث می‌شود بتواند به راحتی از سرویس‌های موجود در ASP.NET مثل Profile در عملیات آژاکسی استفاده کند.
۴- ایراد: خیلی کند است و در خیلی آزمایش‌ها تا ۸۰ درصد پهنای باند را به علت وجود ViewStateهای حجیم تلف می‌کند.
۵- ایراد: مهارت‌های به دست آمده از طریق آن (به جز بخشی از هسته آن) را نمی‌توان در هیچ جای دیگر استفاده کرد.
jQuery:
۱- مزیت: چون از روش برنامه‌نویسی مستقیم استفاده می‌کند خیلی سریع‌تر است.
۲- مزیت: جامعه بسیار فعال، متنوع و رو به رشدی دارد. جامعه فعال یعنی محصولات جانبی و support بیشتر.
۳- مزیت: کدباز و مجانی است.
۴- مزیت: مهارت به دست آمده از jQuery را در سکوهای دیگری غیر از دات‌نت هم می‌توان استفاده کرد.
۵- مزیت: مهارت به دست آمده از jQuery را می‌توان در مباحث دیگری غیر از آژاکس هم مورد استفاده قرار داد.
۶- ایراد: نیاز به مقدار زیادی یادگیری HTML، CSS، JavaScript و… دارد.
۷- ایراد: به احتمال خیلی زیاد نشود از بعضی کنترل‌های ASP.NET به صورت معمول استفاده کرد. مثلاً نمی‌دانم اگر قرار باشد GridView را با کمک jQuery آژاکسی کرد چه اتفاقی برایش می‌افتد. مثلاً می‌شود از Binding به روش معمول استفاده کرد یا نه این که شاید اصلاً مجبور باشیم از یک کنترل GridView کلاینتی مثل FlexGrid استفاده کنیم.

»»»قسمت قبلی مطلب را در بخش اول بخوانید
»»»ادامه مطلب را در بخش سوم بخوانید

‫‫آیا واقعاً بهتر است به جای ASP.NET AJAX از jQuery استفاده کنیم؟ – بخش اول

مقدمه
مدتی است که لازم شده برای آژاکسی کردن بخشی از یک برنامه تحت وب بزرگ کمی ASP.NET AJAX یاد بگیریم. اما دوستان زیادی شدیداً توصیه کرده‌اند به جای ASP.NET AJAX از روش‌های مستقیم کار با XmlHttpRequest یا ابزارهایی مثل jQuery استفاده کنیم. با آن که قبلاً به استفاده از ASP.NET AJAX مصمم بودیم ولی با شنیدن حرف‌های دیگران به شک افتاده که کمی هم راجع به jQuery تحقیق کنیم و آژاکس را دقیق‌تر بررسی کنیم. آنچه که در ادامه می‌آید نتیجه ۳ روز بررسی آژاکس در ASP.NET است. این نوشته در سه بخش تقدیم می‌گردد. منابع مورد اشاره در آخر پاراگراف‌ها در انتهای بخش سوم آمده است. در ابتدا بعضی مفاهیم و اصطلاحات مورد نیاز مرور می‌شود.

مفاهیم
آژاکس: روشی برای تبادل اطلاعات کلاینت و سرور به صورت پشت صحنه با استفاده از جاوا اسکریپت، شی XmlHttpRequest و DOM به طوری که صفحه post back نخورد و refresh نشود. {۲}
DOM: Document Object Model ساختار یک صفحه در داخل مرورگر است. با جاوا اسکریپت می‌توان DOM یک صفحه HTML را در همان سمت کلاینت تغییر داد و عناصر HTML جدید را به آن کم و زیاد کرد.
XmlHttpRequest: این شی (آبجکت) که به نام XHR معروف است مسئول تبادل اطلاعات ناهمزمان بین کلاینت و سرور است. تمامی روش‌های آژاکسی دنیا از همین آبجکت XHR برای آژاکسی کردن صفحات استفاده می‌کنند.
روش برنامه‌نویسی مستقیم و غیر مستقیم آژاکس: روش‌هایی که به طور مستقیم با خود XHR کار می‌کنند یا خیلی به آن نزدیک هستند روش مستقیم نامیده می‌شوند. خیلی از کتابخانه‌های جاوا اسکریپتی مثل jQuery و ProtoType و خیلی از روش‌هایی که در زبان‌های PHP و Perl استفاده می‌شوند از این دسته هستند. از سوی دیگر عملکرد بعضی کتابخانه‌ها به صورتی است که برنامه‌نویس اصلاً متوجه وجود XHR نمی‌شود. روشی که این کتابخانه‌ها برای مخفی نگه داشتن جزییات صطح پایین از برنامه‌نویس استفاده می‌کنند روش غیر مستقیم نامیده می‌شود. ASP.NET AJAX کتابخانه‌ای است که از روش غیر مستقیم برنامه‌نویسی آژاکس استفاده می‌کند. {۱}
ASP.NET AJAX: کتابخانه نیمه کدباز مایکروسافت برای پیاده‌سازی قابلیت‌های آژاکس در ASP.NET به روش غیر مستقیم است. این کتابخانه تمام جزییات سطح پایین را به طور کامل از دید برنامه‌نویس مخفی می‌کند به طوری که برای خیلی از عملیات معمول در آژاکس تنها استفاده از چند خط کد کفایت می‌کند. ASP.NET AJAX در عین راحتی که به برنامه‌نویس می‌دهد در خیلی از حالات سرعت عملیات را به علت حجیم بودنش به شدت کاهش می‌دهد. این کتابخانه در مقابل راحتی که به برنامه‌نویس می‌دهد، انعطاف پذیری را از بین برده و دست و پای برنامه‌نویس را می‌بندد. {۴}
jQuery: یک کتابخانه جاوا اسکریپتی خیلی کم حجم است که طی مدت اخیر طرفداران خیلی زیادی پیدا کرده است. هدف اصلی jQuery ارائه امکانات خیلی قدرتمند برای کار با DOM است. گفته می‌شود استفاده از jQuery برای عملیات DOM نسبت به استفاده از خود جاوا اسکریپت حدود ۹۰ درصد صرفه‌جویی در حجم کد دارد. jQuery دارای plug-inهای خیلی زیادی برای امور مختلف مثل آژاکس و انیمیشن است. شرکت‌های مایکروسافت و نوکیا در مهر ۱۳۸۷ اعلام کردند jQuery را به عنوان بخشی از محصولاتشان ارائه خواهند داد. jQuery اولین پروژه کدباز غیر مایکروسافتی است که به محصولات مایکروسافت اضافه می‌شود. {۵}
JSON: یک قالب داده ساده مشابه XML است که برای تبادل اطلاعات بین سرور و کلاینت مورد استفاده قرار می‌گیرد. این قالب به دلیل سادگی آن از XML رایج‌تر است.

ادامه مطلب در بخش دوم و سوم بخوانید…