نکات امنیتی برای برنامه نویسان ASP.NET

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

در این مطلب کوتاه با نکاتی آشنا خواهید شد که اگر آن ها را بکار ببرید می توانید تا حدی امنیت وب اپلیکیشن های خود را تامین کنید.

ASP.NET Security Tips

1) داده های ورودی کاربران را اعتبارسنجی کنید

قانون اول : هرگز به کاربران خود اعتماد نکنید! همیشه امکان اشتباه وارد کردن داده ها توسط کاربران وجود دارد. شما باید همیشه و درهر حال تمام داده های ورودی توسط کاربران را Validate کنید و اجازه ورود اطلاعات نادرست و دور از انتظار را به سیستم ندهید. یک کاربر ممکن است آن قدر ناوارد و خنگ باشد که اطلاعات را نادرست و ناقص وارد کند و یا آن قدر حرفه ای باشد که به جای اطلاعات، کدهای مخرب به سیستم تزریق کند. در تمام فرم های آنلاین وب سایت خود از کنترل های Validation برای اطمینان از درستی داده های وارد شده توسط کاربر استفاده کنید. اگر داده های ورودی کاربر معتبر باشند، امکان اشتباه در سیستم به حداقل خواهد رسید.

2) اطلاعات حساس را کد کنید

قانون دوم : هر اطلاعاتی را که فکر می کنید ممکن است از آن سوء استفاده شود را کد کنید. حتماً Username و Password کاربران را کد کرده و سپس ذخیره کنید. Hash کردن رمز عبور یکی از بهترین و مطمئن ترین راه ها برای تامین امنیت رمزعبور کاربران است. برای این کار در دات نت راه حل های خوبی وجود دارد. اطلاعات حساس دیگر مثل Connection String دیتابیس خود را حتماً Encrypt کنید. در ASP.NET توصیه شده است به جای اینکه رشته اتصال دیتابیس خود را در کدهای خود بنویسید، آن را به صورت جداگانه در فایل Web.config تعریف کنید. از آن جایی که فرمت این فایل XML است و امنیت پایینی دارد، شما باید تمام اطلاعات حساس این فایل از جمله Connection String را کد کرده و سپس ذخیره کنید.

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

3) اطلاعات تکنیکی را از دید کاربران مخفی کنید

در برنامه های ASP.NET هنگامی که خطایی رخ می دهد که توسط برنامه هندل نشده، تمام اطلاعات تکنیکی مربوط به خطای مذکور با ذکر جزئیات و حتی خطی از برنامه که خطا در آن اتفاق افتاده است توسط کاربران قابل مشاهده است. البته این تنظیمات پیش فرض ASP.NET برای زمان توسعه در Localhost و خطایابی مناسب است که هنگام پابلیش وب اپلیکیشن بر روی اینترنت یا اینترانت باید تغییر کند. متاسفانه برخی از برنامه نویسان ناشی هنگام توزیع وب اپلیکیشن خود همان فایل web.config روی لوکال هاست خود را بدون هیچ تغییری بر روی محیط اجرایی قرار می دهند. این گونه پیغام های خطای ASP.NET معمولاً اطلاعات مناسبی در مورد آسیب پذیری های یک وب سایت در اختیار یک هکر قرار می دهد. برای حل این مشکل شما باید تمام خطاهای ممکن را هندل کنید و مقدار ویژگی customErrors در فایل web.config را برابر RemoteOnly قرار دهید.

<customErrors mode=«RemoteOnly«></customErrors>

4) حالت دیباگ را غیرفعال کنید

هنگام توسعه یک وب اپلیکیشن در ASP.NET حالت Debug به صورت پیش فرض true است. شما باید پس از توسعه و هنگام آپلود وب اپلیکشن در یک هاست اینترنتی خاصیت debug در قسمت compilation فایل web.config را برابر false قرار دهید. این کار هم کارایی برنامه تحت وب شما را بالاتر می برد و هم از نشان دادن برخی از خطاها که باعث لو رفتن کدهای شما می شود جلوگیری می کند.

5) مواظب حملات SQL Injection باشید

این نوع حملات در اکثر وب سایت های اطلاعاتی مبتنی بر دیتابیس مرسوم است. به این صورت که کاربر/هکر یک کد SQL را به برنامه شما تزریق می کند و باعث ایجاد خرابکاری می شود. با وجود خطرناک بودن و جدی بودن این نوع حمله باز هم هستند برنامه نویسانی که به این مورد توجهی ندارند. به طور مثال در یک فرم لاگین نا امن که کوئری چک کردن Username و Password شبیه به کد زیر باشد، حمله SQL Injection به راحتی امکان پذیر است.

string query = «SELECT * FROM Users WHERE username='» +
txtUsername.Text + «‹ AND password='» + txtPassword.Text + «‹»;

در این موقعیت یک فرد نسبتاً باهوش با نوشتن رشته x› or username like %x در فیلد password به راحتی می تواند فرم لاگین شما را رد کرده و خود را به عنوان یک کاربر قانونی جا بزند. برای جلوگیری از این مشکل حتماً قانون اول را رعایت کنید و به جای استفاده از مقادیر تکست باکس ها به این صورت، از کلاس SqlParameter برای مقداردهی استفاده کنید. یکی از راه های دیگر برای جلوگیری از این حمله استفاده از ORMهایی مثل LINQ  to SQL است.

6) جلوگیری از حملات Cross-site Scripting

یکی از مرسوم ترین و در دسترس ترین نوع حملات به وب سایت هاست که فرد خرابکار سعی می کند اسکریپت مخربی را به وب اپلیکیشن شما تزریق کند. به طور مثال در فرم های ورود اطلاعات کاربر خرابکار می تواند به جای وارد کردن اطلاعات صحیح، کدهای جاوا اسکریپت مخرب را وارد کند. خوشبختانه ASP.NET به صورت پیش فرض دارای یک محافظ درخواست توکار است که در اکثر مواقع جلوی این حملات را می گیرد. اما باز هم نمی توان به صورت صد در صد به آن اطمینان کرد، چون راه هایی برای دور زدن آن نیز وجود دارد. بهتر است هنگام نمایش دادن داده های ورودی کاربر، ابتدا رشته مورد نظر را با Server.HtmlEncode به یک رشته امن HTML تبدیل کنید و سپس آن را نمایش دهید. در این صورت اگر حتی کاربر اسکریپت مخربی را با موفقیت به برنامه شما تزریق کرده باشد، آن اسکریپت اجرا نخواهد شد و فقط به صورت یک رشته به نمایش در خواهد آمد.

