PDA

View Full Version : آموزش: مروری بر ASP .NET 4 و Visual Studio 2010



PhoenixNet
جمعه 19 آذر 1389, 23:49 عصر
با سلام

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

تنها خواهش می کنم که دوستان اگر پیامی دارند به صورت خصوصی بدهند و نه در این تاپیک تا پیوستگی موضوعات آن به هم نخورد.
اگر موضوعی مفهوم نبود یا نیاز به توضیح بیشتر بود پیام بدین تا دوباره اون موضوع را ویرایش کنم یا توضیح بیشتری بدهم.(البته به صورت پیام خصوصی)
منبع مطالعه هم http://www.asp.net/learn/whitepapers/aspnet4 خواهد بود.



ممنون از دوستان

PhoenixNet
شنبه 20 آذر 1389, 00:03 صبح
1 - Web.config File Refactoring
1 - بازنگری در فایل Web.config

با توجه به اینکه حجم فایل Web.config در طول زمان و افزوده شده امکانات جدیدی که در نسخه های متفاوت به ASP .NET اضافه شده اند مانند AJAX,routing ,..... به شدت زیاد شده است و ایجاد این فایل یا یک وب سایت جدید بدون استفاده از ابزاری مانند Visaul Studio بسیار پیچیده و سخت خواهد بود لذا برای حل این مشکل در دات نت 4 تمام تنظیمات اصلی به فایل machine.config منتقل شده اند و تمام وب سایت ها تنظیمات را از این فایل به ارث می برند.در نتیجه با ایجاد فایل Web.Config مانند زیر به راحتی می توانید وب سایت خود را به صورت اولیه راه اندازی کنید.


<?xml version="1.0"?>
<configuration>
<system.web>
<compilation targetFramework="4.0" />
</system.web>
</configuration>

PhoenixNet
شنبه 20 آذر 1389, 11:06 صبح
2 - Shrinking Session State
2 - کوچک کردن حجم اطلاعات Session

در نسخه4 دات نت اطلاعات مربوط به Session به وسیله کلاس System.IO.Compression.GZipStream فشرده می شوند.لذا در حجم و سرعت دسترسی به این اطلاعات کاهش خواهیم داشت.برای فعال سازی این امکان تنظیماتی به این شکل در فایل Web.Config نیاز است :



<sessionState
mode="SqlServer"
sqlConnectionString="data source=dbserver;Initial Catalog=aspnetstate"
allowCustomSqlDatabase="true"
compressionEnabled="true"
/>

PhoenixNet
یک شنبه 21 آذر 1389, 00:31 صبح
3 - Extensible Output Caching
3 - کش خروجی قابل توسعه

در دات نت 4 شما می توانید به تعداد مورد نظرتون برای پروسه کش، ارائه دهنده(providers) ایجاد کنید .با این امکان میتونید بخش خاصی از ترافیک سایتتون(مثلا یک صفحه خاص یا یک کنترل خاص) رو در هرجا که خواستید ( local , remote disks, cloud storage, distributed cache engines) ذخیره کنید.
برای اینکار ابتدا یک کلاس که از System.Web.Caching.OutputCacheProvider مشتق شود ایجاد می کنید.



public class DiskCache: System.Web.Caching.OutputCacheProvider
{
public override object Add(string key, object entry, DateTime utcExpiry)
{
throw new NotImplementedException();
}

public override object Get(string key)
{
throw new NotImplementedException();
}

public override void Remove(string key)
{
throw new NotImplementedException();
}

public override void Set(string key, object entry, DateTime utcExpiry)
{
throw new NotImplementedException();
}
}


سپس می توانید فایل Web.Config تنظیمات را مانند زیر انجام دهید.




<caching>
<outputCache defaultProvider="AspNetInternalProvider">
<providers>
<add name="DiskCache"
type="Test.OutputCacheEx.DiskOutputCacheProvider, DiskCacheProvider"/>
</providers>
</outputCache>

</caching>



در دات نت 4 به طور پیش فرض تمام اطلاعات کش در حافظه ذخیره می شوند.اگر defaultProvider=AspNetInternalProvider باشد حالت پیش فرض خواهد بود.که میتونید به جای آن Provider خود را قرار دهید.
به ازای هر درخواست و هر کنترل می تونید یک provider خاص تعریف کنید.مثلا با اضافه کردن کد زیر برای یک کنترل خاص ، کش کردن یک کنترل خاص را کنترل کنید



<%@ OutputCache Duration="60" VaryByParam="None" providerName="DiskCache" %>



