یک چارچوب کاربردی Web است که توسط شرکت مایکروسافت عرضه گردیده تا برنامه نویسان بتوانند برای ساخت سایت های Web و برنامههای Web پویا وسرویس های Web پویا وسرویس های Web XML از آن استفاده کنند. این بخشی از زیر ساخت NET. مایکروسافت و جانشینی برای تکنولوژی صفحات سرویس دهنده فعال (ASP) است. ASP مبتنی بر زبانهای مشترک در حال اجرا است که به برنامه نویسان اجازه میدهد کدهای ASP را با استفاده از هر زبان Framework.NET بنویسند.
1) مشخصات
1-1) قالب پرونده ASPX
ASPX یک پرونده با قالب متنی است که برای ساخت صفحات Web از آن استفاده میشود، و استاندارد پروندههای XML را رعایت میکند. پرونده ASPX معمولا شامل نشانه گزاریهای HTML یا XHTML همچنین نشانه گزاریهای کنترل های استاندارد Web و کنترل های تعریف شده در معماری ASP.NET است، که توسعه دهنده ها(برنامه نویسان وب) همه محتویات پویا وایستای مورد نیاز را برای ایجاد صفحات Web پویا در آن قرار میدهند. علاوه برآن، کدهای پویایی که درسرویس دهندها جرا میشوند، میتوانند درمحلی دریک صفحه درون یک قطعه قرار بگیرند --%> کد های پویا <%- که مانند دیگرتکنولوژی های توسعه یافته مانند PHP, JSP و ASP است اما این شیوه معمولاً توسط مایکروسافت رد میشود مگر به منظور الحاق داده ، زیرا زمانیکه صفحه ترجمه میگردد درخواست های بیشتری وجود دارد. روشی که توسط مایکروسافت برای رفتاربا کد برنامه پویا پیشنهاد میشود، مدل پشتیبانی کد است که این کد را دریک پرونده جداگانه یا ضمیمه متنی به طور ویژه طراحی شده قرارمی دهد. پروندههای پشتیبان کد معمولاً چیزهایی را به مفهوم MyPage.aspx.cs یا MyPage.aspx.vb برپایه نام پرونده ASPX نام می نهد . (این عمل درمایکروسافت ویژوال استادیو و سایر محیط های توسعه یکپارچه به صورت خودکارانجام میشود.) زمانیکه ازاین روش برنامه نویسی استفاده می کنید ، توسعه دهنده کدها را برای پاسخ دادن به رویدادهای مختلف مانند صفحهای که بارگذاری میشود، یا کنترلی که برروی آن کلیک میشود به جای رویهای که درطول برنامه حرکت میکند، مینویسد.
2) روش فنی ترجمه
ASP ازیک روش نمایش مرکب ترجمهای استفاده میکند. درطول تألیف الگوی(.aspx) پرونده درون قالب کد تدوین میشود که یک درخت کنترل (مرکب) ساخته خواهد شد که قالب (ایستا)اصلی را نشان میدهد. متن اصلی درون نمونههایی ازکلاس کنترل اصلی میرود . کنترل های سرویس دهنده توسط نمونههایی ازیک کلاس کنترل ویژه نشان داده میشوند. کد آغازین با کد نوشتاری کاربر(معمولاً توسط مجمعی ازکلاس های جزئی چندگانه) و نتایج دریک ویژگی کلاس برای صفحه ترکیب شده است . صفحه مانند ریشه درخت کنترل مضاعف میشود.
درخواست های واقعی برای یک صفحه درمیان مرحلهای ازمراحل پردازش میشود. ابتدا، درطول مراحل بارگزاری نمونهای ازکلاس صفحه ساخته میشود وکد بارگزاری اجرا میگردد. این حاصل درخت کنترل اصلی است که درحال حاضرمعمولاً توسط روش هایی ازمراحل پیگیری در صفحه اداره میشود. همانند هرگره دردرخت، یک کنترل نشان داده شده است، مانند نمونهای ازیک کلاس که میتواند ساختاردرخت را به خوبی با دستکاری خصوصیات/روش های گرههای منحصربه فرد تغییرمی دهد. نهایتاً درطول مرحله ترجمه یک دیدارگربرای دیدن هرگره درخت استفاده شده است . هرگره برای ترجمه خود با استفاده از روش هایی ازناظردرخواست میکند. کد HTML منتج برای سرویس گیرنده (Client) فرستاده میشود.
پس ازپردازش درخواست نمونهٔ کلاس صفحه دورانداخته میشود وبا آن درخت کنترل تکمیل میشود.
پروندههای دیگر
سایر پروندههای الحاقی با نسخههای متفاوت ASP شامل : ascx; کنترل ها کاربر WEB : کنترل های معمول که درون صفحات WEB جای داده میشوند.
ashx
دیگر مجریان HTTP
asmx
صفحات سرویس دهنده WEB
axd
زمانیکه در web.config، درخواست trace.axd فعال میشود، خروجی های سطح کاربردی ترسیم میشوند. همچنین برای رسیدگی کننده axd منبع WEB مخصوص استفاده میشود که به توسعه دهندههای مؤلفه/ کنترل اجازه میدهد تا بسته یک کنترل / مؤلفه را با عکس ها، سند، قالب آبشاری صفحات وغیره کامل کند. برای گسترش دریک پرونده انفرادی (یک مجمع)
مرورگر
مرورگر پروندههای ممکن را درقالب XML ذخیره میکند که درنسخه 3 از ASP.NET 2 که شامل بسیاری ازاینها یه صورت پیش فرض است، معرفی میگردد تا مرورگرهای WEB مشترک را پشتیبانی کند. این ها مشحص میکنند که مرورگرها کدام توانایی ها را دارند، بنابراین ASP.NET 2 میتواند به صورت خودکاربرطبق نتیجه خروجی خود سفارشی و بهینه سازی شود. پروندههای مرورگرمخصوص برای دریافت (دانلود) رایگان برای استفاده دردسترس هستند. برای مثال ، W3C Validator ، بطوریکه این به شکل صحیح استانداردهای تاییدی را نمایش میدهد .
config
اweb.config تنها پرونده مخصوص برنامههای WEB است که توسط قرارداد گسترش دهنده استفاده میگردد (به همین نحو machine.config درتمامی سرویس دهنده WEB وتمامی برنامههای درون آن اثرمی گذارد). اگر چه ASP.NET امکانات را برای ساخت واستفاده سایرپروندههای config فراهم میکند . این ها درقالب XML ذخیره میشوند بنابراین اجازه میدهند پیکربندی تغییرکند تا به سادگی ساخته شود.
cs/vb
درASP.NET 2 هرپرونده ازپروندههای cs/vb درون پوشه App_Code قرارمی گیرد که به صورت پویا تألیف میگردد و در سرتاسر برنامه قابل دسترس است. master : صفحات اصلی ; مطرح شده درنسخه 2.0
sitemap
پروندههای پیکربندی نقشه سایت
skin
پروندههای پوستهٔ زمینه
resx
پروندههای منبع برای بین المللی ومحلی کردن. پروندههای منبع میتوانند سراسری (به طور مثال پیام ها) یا محلی باشند که هریک معنی های خاصی برای یک aspx یا ascx یا پرونده دارند.
dbml
(نسخه 3.5) LINQ برای پرونده کلاس های داده SQL
ساختارفهرست راهنما
به طورکلی ساختار فهرست ASP.NET میتواند توسط الویت های توسعه دهنده تعیین شود . صرف نظرازتعداد محدودی از نام های ذخیره شده ، سایت میتواند هر تعداد از پوشهها را پشتیبانی کند . ساختار معمولاً انعکاس مستقیمی ازurl ها است. هرچند ASP.NET قابلیت ها را برای جداسازی درخواست در هرمرحله از طول پردازش فراهم میکند ، توسعه دهنده مجبورنیست درخواست ها را درسرتاسر یک برنامه مرکزی یا کنترل گر پیشین تبدیل کند .نام های پوشههای ویژه :
App_Browsers
پروندههای معرفی مرورگر مخصوص سایت را نگه میدارد.
App_Code
پوشه "کدهای خام" است. سرویس دهنده ASP.NET به صورت خودکارپرونده ها(وزیرفهرست ها)ی درون این پوشه را درون انجمنی که درهرصفحه از سایت قابل دسترسی است، تألیف میکند. App_Code معمولاً برای کد انتزاعی دستیابی داده، کد نمونه وکد تجاری استفاده خواهد شد. همچنین همه مشحصات سایت اجرا کننده http و بخش های جدا و پیاده سازی سرویس وب در این پوشه میروند . مانند دیگران ، توسعه دهنده میتواند برای فراهم سازی استفاده از App_Code یک مجمع جدا را با کدهای از پیش تالیف شده انتخاب کند.
App_Data
پوشه پیش فرض برای پایگاههای داده ازقبیل پروندههای .mdb در access وپروندههای .mdb درsql server. این پوشه معمولاً تنها قابلیت ویرایش توسط یک برنامه را دارد.
App_LocalResources
شامل پروندههای منبع متمرکز برای صفحات منحصر به فرد سایت . به طور مثال پروندهای که CheckOut.aspx.fr-FR.resx نامیده میشود ، منابع متمرکزرا برای نسخه فرانسوی صفحات CheckOut.aspx نگه میدارد. زمانیکه فرهنگ رابط کاربر برای فرانسه تنظیم میشود، ASP.NET به طورخودکاراین پرونده را برای این شرایط یافته و مورد استفاده قرارخواهد داد.
App_GlobalResources
پروندههای resx را با منبع محلی"متمرکز" قابل دسترس برای هرصفحه سایت نگه میدارد. این جایی است که توسعه دهنده ASP.NET نوعاً پیام های متمرکز را که برای بیش ازیک صفحه مورد استفاده قرارمی گیرد، ذخیره میکند.
App_Themes
زمینههای متنوع "دیگر" سایت را نگه میدارد.
App_WebReferences
پروندههای اکتشافی و پروندههای WSDL را برای ارجاع به سرویس وب که درسایت مورد استفاده قرارمی گیرند، نگه میکند.
کارایی
اهداف ASP ایجاد کارایی بر روی سایرفناوری های مبتنی بر متن (شامل ASP قدیمی) توسط تالیف کد سمت سرویس دهنده به یک یا بیشتر، از پروندههای DLL روی سرویس دهنده WEB است . این تآلیف به صورت خودکاراولین باری که یک صفحه درخواست میشود اتفاق می افتد . (که سبب میشود توسعه دهنده احتیاجی به انجام یک مرحله تألیف جداگانه برای صفحات نداشته باشد.) این ویژگی، سهولت توسعه ارائه توسط زبان های متنی را با نشان دادن کارایی برای تألیف دودویی فراهم میکند . به هرحال، تألیف میتواند سبب یک تأخیرقابل ملاحظه برای کاربر WEB زمانیکه صفحه جدیداً ویرایش "نشر" شده را برای اولین باردرخواست میشود ، شود.
ASPX وسایرپروندههای منبع دریک میزبان مجازی برروی یکی از سرویس های اطلاعاتی اینترنت جای دارد (یا سایرسرویس دهندههای سازگار; درزیرسایرپیاده سازی ها را ببینید.) اولین باری که یک سرویس گیرنده صفحهای را درخواست میکند، چارچوب کاری .NET پرونده(ها) را درون یک انجمن .NET تجزیه وتألیف کرده و پاسخ را ارسال میکند. درخواست های بعدی توسط پروندههای DLL انجام میشوند. به صورت پیش فرض به محض اولین درخواست ASP.NET سایت را بدون ایراد دردستهای متشکل از1000 پرونده تألیف خواهدکرد. اگر به دلیل بروز مشکلی تالیف به طول انجامد ، که در این حالت اندازه دسته یا راهبرد تالیف پیچیده بوده.
همچنین توسعه دهندهها میتوانند تألیف مقدماتی خودشان را قبل ازگسترش انتخاب کنند ، که به منظور رفع احتیاج برای تألیف به موقع دریک محیط تولید میباشد .
گسترش
مایکروسافت بعضی ازچارچوب های کاری الحاقی متصل شده درون ASP.NET را منتشرمی سازد وقابلیت تابعی آن را توسعه میدهد. بعضی ازآنها :
ASP.NET AJAX
گسترش با مؤلفههای ضلع سرویس گیرنده همچنین ضلع سرویس دهنده برای نوشتن صفحات ASP.NET که قابلیت AJAX را متصل میکند.
ASP.NET MVC Framework
گسترش تألیف صفحات ASP.NET با استفاده ازمعماری MAV.
مقایسه ASP.NET با ASP قدیمی
ASP تلاش میکند تحول توسعه دهندهها را ازتوسعه کاربرد ویندوز تا توسعه WEB توسط ارائه قابلیت ساخت صفحات مرکب از کنترل ها همانند یک رابط کاربری ویندوزساده نماید. یک کنترل WEB ازقبیل یک Button یا یک Label دربسیاری ازسبک ها همانند همتای ویندوزخودش عمل میکند. کد میتواند خصوصیات وپاسخ خود را به رویدادهایش ارجاع دهد. کنترل ها معلومات"فوت و فن" ترجمه خود را دارند: درحالی که کنترل های ویندوزخودشان را برروی پرده ترسیم میکنند، کنترل های WEB قطعاتی از HTML و JAVASCRIPT را تولید میکنند که بخشی ازفرم صفحه حاصل را به مرورگرکاربرنهایی می فرستد.
ASP.NET برنامه نویس را به توسعه کاربردها با استفاده ازنمونه رابط کاربرگرافیکی رویدادی (مدل event-driven GUI) وسریعترازمحیط های سندی مرسوم در WEB مانند ASP و PHP تشویق میکند. چارچوب کاری تلاش میکند فناوری های موجود از قبیل JAVASCRIPT را با مؤلفههای درونی همانند حالت دید برای به دست آوردن حالت پایدار"درخواست درونی" درمحیط WEB نا متمرکز اصلی ترکیب کند. سایر تفاوت های مقایسهای ASP قدیمی هستند:
سایر تفاوت های مقایسهای ASP قدیمی هستند:
کد تألیف شده سبب اجرای سریع تر برنامههایی همراه با به دام انداختن خطاهای زمان طراحی بیشتر درحین توسعه میشود .
عمدتاً با استفاده از مستثنی کردن بهوسیلهٔ قالب Try-Catch مدیریت خطاهای زمان اجرا را بهبود می بخشد .
شباهت به کاربردهای ویندوزی ازقبیل کنترل ها ورویدادها ، که سبب ایجاد امکان توسعه رابط های کاربردی توانمند میشود که سابقاً تنها درمیزکاریافت میشد .
مجموعه وسیعی ازکنترل ها و کابخانههای کلاس اجازهٔ ساخت سریعتر برنامههای را میدهد ، بعلاوه کنترل های تعریف شده توسط کاربر همچون منوها ، اجازه میدهد که معمولاً از قالب ها استفاده شود . طراحی این کنترل ها روی صفحه آسانتراست زیرا اغلب آنها میتوانند دربیشترویرایشگرها به صورت بصری عمل کنند.
ASP.NET دارای قابلیت استفاده هم زمان از چند زبان شناسایی شده در VB.NETمی باشد که اجازه میدهد تا صفحات WEB نوشته شوند با VB.NET و C# و J# و غیره.
توانایی Cache شدن تمام صفحه یا فقط بخشی ازآن برای بهبود نمایش.
توانایی استفاده ازمدل کد پشتیبان برای جداسازی منطق کار از ارائه.
اگرهرکاربرASP.NET درحافظه نفوذ کند، مجری ASP.NET میزبان دامنهٔ برنامهٔ دارای خطا را از بین میبرد و برنامه را مجدداً راه اندازی میکند.
حالت جلسه در ASP.NET میتواند دریک پایگاه داده SQL Server یا دریک پردازش جداگانه در حال اجرا برروی دستگاه ساده مانند سرویس دهنده WEB یا یک ماشین متفاوت ذخیره میشود. زمانیکه سرویس دهندهWEB مجدداً راه اندازی میشود یا پردازش کننده ASP.NET بازیافت میشود ، مقادیر راههای جلسه از بین نمیرود.
نسخههای قبلی ASP.NET (1.0 and 1.1) به دلیل مغایرت با استاندارد های تاییدی مورد انتقاد بودند . HTML و JavaScript های تولید شده به مرورگرسرویس گیرنده فرستاده میشدند که همیشه در برابر استاندارد های W3C/ECMA تایید شده نبودند . بعلاوه گاهی اوقات چارچوب کاری مرورگر خصایص را نا درست تشخیص میدهد و یا مرورگر های WEB ، به غیر از IE ساخته شده توسط مایکروسافت مانند نسخههای قبلی ، HTML/JAVASCRIPT بازگردانی شده به این سرویس گیرندهها را با بعضی از خصایص از بین رفته و یا بعضی اوقات شکسته و یا ناقص شناسایی میکنند.
کنترل های سرویس دهندهWEB: این ها کنترل های معرفی شده توسط ASP.net برای فراهم سازی رابط کاربری برای وب فرم هستند. این کنترل ها ، کنترل ها ی مدیریت شده هستند و کنترل های WYSIWYG هستند. (چیزی که می بینید چیزی است که به دست آورده اید."نمایش اطلاعات درحالت چاپ شدنی")
معایب ASP
صفحات سرویس دهنده فعال قدیمی (ASP) و ASP.NET میتوانند درکنار یکدیگر در یک برنامه WEB اجرا شوند. این رویکرد به توسعه دهنده اجازه میدهد برنامهها را به آهستگی جا به جا کند بجای آنکه همه آنها را یک باره تغییرحالت دهد . در IIS 6.0 وقبل ازآن، صفحاتی که با نسخههای متفاوتی ازچارچوب کاری ASP نوشته میشوند نمیتوانستند حالت جلسه را بدون استفاده ازکتابخانههای مشخص ثابت تقسیم کند . این ایراد در ASP.NET وجود ندارد و برنامههای ASP درکنار یکدیگر بر روی IIS 7 اجرا میشود . در IIS 7 ، نمونهها میتوانند درخطوط مجتمع اجرا شوند که اجازه میدهد تا نمونهها درهرزبانی نوشته شود ، تا برای هر درخواستی قابل نمایش گردد.
دربرخی موارد در زمان اجرای ASP.NET پردازش عامل در حلقه می افتد . (به طور مثال اگرآن بدون توجه "بی احتیاط" بیاید یا اگرهرکاربرد خارج از کنترل اجرا شود ،سبب میشود که پردازش عامل بیش از 60 درصد از رم موجود را استفاده کند ) آن همچنین میتواند در شرایطی که تعداد معینی ازدرخواست ها ارسال میشود ، اتفاق بیافتد ، برای مثال در یک سیکل زمانی . دراین حالات اگربرنامه برای استفاده از جلسه داخلی تنظیم شده باشد ، ممکن است کاربران حالت جلسه را ازدست بدهند "گم کنند" . اگربرنامه به حالت جلسه برای ذخیره کردن اطلاعات اعتبار سنجی وابسته باشد ، و برنامه با استفاده ازجلسات درون پردازشی پیکربندی شود ، ممکن است در صورتی که پردازش درحلقه بیافتد ، ارتباط کاربر قطع شود .نشانههایی که ASP.NET 2.0 تولید میکند توسط W3C تایید شده اند .اما این نکته حائز اهمبت است که ایا این افزایش قابل دسترسی است ؟ یکی از این مزایا از یک لحاظ صفحات XHTML + نمایش CSS است . کنترل های متعدد از قبیل کنترل های ورود و کنترل های چند مرحلهای ، به صورت پیش فرض از جداول HTML استفاده میکنند . Microsoft هم اکنون به سمت طرقی میرود که این مشکل را به وسیله انتشار کنترل های سازگار کنندهٔ ASP.NET 2.0 CSS حل کند . به طور مثال افزودنی های رایگان که نشانههایی مطابق با XHTML+CSS در دسترس تولید میکنند . به هر حال برخی از کنترل ها هنوز به JAVASCRIPT استناد میکنند .
ابزارهای توسعه
برخی ازبستههای نرم افزاری دردسترس که برای توسعه کاربردهای ASP.NET وجود دارند:
Microsoft Expression Web بخشی ازمجموعه کاربردی Microsoft Expression Studio
Visual Studio .NET برای (for ASP.NET 1.x)
ASP.NET Web Matrix (برای ASP.NET 1.x ; اکنون کمتر پشتیبانی میشود: جایگزین شده توسط Visual Web Developer 2005 Express Edition مستقل)
Visual Web Developer 2005 Express Edition یا Visual Studio 2005 (برای ASP.NET 2.0 )
Visual Studio 2008 (برای ASP.NET 3.5 )
Macromedia HomeSite 5.5 (برای برچسب های ASP )
Microsoft SharePoint Designer 12
Delphi 2006
MonoDevelop (مستقل"رایگان" /کد باز)
SharpDevelop (مستقل"رایگان" /کد باز)
چارچوب کاری ها
زمانی که عملیات توسعه توسط ASP.NET انجام میشود ، لزومی به استفاده از آن برای مدل توسعه فرم های استاندارد وب نیست . چارچوب کاری های قابل ملاحظهای که برای انواع طراحی شده اند شامل:
» Castle Monorail ، یک چاچوب کاری MVC کد باز با یک مدل اجرایی شبیه به Ruby on Rails. چارچوب کاری معمولاً به همراه Castle Active Record استفاده میشود که یک لایه ORM ساخته شده در NHibernate میباشد.
» Spring.NET ، بخشی ازچارچوب کاری ارتجاعی برای JAVA