7) سیستم لاگین خود را امن بسازید

روش مرسوم برای پیاده سازی سیستم لاگین در وب، روش استفاده از Session است. Session متغیرهایی هستند که بر روی سرور به ازای هر کاربر لاگین شده ساخته می شوند و وب اپلیکیشن با چک کردن متوالی آن در هر صفحه هویت کاربر وارد شده را شناسایی می کند. یک Session معمولاً برای یک مدت زمان محدودی (مثلاً 20 دقیقه) اعتبار دارد و پس از آن کاربر دوباره باید به سیستم لاگین کند. در ASP.NET بهترین و امن ترین راه برای پیاده سازی لاگین استفاده از ویژگی خوب تشخیص هویت خود دات نت است. منظورم همان FormsAuthentication است که شما با آن می توانید یک سیستم لاگین بسیار امن پیاده سازی کنید. به هیچ وجه از کوکی ها برای پیاده سازی یک سیستم لاگین استفاده نکنید! از کوکی ها فقط برای پیاده سازی قابلیت «Remember Me» استفاده کنید آن هم با کلی احتیاط! یک نکته دیگر در مورد لاگین این است که تعداد تلاش های ناموفق یک کاربر برای لاگین را محدود کنید. مثلاً بعد از 5 بار وارد کردن اشتباه رمز عبور به او تا یک مدت اجازه ورود ندهید!

8 ) در مواقع لازم از تصاویر امنیتی استفاده کنید

این نکته را در اکثر وب سایت ها و هنگام ثبت نام دیده اید. مثلاً گوگل در هنگام ثبت نام شما را مجبور می کند که یکسری حروف عجیب و غریب را که در عکس می بینید درون تکست باکس وارد کنید تا بفهمد شما آدم هستید! شما هم سعی کنید در اکثر فرم هایی که نیاز به لاگین کاربر ندارند (مثل فرم ثبت نام یا فرم تماس) از این تصاویر استفاده کنید.

9) امنیت دیتابیس خود را تامین کنید

معمولاً دیتابیس های SQL Server دارای امنیت بسیار خوبی هستند اما اگر از دیتابیس Access برای ذخیره اطلاعات استفاده می کنید حتماً 1- روی فایل آن پسورد بذارید 2- مطمئن شوید که فولدری که فایل دیتابیس در آن قرار دارد توسط کاربران قابل دسترسی نباشد 3- حتماً اطلاعات داخل آن را کدگذاری کنید.

farasun.wordpress.com

مطالب مرتبط :

طراحی و برنامه نویسی وب با تکنولوژی های رایگان مایکروسافت

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

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

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

IIS یک وب سرور

سرویس دهنده وب قدرتمند مایکروسافت که پس از آپاچی، پر استفاده ترین Web Server جهان است. این وب سرور رایگان است هنگامی که شما هزینه ویندوز غیر رایگان را داده باشید! این وب سرور تمام پروتکل های استاندارد وب را پشتیبانی می کند و بهترین انتخاب برای توسعه وب اپلیکیشن های مبتنی بر ASP.NET است. اگر از ویندوزهای غیر سرور استفاده می کنید باید این وب سرور را از روی CD یا DVD ویندوز یا از اینترنت نصب کنید.

ASP.NET MVC یک فریم ورک

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

Visual Web Developer Express یک محیط توسعه و طراحی

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

SQL Server Express یک سرویس دهنده دیتابیس

یک نسخه سبک و رایگان از سیستم مدیریت پایگاه داده های قدرتمند مایکروسافت است که راه حلی مناسب برای ذخیره داده های برنامه های تحت وب شما خواهد بود. این نسخه رایگان می تواند به دیتابیسی تا حجم 4 گیگابایت سرویس دهد، فکر می کنم این اندازه جواب گوی برنامه های تحت وب شما باشد!

پلت فرم وب مایکروسافت

برنامه نویسان PHP نیز به همچین ابزارهایی برای ساختن یک وب اپلیکیشن احتیاج دارند. آن ها با نصب نرم افزارهایی مثل WAMP خود را درگیر نصب تک تک ابزارهای مورد نیاز خود و انجام تنظیمات آن ها نمی کنند. شما هم برای استفاده از تکنولوژی های رایگان مایکروسافت برای توسعه وب نیازی به دانلود تک تک این ابزارها و نصب جدای آن ها ندارید! می پرسید چطور!؟ …. مایکروسافت راه حلی برای این کار ارئه داده است به نام Web Platform Installer که علاوه بر نصب تکنولوژی های فوق برای شما، امکانات و ابزارهای سودمند و فوق العاده دیگری نیز در اختیارتان می گذارد آن هم به صورت کاملاً رایگان!

ابتدا Web Platform Installer را با حجم بسیار کم از اینجا دانلود کنید. با استفاده از آن می توانید :

  • IIS را به علاوه اکستنشن های سودمندش دانلود، نصب و تنظیم کنید.
  • SQL Server Express را دانلود، نصب و تنظیم کنید.
  • ابزارهایی برای ساخت وب اپلیکیشن های وب 2.0 مثل سیلورلایت را دانلود و نصب کنید.
  • یک محیط توسعه مناسب به نام Visual Web Developer در اختیار بگیرید.
  • وب اپلیکیشن های محبوب اوپن سورس مثل دات نت نیوک را سفارشی کنید.

نصب URL Rewrite برای IIS 7.0

Microsoft Web Platform Installer راه سریع و راحتی برای نصب و سفارشی کردن تمام نرم افزارهای مورد نیاز برای توسعه و توزیع وب سایت ها و وب اپلیکیشن ها بر روی ویندوز ارائه می دهد. این ابزار به صورت خودکار سیستم شما را چک می کند تا بفهمد چه ابزارهایی از قبل روی سیستم شما نصب است و سپس در صورت نیاز به شما پیشنهاد آپدیت آن ها یا اضافه کردن ابزارهای جدید را می دهد. سپس این شما هستید که تصمیم می گیرید چه ابزارهایی واقعاً نیاز دارید و Web PI آن ها را دانلود کرده و بر روی ویندوز شما نصب می کند.