یا با بازنویسی(override ) تابع GetOuputCacheProviderName در فایل Global.asax می توانید درخواست ها را نیز کنترل کنید.مانند :


public override string GetOutputCacheProviderName(HttpContext context)
{
if (context.Request.Path.EndsWith("Advanced.aspx"))
return "DiskCache";
else
return base.GetOutputCacheProviderName(context);
}


که در مثال بالا اگر درخواست Advanced.aspx بود از DiskCache که در بالا تعریف کردیم استفاده کن و گرنه از کش پیشفرض استفاده کن.

یک کاربرد اینه که مثلا شما 10 صفحه پربیننده سایت رو در حافظه کش کنید ولی باقی صفحات که بازدید کننده کمتری داره رو روی دیسک ذخیره کنید.که باعث میشه حافظه کمتری از سرور اشغال شود.

PhoenixNet
دوشنبه 22 آذر 1389, 09:57 صبح
4 - Permanently Redirecting a Page
4 - انتقال همیشگی آدرس یک صفحه

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

استفاده از Response.Redirect یک مشکل ایجاد می کند .مشکل مربوط به موتورهای جستجویی می شود که صفحات قبلی شما را ایندکس(Index) کرده اند.وقتی شما از Response.Redirect استفاده می کنید در جواب HTTP 302 Found به موتور جستجو اعلام میشه که باعث میشه که اولا هنوز لینک های قدیمی برای موتور جستجو معتبر باشه و در ثانی لینک های جدید به عنوان یک صفحه جدید به ایندکس موتور جستجو اضافه شود.

برای حل این مشکل در دات نت 4 از تابع Response.RedirectPermanent می توانید استفاده کنید که در پاسخ HTTP 301 Moved Permanently را به موتور جستجو اعلام می کند و موتور جستجو لینک قدیم را با جدید تعویض می کند.

PhoenixNet
پنج شنبه 25 آذر 1389, 23:22 عصر
5 - Expanding the Range of Allowable URLs
5 - گسترش URL های قابل پذیرش

در نسخه قبلی دات نت ماکزیمم طول URL که شما می توانستید استفاده کنید حداکثر 260 کاراکتر بود که آن هم به دلیل محدودیت NTFS file-path بود.
در دات نت 4 دو ویژگی URL را شما می توانید تنظیم کنید.
1 - طول مجاز URL


<httpRuntime maxQueryStringLength="2048" />

2 - کاراکترهای مجاز قابل استفاده در URL.در صورت وجود کاراکتر غیر مجاز سرور HTTP 400 error را بر می گرداند.


<httpRuntime requestPathInvalidChars="&lt;,&gt;,*,%,&amp;,:,\,?" />

نکته : &amp; همان & و &lt; همان > و..... که برای اینکه در Web.Config بتوان نوشت به این صورت نوشته می شوند.
نکته : دات نت 4 همیشه کاراکترهای ASCII 0x00 to 0x1F را به عنوان کاراکتر غیر مجاز در نظر می گیرد.

PhoenixNet
چهارشنبه 01 دی 1389, 11:35 صبح
6 - Extensible HTML, URL, and HTTP Header Encoding

6 - قابلیت توسعه روش اینکود کردن HTML و URL و HTTP Header

در دات نت 4 شما می توانید برای المان های متنی زیر روش اینکود مورد نظر خود را بنویسید.

HTML encoding.
URL encoding.
HTML attribute encoding.
Encoding outbound HTTP headers.


به طور مثال اگر شما برای جلوگیری از حملات cross-site scripting attacks - XSS از یک کتابخانه خاص استفاده می کنید.مانند Microsoft AntiXSS V4.0 (http://www.microsoft.com/downloads/en/results.aspx?freetext=Anti-XSS&displaylang=en&stype=s_basic) می توانید به راحتی اینکد اختصاصی برای وب سایتتان بنویسید مانند مثال زیر .


برای این کار باید یک کلاس را که از System.Web.Util.HttpEncoder مشتق شود ایجاد نمایید.





public class AntiXssEncoder : HttpEncoder
{
public AntiXssEncoder() { }
protected override void HtmlEncode(string value,
System.IO.TextWriter output)
{
output.Write(AntiXss.HtmlEncode(value));
}

protected override void HtmlAttributeEncode(string value,
System.IO.TextWriter output)
{
output.Write(AntiXss.HtmlAttributeEncode(value));
}
}



سپس در بخش httpRuntime از فایل Web.config مانند مثال زیر تنظیمات آن را انجام دهید.




<httpRuntime encoderType="AntiXssEncoder , AntiXssEncoder " />