گالری اپلیکشن های آماده و اوپن سورس

پلت فرم وب مایکروسافت یک گالری پر از وب اپلیکشن های آماده سودمند، رایگان و اوپن سورس دارد که به صورت مستقیم از داخل Web PI قابل نصب هستند. این گالری شامل وب اپلیکیشن های محبوب و اوپن سورس دات نت مثل دات نت نیوک، SubText، BlogEngine.NET، DasBlog و Ubraco CMS و اپلیکیشن های اوپن سورس PHP مثل وردپرس، Drupal و Jomla است. شما به آسانی می توانید در Web PI عنوان این پلیکیشن های آماده را مرور کنید و در صورت نیاز آن را بر روی سرور مورد نظر خود نصب کنید.

نصب اپلیکشن های تحت وب کدباز از داخل Web PI

همانطور که مشاهده می کنید، علاوه بر دانلود و نصب اپلیکیشن های دات نت، امکان دانلود و نصب اپلیکیشن های PHP را نیز بر روی وب سرور IIS به شما می دهد.

دریافت Web Platform Installer

Make Web, Not War

مشترک فید فراسان شوید

ابزارهایی برای ساخت وب اپلیکیشن های وب 2.0 مثل سیلورلایت را دانلود و نصب کنید.

PHP برای برنامه نویسان ASP.NET – قسمت هفتم

قسمت اول قسمت دومقسمت سومقسمت چهارمقسمت پنجمقسمت ششم

در این قسمت با نحوه کار با دیتابیس در PHP آشنا خواهید شد. همانطور که پرکاربردترین RDBMS در نزد برنامه نویسان ASP.NET برنامه SQL Server مایکروسافت است، MySQL پرکاربردترین RDBMS در میان برنامه نویسان PHP است. در این سری آموزش ها ما نیز بر روی دسترسی به داده ها در MySQL تمرکز خواهیم داشت.

اتصال یه یک دیتابیس MySQL

قبل از هر کاری ابتدا شما باید یک ارتباط میان برنامه خود و MySQL ایجاد کنید. برای این کار PHP یک تابع به نام my_sql_connect دارد که نام سرور، نام کاربری و رمز عبور دیتابیس MySQL را از شما می گیرد و یک اتصال برای شما ایجاد می کند. اگر این تابع با موفقیت به دیتابیس مورد نظر شما وصل شود true و ر غیر این صورت false برمی گرداند. برخلاف اتصال به SQL Server در ASP.NET که با استفاده از کلاس های دات نت انجام می گیرد، اینجا در PHP با استفاده از این تابع و توابع دیگر می توان با یک دیتابیس MySQL کار کرد. به مثال زیر توجه کنید :

<?php
$link = mysql_connect(‹localhost›, ‹user›, ‹password›);
if (!$link) {
die(‹Could not connect: ‹ . mysql_error());
}
echo ‹Connected successfully›;
mysql_close($link);
?>

تابع mysql_connect در این مثال با استفاده از نام کاربری user و رمز عبور password به سرور localhost وصل می شود و نتیجه این اتصال را در متغیر link می ریزد. اگر این عمل موفیت آمیز باشد عبارت Connected successfully چاپ می شود، در غیر این صورت پیغام خطای خود MySQL را نمایش می دهد و به اجرای این اسکریپت خاتمه می دهد. در انتها نیز اگر اسکریپت با موفیت به MySQL وصل شده باشد، با تابع mysql_close اتصال را می بندیم. تابع die مانند تابع exit (در قسمت قبلی) یک پیغام را نمایش می دهد و اجرای ادامه اسکریپت را متوقف می کند.

البته تابع mysql_connect پارامترهای دیگری نیز دارد که ما به آن ها نمی پردازیم. همچنین شما می توانید این تابع را بدون ذکر هیچ پارامتری صدا بزنید که در این صورت از مقادیر ثابت پیش فرض موجود در فایل php.ini استفاده خواهد شد.

ایجاد یک دیتابیس بر روی MySQL

شما قبل از اینکه بخواهید از یک دیتابیس در برنامه خود استفاده کنید، ابتدا باید آن را ایجاد کنید. برای این کار می توانید از ابزارهایی مثل PhpMyAdmin استفاده کنید یا خودتان با استفاده از کدنویسی PHP دیتابیس MySQL خود را بسازید. در اینجا روش دوم که روش مناسب تری نیز هست را با یک مثال توضیح می دهم. لطفاً به مثال زیر توجه کنید :

<?php
$sql_create_db = ‹CREATE DATABSE test›;
$sql_create_table = ‹CREATE TABLE table1 (tbl_id INT PRIMBARY KEY, fname VARCHAR(100), lname VARCHAR(100))›;
$link = mysql_connect(‹localhost›,‹user›,‹password›);
if($link){
//Create Database
if(mysql_query($sql_create_db, $link))
echo «Database created.»;
else
die(«Error : « . mysql_error());
//Select Active Database
mysql_select_db(«test», $link);
//Create table
if(mysql_query($sql_create_table, $link))
echo «Table created.»;
else
die(«Error :» . mysql_error());
//Close Connection
mysql_close($link);
}
else
die(«Error connect to database : « . mysql_error());
?>

امیدوارم با دستورات SQL آشنایی کافی داشته باشید. در این مثال نتیجه اتصال به سرور MySQL را در متغیر link ریختیم، سپس با یک if چک می کنیم که آیا اتصال ما با موفقیت انجام پذیرفته یا خیر. اگر موفق بوده سعی می کنیم Database و Table مورد نظر خود را بر روی این اتصال بسازیم. برای این کار از تابع mysql_query استفاده می کنیم. این تابع یک دستور sql را بر روی MySQL اجرا می کند. اگر موفق به ایجاد دیتابیس بر روی سرور شدیم، با استفاده از تابع mysql_select_db دیتابیس جاری MySQL را به دیتابیس test تغییر می دهیم. بعد دوباره با استفاده از تابع mysql_query اسکریپت ایجاد table بر روی دیتابیس فعال را اجرا می کنیم که اگر موفقیت آمیز بود پیغام مناسب را نمایش می دهیم.

تابع mysql_query یکی از توابع بسیار پرکابرد برای دسترسی و تغییر داده ها در MySQL است. اگر یک اسکریپت فقط اجرایی و بدون مقدار برگشتی (مثل دستور Insert یا همین ایجاد دیتابیس) را به این تابع بدهید، مقادیر True یا False رابر خواهد گرداند، اگر دستور SQL شما نتیجه ای داشته باشد (مثل دستور Select) مقدار برگشتی این تابع اگر موفقیت آمیز باشد یک resource خواهد بود و در غیر این صورت False خواهد بود.

درج، به روز رسانی و حذف داده ها در MySQL

برای اجرای دستورات Insert, Update و Delete بر روی یک دیتابیس MySQL در PHP همانطور که در مثال بالا مشاهده کردید از تابع mysql_query استفاده می کنیم. نکته ای که برنامه نویسان ASP.NET باید به آن توجه داشته باشند این است که در PHP شما باید خودتان عمل دریافت اطلاعات از کاربر (با استفاده از فرم های HTML) و اعتبارسنجی داده های ورودی کاربر را انجام دهید تا از حملات SQL Injection در امان بمانید. در ASP.NET با استفاده از کلاس SqlParameter می توان تا حد زیادی از وقوع این حملات جلوگیری کرد. من یک مثال کوچک در مورد نحوه Insert یک رکورد به دیتابیسی که در مثال بالا ساختیم می زنم، Update و Delete را خودتان بنویسید.

<?php
$sql_insert = ‹INSERT INTO table1 (tbl_id, fname, lname) VALUES (1,»iman»,»nemati»)›;
$link = mysql_connect(‹localhost›,‹user›,‹password›);
if($link){
mysql_select_db(«test», $link);
if(mysql_query($sql_insert, $link)
echo «Inserted to database»;
mysql_close($link);
}
else
die(«Error: « . mysql_error());
else
die(«Error: « . mysql_error());
?>

البته در سناریوهای واقعی شما باید مقادیر فیلدها را از ورودی های کاربر بخوانید و در دستور sql بالا جایگذاری کنید.

خواندن اطلاعات از یک دیتابیس MySQL

منظور همان دستور Select در sql و خواندن تعداد رکوردهای مورد نظرمان بر اساس شرطی خاص است. برای این کار پس از اتصال به دیتابیس مورد نظر خود دستور Select مورد نظرتان را بوسیله تابع mysql_query اجرا می کنید و سپس نتیجه را در یک متغیر قرار می دهید. اگر متغیر برابر false نبود، با استفاده از تابع mysql_fetch_assoc شروع به خواندن رکوردهای مورد نظر خود می کنیم. به کد زیر نگاه کنید :

<?php
$sql_select = ‹SELECT * FROM test›;
$link = mysql_connect(‹localhost›,‹user›,‹password›);
if($link){
mysql_select_db(«test», $link);
$results = mysql_query($sql_select, $link);
if(!$results){
echo «Error : « . mysql_error();
exit;
}
if(mysql_num_rows($results) == 0){
echo «no record found.»;
exit;
}
while($item = mysql_fetch_assoc($results)){
echo $item[‹tbl_id›];
echo $item[‹fname›];
echo $item[‹lname›];
echo ‹<br />›;
}
mysql_free_result($results);
?>

تابع mysql_num_rows تعداد رکوردهایی که توسط دستور select خوانده شده اند را برمی گرداند. در دستور شرط while با استفاده از تابع mysql_fetch_assoc تعیین می کنیم که تا وقتی یک رکورد وجود دارد دستورات بدنه while اجرا شوند. اگر انتظار برگرداندن فقط یک رکورد را دارید نیازی به استفاده از حلقه while نخواهید داشت. تابع mysql_free_result هم سعی می کند حافظه اختصاص داده شده به متغیری که با اطلاعات یک دیتابیس پر شده را آزاد کند.

farasun.wordpress.com

ادامه دارد…

10 نکته SEO برای وب سایت های ASP.NET

پس از ساخت یک وب سایت و قرار دادن آن در اینترنت، مهمترین مسئله پیدا کردن بازدیدکننده و مشتری برای آن است. وب سایتی که بازدیدکننده نداشته باشد به هیچ دردی نمی خورد. در این روزگار هم بازدید کننده و مشتری از کجا پیدا می شود… از موتورهای جستجوی معروف مثل گوگل، یاهو و بینگ! اکثر بازدیدهای یک وب سایت را موتورهای جستجو تامین می کنند، به همین علت داشتن یک رتبه ی خوب در موتورهای جستجو یک امتیاز مهم محسوب می شود و باعث پیشرفت وب سایت شما خواهد شد. موتورهای جستجو برای ربته بندی وب سایت ها در نتایج جستجوی خود قوانین مشخصی دارند که با پیروی از این استانداردها می توانید وب سایت خود را برای موتورهای جستجو بهینه کنید. به بهینه کردن یک وب سایت برای موتورهای جستجوگر SEO یا Search Engine Optimization می گویند.

بهینه سازی برای موتورهای جستجو

در این مطلب با نکاتی آشنا خواهید شد که اگر آن ها را به کار بگیرید، موتورهای جستجوگر مطالب وب سایت شما را ایندکس خواهند کرد و لینک های شما در نتایج جستجوی موتورهای جستجوگر معروفی همچون گوگل پدیدار خواهد شد! هر چند این نکات به صورت عمومی و برای صفحات استاتیک هم کاربرد دارند اما این مطلب به صورت خاص برای توسعه دهندگان ASP.NET نوشته شده است.

1 ) URLهای تمیز بسیازید!

URL یک صفحه وب، اولین جایی است که یک موتور جستجو می بیند پس سعی کنید تا جایی که می توانید آدرس های شما با معنی باشند. اگر از ASP.NET MVC استفاده می کنید که هیچ! در غیر این صورت باید از تکنیک URL Rewriting برای بازنویسی آدرس های پارامتری و تبدیل آن به URLهای با معنی استفاده کنید. به طور مثال شما باید آدرسی مثل mysite.com/products.aspx?id=1 را تبدیل به mysite.com/products/1 کنید. اگر به جای اعداد از کلمات با معنی استفاده کنید که چه بهتر!

2 ) URLهای کوتاه بهتر از URLهای طولانی است

سعی کنید آدرس های تولید شده توسط وب سایت شما حداقل طول ممکن را داشته باشند. خود گوگل توصیه می کند که صفحات پویا حداکثر دارای دو پارامتر باشند. صفحاتی با آدرس شبیه به mysite.com/products.aspx?item=3&category=7&subcategory=12&show=true شانس کمتری برای ایندکس شدن نسبت به صفحاتی با یک URL تمیز و کوتاه دارند.

3 ) تا جایی که می توانید از ایجاد Postback جلوگیری کنید!

استفاده از Postback در صفحات aspx می تواند از مهمترین دلایل برای عدم ایندکس شدن بخشی از این صفحات در موتورهای جستجوگر باشد. به طور مثال فرض کنید بخشی از صفحه را در یک Panel قرار داده اید که کاربر پس از فشردن یک دکمه و ایجاد یک Postback به صفحه دستور panel1.Visible = true اجرا شده و محتویات پانل را به کاربر نمایش می دهد. این کار اشتباه شما باعث عدم ایندکس شدن بخشی از محتویات سایت شما که در پانل وجود دارد، می شود، به این دلیل که یک موتور جستجو نمی تواند لینک های یک دکمه را دنبال کند، به زبان ساده تر نمی تواند روی آن دکمه کلیک کند تا ببیند چه اتفاقی می افتد! علاوه بر این مورد، Postback باعث ساخته شدن مقداری کد جاوا اسکریپت در صفحه ما می شود که هم حجم صفحه را بالا می برد و هم اینکه این کدها به هیچ وجه ایندکس نمی شوند. راه حل استفاده از Query String برای انجام اعمالی است که می خواهید هنگام Postback انجام شوند. به طور مثال یک پارامتر به همین صفحه می فرستید و در Page_Load پارامترها را چک می کنید تا عمل مورد نظر کاربر را انجام دهید. در این صورت صفحه شما به راحتی در موتورهای جستجو ایندکس خواهد شد.

4 ) تا جایی که می توانید از کنترل Button استفاده نکنید!

در بکارگیری و استفاده از کنترل تحت سرور asp:Button دقت مضاعف! داشته باشد. این کنترل حتی اگر کدی برای آن ننویسید باعث ایجاد یک Postback می شود. موتورهای جستجوگر نمی توانند کد پشت این دکمه را اجرا کنند تا نتیجه را ایندکس کنند. سعی کنید تا جایی که امکان دارد به جای استفاده از دکمه از تگ a (لینک معمولی) و دستور Response.Redirect استفاده کنید.

5 ) همیشه Title صفحه را به صورت پویا ایجاد کنید

هنگامی که یک صفحه aspx به پروژه خود اضافه می کنید، صفحه شما هیچ Title خاصی ندارد. همانطور که می دانید تگ Title یکی از مهمترین بخش های یک صفحه وب است که از نگاه تیزبین موتورهای جستجو مخفی نمی ماند. فرض کنید شما یک عنوان مناسب برای قسمت Title تعیین کردید، اما آیا این کافیست؟ مگر قرار نیست صفحه پویای شما بر اساس درخواست کاربر محتویات مختلفی نمایش دهد؟ اگر جوابتان مثبت است پس شما باید بر اساس درخواست کاربر و محتویات صفحه، هر بار یک Title خاص را ایجاد کنید. برای این کار می توانید از کلاس HtmlTitle استفاده کنید یا تگ title صفحه خود را به شکل زیر تغییر دهید :

<title runat="server" id="mytitle"></title>

سپس در Page_Load کدی شبیه به کد زیر را بنویسید :

if (Request.QueryString.Count > 0)
{
mytitle.Text = "Test - " + Request.QueryString["name"];
}

6 ) به تگ Meta توجه ویژه ای داشته باشید

تگ Meta با خاصیت های name=»description»x و name=»keywords»x یکی از مهمترین تگ های مربوط به SEO هستند که اولی برای توضیح یک صفحه وب و دومی برای مشخص کردن کلمات کلیدی آن صفحه وب برای موتورهای جستجو کاربرد دارند. خزنده موتورهای جستجو همیشه دقت ویژه ای به محتویات این دو تگ مهم دارند و استفاده درست از آن ها باعث بالا رفتن رتبه صفحه وب شما در نتایج موتورهای جستجو مثل گوگل خواهد شد. در صفحات استاتیک که محتویات صفحه قرار نیست تغییر کنند، شما به صورت دستی مقادیر این تگ ها را مشخص می کنید اما در صفحات پویای ASP.NET بهتر است بر اساس محتویات صفحه ای که قرار است بر اساس اطلاعاتی که از دیتابیس خوانده می شود تغییر کند، محتویات این تگ ها نیز تغییر کنند. برای این که هر بار تگ متا به صورت پویا تعیین شود می توانید این تگ را به شکل زیر بنویسید :

<meta name="description" content=<%= MetaDesc %>  />
<meta name="keywords" content=<%= MetaKeywords %> />

سپس در Code Behind صفحه خود دو متغیر Public از نوع string به نام های MetaDesc و MetaKeywords بسازید. حالا در Page_Load بر اساس اطلاعاتی که می خواهید نمایش دهید این دو متغیر را تغییر دهید تا تگ های متای شما نیز تغییر کنند.

7 ) هر صفحه* URL یکتای خود را داشته باشد

این نکته خیلی مهم است. * منظور از صفحه در اینجا یک فایل فیزیکی نیست. به طور مثال فایل فیزیکیproducts.aspx می تواند صفحات products.aspx?id=1 یا products.aspx?name=datefa را بسازد که محتویات یکسانی ندارند! موتورهای جستجو این دو آدرس را به صورت دو صفحه جداگانه در نظر می گیرند. اگر مثل همین مثال از Query String برای مشخص کردن پارامترها استفاده کنید هیچ مشکلی وجود ندارد، اما اگر از ViewState، Session یا کوکی برای ذخیره این پارامترها و پاس دادن مقادیر به صفحات استفاده می کنید، راه اشتباهی را در پیش گرفته اید! استفاده از این روش باعث می شود که نرم افزارهای خزنده توانایی تفکیک صفحات را نداشته باشند و در نتیجه محتویات شما در موتورهای جستجو ایندکس نخواهد شد. به بیان ساده هر صفحه ای که یک URL یکتا داشته باشد و کاربر بتواند آن را بوکمارک کند توسط موتورهای جستجو نیز قابل ایندکس شدن خواهد بود.

8 ) حتماً یک Site Map برای پروژه خود بسازید

Site Map یک پروتکل استاندارد بر اساس XML است که به موتورهای جستجو کمک می کند تا صفحات را آسان تر و کاراتر ایندکس کنند. داشتن یک Site Map در یک وب سایت مبتنی بر ASP.NET علاوه بر فوایدی که برای ایندکس شدن در موتورهای جستجوی مختلف دارد، باعث نظم در ساختار منوها و Navigation یک وب سایت می شود. ساختن یک Site Map با لطف ویژوال استادیو بسیار آسان شده است. روی پروژه خود کلیک راست کنید و گزینه Add New Item… را برگزینید. در پنجره باز شده Site Map را پیدا کنید و به پروژه خودتان اضافه کنید. حالا فایلی به نام Web.sitemap به پروژه شما اضافه شده است. اگر با XML آشنایی داشته باشید، قواعد نوشتن Site Map نیز مانند نوشتن تگ های XML است. سعی کنید تمام صفحات مهم خودتان را با جزئیات کامل و رعایت قوانین یک نقشه سایت، در این فایل مشخص کنید.

9 ) URLهای خود را با حروف کوچک بسازید

اکثر موتورهای جستجو به بزرگی و کوچکی حروف حساس هستند و این یعنی دو آدرس mysite.com/products.aspx و mysite.com/Products.aspx برای آن ها متفاوت هستند. برای جلوگیری از این اشتباه شما باید تمام URLهای خود را با حروف کوچک بسازید تا مشکلی در ایندکس شدن صفحات توسط موتورهای جستجو پیش نیاید.

10 ) سورس کد صفحات را تمیز کنید!

سورس کد خود را تمیز کنید تا صفحات شما کم حجم شوند. در اینجا منظور از سورس کد، کد نوشته شده در فایل های aspx است نه کدهای موجود در Code Behind که به cs یا vb ختم می شوند. برای تمیز کردن سورس صفحات :

  • کامنت های html را حذف کنید
  • از ViewState وقتی که نیازی به آن ندارید، استفاده نکنید
  • از form runat=»server»x وقتی که نیازی به آن ندارید، استفاده نکنید
  • تا می توانید کد جاوا اسکرپیت درون فایل aspx ننویسید، بلکه از فایل های Js خارجی استفاده کنید
  • تا می توانید کدهای CSS خود را در فایل های استایل جداگانه تعریف کنید

farasun.wordpress.com

نکات مهم دیگر :

  • در تگ های a حتماً از خاصیت title استفاده کنید
  • در تگ های img از خاصیت alt استفاده کنید
  • مطالب وب سایت خود را در فرمت rss هم ارئه کنید
  • از Flash یا Silvetlight برای نشان دادن محتویات استفاده نکنید
  • از Flash یا Silverlight برای ساختن منوها استفاده نکنید
  • از منوهای جاوا اسکریپت استفاده نکنید
  • لینک خود را در وب سایت های دیگر قرار دهید

farasun.wordpress.com

PHP برای برنامه نویسان ASP.NET – قسمت ششم

قسمت اول قسمت دومقسمت سومقسمت چهارمقسمت پنجم

کار کردن با فایل ها در PHP

باز کردن و خواندن یک فایل متنی در PHP

تابع fopen در PHP می تواند یک فایل یا یک URL را برای شما باز کند. کافیست آدرس فایل و حالتی که می خواهید فایل را باز کنید به این تابع بدهید تا این تابع یک handle برای کار با فایل مورد نظر شما، برگرداند. در مثال زیر می خواهیم یک فایل متنی را باز کنیم و خط به خط بخواینم و روی خروجی مرورگر چاپ کنیم.

<?php
$f = fopen(«change.txt»,«r») or exit(«File not found.»);
while (!feof($f))
{
echo fgets($f). «<br />»;
}
fclose($f);
?>

در خط اول با نوشتن دستور fopen(«change.txt»,»r»)x فایل change.txt را با حالت خواندن (r) باز می کنم و PHP هندل آن را برای کارهای بعدی در متغیر $f ذخیره می کند. دستور بعد از or برای این استفاده می شود که اگر فایل وجود نداشت یا خطایی در باز شدن فایل بوجود آمد ما خطای خودمان را نشان کاربر دهیم نه خطایی که PHP می دهد. در شرط حلقه while دستوری بکار رفته به نام feof که هندل یک فایل را می گیرد و اگر فایل به آخر رسیده باشد true و در غیر این صورت false برمی گرداند. در بدنه حلقه while هم از دستور fgets برای خواندن خط به خط فایل متنی استفاده کردیم. در خط آخر نیز باید فایلی که باز کردیم را با استفاده از تابع fclose ببندیم.

در آرگومان دوم تابع fopen همانطور که ملاحظه کردید، باید حالت باز کردن فایل را مشخص کنید. در مثال بالا ما فایل را با حالت فقط خواندنی باز کردیم چون فقط می خواستیم محتویات فایل را بخواینم. حالت های دیگر باز کردن یک فایل در PHP به صورت زیر است :

  • «r» باز کردن فایل به صورت فقط خواندنی
  • «w» باز کردن فایل برای فقط نوشتن، اشاره گر را به اول فایل می برد و این یعنی اگر فایل وجود داشته باشد تمام محتویات قبلی را پاک می کند و از نو می نویسد. اگر فایل وجود نداشته باشد سعی می کند آن را ایجاد کند.
  • «r+» باز کردن فایل برای خواندن و نوشتن. حالت نوشتن شرایط همان «w» را دارد.
  • «a» باز کردن فایل فقط برای نوشتن. اشاره گر را به انتهای فایل می برد و از آنجا شروع به نوشتن می کند (Append می کند). در صورتی که فایل وجود نداشته باشد سعی می کند آن را بسازد.
  • «a+» باز کردن فایل برای خواندن و نوشتن (Append) با شرایط «a»

نوشتن (ایجاد) یک فایل متنی در PHP

حالا که با حالت های مختلف باز کردن یک فایل در PHP آشنا شدید قصد داریم فایلی را در حالت Append باز کنیم و متنی را به انتهای آن اضافه کنیم. به مثال زیر توجه کنید :

<?php
$content = «This is a sample text.\n»;
$filename = «test.txt»;
$handle = fopen($filenmae, «a»);
if (fwrite($handle,$content) == TRUE)
echo «Success»;
else
echo «Faild»;
fclose($handle);
?>

فکر می کنم مثال خیلی واضح باشد. تنها تابع نا آشنا برای شما در این مثال، تابع fwrite است که هندل فایل را در آرگومان اول می گیرد و مقدار آرگومان دوم را در آن فایل ذخیره می کند. تابع fwrite اگر موفق به نوشتن بر روی فایل شود true و در غیر این صورت false برمی گرداند.

در ASP.NET برای نوشتن در یک فایل متنی از کلاس StreamWriter موجود در فضای نام System.IO به صورت زیر استفاده می کنیم :

StreamWriter writer = File.CreateText(«test.txt»);
writer.WriteLine(«test»);
writer.Close();

بررسی وجود یا عدم وجود یک فایل یا یک دایرکتوری در PHP

برای این کار از تایع file_exists استفاده می کنیم که در آرگومان آن باید آدرس فایل یا دایرکتوری مورد نظر خود را بدهیم تا این تابع با برگرداندن true یا false وجود یا عدم وجود فایل را به ما اطلاع دهد. یک مثال کوچک می تواند قطعه کد زیر باشد :

<?php
if(file_exists(«mydirectory/myfile.temp»))
//do something
?>

در ASP.NET برای این کار از متد File.Exists موجود در فضای نام System.IO استفاده می کنیم.

آپلود فایل در PHP

قبلاً در مورد آپلود فایل در ASP.NET توضیح داده بودم +، برای انجام این کار در PHP ابتدا باید یک فرم HTML برای انتخاب فایل توسط کاربر ایجاد کنید و سپس با استفاده از کدنویسی PHP عملیات آپلود بر روی سرور را انجام دهید. فرم HTML شما برای آپلود یک فایل می تواند چیزی شبیه به کد زیر باشد :

<form enctype=»multipart/form-data» action=»upload.php» method=»POST»>
Please choose a file: <input name=»uploaded» type=»file» /><br />
<input type=»submit» value=»Upload» />
</form>

کدهای بالا را در قسمت body یک فایل html ذخیره کنید. این فرم با استفاده از متد post اقدام به ارسال فایل کاربر به صفحه upload.php می کند. حالا یک فایل به نام upload.php کنار فایل HTML بالا بسازید و کدهای زیر را در آن ذخیره کنید :

<?php
$target = «upload-directory/» . basename( $_FILES[‹uploaded›][‹name›]) ;
if(move_uploaded_file($_FILES[‹uploaded›][‹tmp_name›], $target))
echo «The file has been uploaded»;
else
echo «error during uploading.»;
?>

کد بالا برخلاف کدهای دیگری که تا به حال دیدید نیاز به توضیح بیشتری دارد! PHP تمام فایل هایی را که توسط متد post بر بروی سرور آپلود می شوند را همراه با اطلاعات مربوط به آن فایل ها در یک آرایه سراسری به نام $_FILES نگهداری می کند. در خط اول این کد با استفاده از تابع basename نام فایل را از آدرس کامل فایل جدا کردیم و به همراه آدرس دایرکتوری که می خوایم فایل ها در آن آپلود شوند در متغیر target ریختیم. در خط دوم و در شرط if با استفاده از تابع move_uploaded_file فایل های آپلود شده را که دارای نام موقت بر روی سرور هستند را به آدرسی که خودمان می خواهیم (آدرسی که در متغیر target ریختیم) منتقل می کنیم. در حقیقت این تابع کار Rename را انجام می دهد که اگر موفقیت آمیز باشد true و در غیر این صورت false برمی گرداند.

آرایه $_FILES همانطور که گفتم، علاوه بر فایل ها، اطلاعات مربوط به فایل ها را هم در خود ذخیره می کند. مثلاً $_FILES[«uploaded»][«tmp_name»] نام موقت فایل بر روی سرور را برمیگرداند. این اطلاعات خیلی مفید هستند، به طور مثال شما می توانید سایز و پسوند فایل را چک کنید که اگر دلخواه شما نبود به کاربر اجازه آپلود فایل را ندهید. به مثال زیر توجه کنید :

<?php
if(($_FILES[«userfile»][«type»] == «image/jpeg») &&
($_FILES[«userfile»][«size»] < 50000))
echo «Successfuly uploaded.»;
else
echo «Invalid file size or file type.»;
?>

در این کد چک می کنیم که فایل ارسالی کاربر از نوع عکس jpeg و سایز آن کمتر از 5 کیلوبایت باشد. خب فکر میکنم این مطلب خیلی طولانی شد 🙂 ادامه این مطلب را در قسمت های بعدی بخوانید…!

20+ توسعه دهنده دات نت برای دنبال کردن در توییتر!

توییتر یکی از محبوب ترین سرویس های شبکه اجتماعی در اینترنت است که توانست در مدت کوتاهی کاربران زیادی را جذب خود کند. ایده توییتر ساده است و معمولاً زمان بسیار کمتری نسبت به شبکه های اجتماعی دیگر مثل فیس بوک از شما می گیرد. به همین علت اشخاص پرمشغله نیز از این سرویس استفاده می کنند و در آن فعالیت روزانه دارند. در این مطلب کوتاه با افرادی آشنا خواهید شد که در زمینه دات نت و مسائل مربوط به برنامه نویسی اشخاص سرشناسی هستند و توییت های آنان معمولاً در مورد تکنولوژی های مربوط به برنامه نویسی است. دنبال کردن این افراد در توییتر از این جهت مفید است که شما می توانید با ایده ها و پروژه های این افراد بیشتر آشنا شوید و از کارهای روزانه آن ها اطلاع پیدا کنید. توییت های اکثر این اشخاص منبع خوبی برای پیگیری اخبار دنیای دات نت و برنامه نویسی است.

توییتر

  1. Jeff Atwood نویسنده وبلاگ Coding Horror و صاحب وب سایت معروف Stack Overflow +
  2. Scott Guthrie مرد درجه اول ASP.NET، نیازی به معرفی بیشتر ندارد! +
  3. Scott Hanselman مردی که فکر نمی کنم برای برنامه نویسان دات نت و ASP.NET ناشناخته باشد! +
  4. Scott Hunter مدیر برنامه تیم ASP.NET در مایکروسافت +
  5. John Resig سازنده jQuery و از اعضای شرکت موزیلا +
  6. Louis DeJardin از اعضای اصلی تیم ASP.NET و نویسنده Spark +
  7. Charlie Kindel توسعه دهنده سیستم عامل ویندوز برای گوشی های اسمارت +
  8. Damien Guard از اعضای تیم  Entity Framework و LINQ در مایکروسافت +
  9. Phil Haack از اعضای تیم ASP.NET در مایکروسافت و توسعه دهنده اصلی پروژه اوپن سورس Subtext +
  10. Pete Brown مدیر برنامه برای توسعه Windows Client در مایکروسافت +
  11. Niels Hartvig برنامه نویس ASP.NET و بنیان گذار CMS اوپن سورس Umbraco +
  12. Nikhil Kothari معمار نرم افزار در مایکروسافت در تکنولوژی های ASP.NET و Silverlight +
  13. David Fowler از اعضای برنامه نویس تیم ASP.NET +
  14. David Ebbo از اعضای تیم ASP.NET و فعال در زمینه ASP.NET MVC +
  15. Jeremy Skinner برنامه نویس سی شارپ و فعال در زمینه ASP.NET MVC و اوپن سورس +
  16. Dana Coffey برنامه نویس ASP.NET و از بنیان گذاران اصلی سایت ASPInsiders +
  17. Chris Hardy فعال در زمینه ASP.NET MVC و MonoTouch +
  18. Jon Skeet برنامه نویس سی شارپ که برای گوگل کار می کند! +
  19. Dan Wahlin برنامه نویس دات نت، سیلورلایت و شیرپوینت +
  20. Jeremy Likness برنامه نویس سی شارپ و سیلورلایت و نویسنده کتاب +

https://farasun.wordpress.com

اکانت من در توییتر +

پ.ن 1 : به دلیل فیلتر بودن وب سایت توییتر می توانید از لینک های + کنار هر کدام از افراد بالا برای مشاهده توییت هایشان استفاده کنید. کلاینت تحت وب Tweetree کلاینت توییتر محبوب من است!

پ.ن 2: شما هم می توانید برنامه نویسان موفقی که در زمینه دات نت کار می کنند و در توییتر اکانت دارند را به این لیست اضافه کنید.

نسخه نهایی ASP.NET MVC 2 منتشر شد!

تقریباً دو روز پیش نسخه نهایی فریم ورک کدباز ASP.NET MVC 2 برای دریافت عمومی منتشر شد. این نسخه بهبودهای زیادی پیدا کرده و ویژگی های جدید بیشتری در اختیار توسعه دهندگان وب قرار می دهد. این نسخه با ASP.NET MVC 1.0 کاملاً سازگار است و می تواند در کنار آن نصب شود و به صورت side by side کار کند. این یعنی شما می توانید ASP.NET MVC 2 را نصب کنید در حالی که هنوز هم از ASP.NET MVC 1.0 برای توسعه پروژه های خود استفاده می کنید. در ضمن تمام دانش، کدها و اکستنشن هایی که در ASP.NET MVC 1.0 دارید را می توانید در این نسخه به کار ببندید.

یکی از قابلیت های جدید و کاربردی این نسخه که با نام Areas شناخته می شود به شما کمک می کند تا پروژه های بزرگ را به چندین بخش کوچک تر تقسیم کنید تا بتوانید پیچیدگی پروژه را ساماندهی کنید. هر بخش یا Area معمولاً قسمت جداگانه ای از یک وب اپلیکیشن است و برای دسته بندی viewها و کنترلرها به کار می روند.

پشتیبانی از کنترلرهای غیرهمزمان در این نسخه به کنترلرها اجازه می دهد که درخواست ها را به صورت غیر همزمان پردازش کنند. این قابلیت می تواند کارایی وب اپلیکیشن هایی که با درخواست های خیلی زیاد کار می کنند را بسیار بالا ببرد.

از دیگر قابلیت های جدید این نسخه می توان به بهبودهای اعتبار سنجی مدل در سرور ساید و کلاینت ساید، پشتیبانی از مقدار پیش فرض در پارامترهای یک اکشن، کلاس های helper جدید و بهبودهای API اشاره کرد.

من قبلاً در یک مطلب کوتاه در مورد نحوه آپگیرد کردن از نسخه 1 به نسخه 2 فریم ورک ASP.NET MVC نوشته بودم. نسخه 2 را می توانید برای ویژوال استادیو 2008 و ASP.NET 3.5 از اینجا دانلود کنید. ویژوال استادیو 2010 در انتشار نهایی به صورت توکار ASP.NET MVC 2 را همراه خواهد داشت و دیگر شما نیازی به دانلود و نصب دستی این فریم ورک نخواهید داشت. در ویژوال استادیو 2010 برای آپگرید کردن پروژه هایی که با نسخه 1 نوشته شده اند به نسخه 2 یک ابزار ویزارد نیز در نظر گرفته شده است تا دیگر مجبور به استفاده از روش دستی برای آپگیرد کردن نباشید.

https://farasun.wordpress.com

سایت رسمی ASP.NET MVC | این پروژه در کدپلکس