مقدمه ای بر asp.net این مقدمه شامل تعاریف اولیه است . که در سایت ماکروسافت به انتشار رسیده است.
ASP.NET
یک چارچوب کاربردی Web است که توسط شرکت مایکروسافت عرضه گردیده تا برنامه نویسان بتوانند برای ساخت سایتهای Web و برنامههای Web پویا وسرویسهای Web پویا وسرویسهای Web XML از آن استفاده کنند. این بخشی از زیر ساخت.NET مایکروسافت و جانشینی برای تکنولوژی صفحات سرویس دهنده فعال (ASP) است. ASP مبتنی بر زبانهای مشترک در حال اجرا است که به برنامه نویسان اجازه میدهد کدهای ASP را با استفاده از هر زبان Framework.NET بنویسند.
مشخصات
قالب پرونده ASPX
ASPX یک پرونده با قالب متنی است که برای ساخت صفحات وب (ابهامزدایی) از آن استفاده میشود، و استاندارد پروندههای XML را رعایت میکند. پرونده ASPX معمولاً شامل نشانه گزاریهای HTML یا اکساچتیامال همچنین نشانه گزاریهای کنترلهای استاندارد Web و کنترلهای تعریف شده در معماری ASP.NET است، که توسعه دهنده ها(برنامه نویسان وب) همه محتویات پویا وایستای مورد نیاز را برای ایجاد صفحات Web پویا در آن قرار میدهند. علاوه برآن، کدهای پویایی که درسرویس دهندها اجرا میشوند، میتوانند درمحلی دریک صفحه درون یک قطعه قرار بگیرند --٪> کدهای پویا <٪- که مانند دیگرتکنولوژیهای توسعه یافته مانند PHP, JSP و ASP است اما این شیوه معمولاً توسط مایکروسافت رد میشود مگر به منظور الحاق داده، زیرا زمانیکه صفحه ترجمه میگردد درخواستهای بیشتری وجود دارد.
روشی که توسط مایکروسافت برای رفتاربا کد برنامه پویا پیشنهاد میشود، مدل پشتیبانی کد است که این کد را دریک پرونده جداگانه یا ضمیمه متنی به طور ویژه طراحی شده قرارمی دهد. پروندههای پشتیبان کد معمولاً چیزهایی را به مفهوم MyPage.aspx.cs یا MyPage.aspx.vb برپایه نام پرونده ASPX نام مینهد. (این عمل درمایکروسافت ویژوال استادیو و سایر محیطهای توسعه یکپارچه به صورت خودکارانجام میشود.) زمانیکه ازاین روش برنامه نویسی استفاده میکنید، توسعه دهنده کدها را برای پاسخ دادن به رویدادهای مختلف مانند صفحهای که بارگذاری میشود، یا کنترلی که برروی آن کلیک میشود به جای رویهای که درطول برنامه حرکت میکند، مینویسد.
روش فنی ترجمه
ASP ازیک روش نمایش مرکب ترجمهای استفاده میکند. درطول تألیف الگوی(.aspx) پرونده درون قالب کد تدوین میشود که یک درخت کنترل (مرکب) ساخته خواهد شد که قالب (ایستا)اصلی را نشان میدهد. متن اصلی درون نمونههایی ازکلاس کنترل اصلی میرود. کنترلهای سرویس دهنده توسط نمونههایی ازیک کلاس کنترل ویژه نشان داده میشوند. کد آغازین با کد نوشتاری کاربر(معمولاً توسط مجمعی ازکلاسهای جزئی چندگانه) و نتایج دریک ویژگی کلاس برای صفحه ترکیب شدهاست. صفحه مانند ریشه درخت کنترل مضاعف میشود.
درخواستهای واقعی برای یک صفحه درمیان مرحلهای ازمراحل پردازش میشود. ابتدا، درطول مراحل بارگذاری نمونهای ازکلاس صفحه ساخته میشود وکد بارگذاری اجرا میگردد. این حاصل درخت کنترل اصلی است که درحال حاضرمعمولاً توسط روشهایی ازمراحل پیگیری در صفحه اداره میشود. همانند هرگره دردرخت، یک کنترل نشان داده شدهاست، مانند نمونهای ازیک کلاس که میتواند ساختاردرخت را به خوبی با دستکاری خصوصیات/روشهای گرههای منحصربهفرد تغییرمی دهد. نهایتاً درطول مرحله ترجمه یک دیدارگربرای دیدن هرگره درخت استفاده شدهاست. هرگره برای ترجمه خود با استفاده از روشهایی ازناظردرخواست میکند. کد HTML منتج برای سرویس گیرنده (Client) فرستاده میشود.
پس ازپردازش درخواست نمونهٔ کلاس صفحه دورانداخته میشود وبا آن درخت کنترل تکمیل میشود.
زمانیکه درweb.config، درخواست trace.axd فعال میشود، خروجیهای سطح کاربردی ترسیم میشوند. همچنین برای رسیدگی کننده axd منبع WEB مخصوص استفاده میشود که به توسعه دهندههای مؤلفه/ کنترل اجازه میدهد تا بسته یک کنترل/مؤلفه را با عکسها، سند، قالب آبشاری صفحات وغیره کامل کند. برای گسترش دریک پرونده انفرادی (یک مجمع)
مرورگر
مرورگر پروندههای ممکن را درقالب XML ذخیره میکند که درنسخه ۳ از ASP.NET ۲ که شامل بسیاری ازاینها یه صورت پیش فرض است، معرفی میگردد تا مرورگرهای WEB مشترک را پشتیبانی کند. اینها مشحص میکنند که مرورگرها کدام تواناییها را دارند، بنابراین ASP.NET ۲ میتواند به صورت خودکاربرطبق نتیجه خروجی خود سفارشی و بهینه سازی شود. پروندههای مرورگرمخصوص برای دریافت (دانلود) رایگان برای استفاده دردسترس هستند. برای مثال، W3C Validator، بطوریکه این به شکل صحیح استانداردهای تاییدی را نمایش میدهد.
config
اweb.config تنها پرونده مخصوص برنامههای WEB است که توسط قرارداد گسترش دهنده استفاده میگردد (به همین نحو machine.config درتمامی سرویس دهنده WEB وتمامی برنامههای درون آن اثرمی گذارد). اگر چه ASP.NET امکانات را برای ساخت واستفاده سایرپروندههای config فراهم میکند. اینها درقالب XML ذخیره میشوند بنابراین اجازه میدهند پیکربندی تغییرکند تا به سادگی ساخته شود.
cs/vb
درASP.NET ۲ هرپرونده ازپروندههای cs/vb درون پوشه App_Code قرارمی گیرد که به صورت پویا تألیف میگردد و در سرتاسر برنامه قابل دسترس است.
master: صفحات اصلی؛ مطرح شده درنسخه ۲٫۰
ساختارفهرست راهنما
به طورکلی ساختار فهرست 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
پروندههای اکتشافی و پروندههای زبان توصیف خدمات وب را برای ارجاع به سرویس وب که درسایت مورد استفاده قرارمی گیرند، نگه میکند.
کارایی
اهداف ASP ایجاد کارایی بر روی سایرفناوریهای مبتنی بر متن (شامل ASP قدیمی) توسط تالیف کد سمت سرویس دهنده به یک یا بیشتر، از پروندههای DLL روی سرویس دهنده WEB است. این تآلیف به صورت خودکاراولین باری که یک صفحه درخواست میشود اتفاق میافتد. (که سبب میشود توسعه دهنده احتیاجی به انجام یک مرحله تألیف جداگانه برای صفحات نداشته باشد.) این ویژگی، سهولت توسعه ارائه توسط زبانهای متنی را با نشان دادن کارایی برای تألیف دودویی فراهم میکند. به هرحال، تألیف میتواند سبب یک تأخیرقابل ملاحظه برای کاربرWEB زمانیکه صفحه جدیداً ویرایش «نشر» شده را برای اولین باردرخواست میشود، شود.
ASPX وسایرپروندههای منبع دریک میزبان مجازی برروی یکی از سرویسهای اطلاعاتی اینترنت جای دارد (یا سایرسرویس دهندههای سازگار؛ درزیرسایرپیاده سازیها را ببینید.) اولین باری که یک سرویس گیرنده صفحهای را درخواست میکند، چارچوب کاری.NET پرونده(ها) را درون یک انجمن.NET تجزیه وتألیف کرده و پاسخ را ارسال میکند. درخواستهای بعدی توسط پروندههای DLL انجام میشوند. به صورت پیش فرض به محض اولین درخواست ASP.NET سایت را بدون ایراد دردستهای متشکل از۱۰۰۰ پرونده تألیف خواهدکرد. اگر به دلیل بروز مشکلی تالیف به طول انجامد، که در این حالت اندازه دسته یا راهبرد تالیف پیچیده بوده.
همچنین توسعه دهندهها میتوانند تألیف مقدماتی خودشان را قبل ازگسترش انتخاب کنند، که به منظور رفع احتیاج برای تألیف به موقع دریک محیط تولید میباشد.
گسترش
مایکروسافت بعضی ازچارچوبهای کاری الحاقی متصل شده درون ASP.NET را منتشرمی سازد وقابلیت تابعی آن را توسعه میدهد. بعضی ازآنها:
ASP.NET AJAX
گسترش با مؤلفههای ضلع سرویس گیرنده همچنین ضلع سرویس دهنده برای نوشتن صفحات ASP.NET که قابلیت AJAX را متصل میکند.
ایاسپیداتنت امویسی
گسترش تألیف صفحات ASP.NET با استفاده ازمعماری MAV.
مقایسه ASP.NET با ASP قدیمی
ASP تلاش میکند تحول توسعه دهندهها را ازتوسعه کاربرد ویندوز تا توسعه WEB توسط ارائه قابلیت ساخت صفحات مرکب از کنترلها همانند یک رابط کاربری ویندوزساده نماید. یک کنترل WEB ازقبیل یک Button یا یک Label دربسیاری ازسبکها همانند همتای ویندوزخودش عمل میکند. کد میتواند خصوصیات وپاسخ خود را به رویدادهایش ارجاع دهد. کنترلها معلومات«فوت و فن» ترجمه خود را دارند: درحالی که کنترلهای ویندوزخودشان را برروی پرده ترسیم میکنند، کنترلهای WEB قطعاتی ازHTML وجاوااسکریپت را تولید میکنند که بخشی ازفرم صفحه حاصل را به مرورگرکاربرنهایی میفرستد.
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.۰ and ۱٫۱) به دلیل مغایرت با استانداردهای تاییدی مورد انتقاد بودند. HTML و جاوااسکریپتهای تولید شده به مرورگرسرویس گیرنده فرستاده میشدند که همیشه در برابر استانداردهای W3C/ECMA تایید شده نبودند. بعلاوه گاهی اوقات چارچوب کاری مرورگر خصایص را نا درست تشخیص میدهد و یا مرورگرهای WEB، به غیر از IE ساخته شده توسط مایکروسافت مانند نسخههای قبلی، HTML/JAVASCRIPT بازگردانی شده به این سرویس گیرندهها را با بعضی از خصایص از بین رفته و یا بعضی اوقات شکسته و یا ناقص شناسایی میکنند.
کنترلهای سرویس دهندهWEB: اینها کنترلهای معرفی شده توسط ASP.net برای فراهم سازی رابط کاربری برای وب فرم هستند. این کنترلها، کنترلها ی مدیریت شده هستند و کنترلهای WYSIWYG هستند. (چیزی که میبینید چیزی است که به دست آوردهاید.«نمایش اطلاعات درحالت چاپ شدنی»)
معایب ASP
صفحات سرویس دهنده فعال قدیمی (ASP) وASP.NET میتوانند درکنار یکدیگر در یک برنامه WEB اجرا شوند. این رویکرد به توسعه دهنده اجازه میدهد برنامهها را به آهستگی جا به جا کند بجای آنکه همه آنها را یک باره تغییرحالت دهد. درIIS ۶٫۰ وقبل ازآن، صفحاتی که با نسخههای متفاوتی ازچارچوب کاری ASP نوشته میشوند نمیتوانستند حالت جلسه را بدون استفاده ازکتابخانههای مشخص ثابت تقسیم کند. این ایراد درASP.NET وجود ندارد و برنامههای ASP درکنار یکدیگر بر روی IIS ۷ اجرا میشود. در IIS ۷، نمونهها میتوانند درخطوط مجتمع اجرا شوند که اجازه میدهد تا نمونهها درهرزبانی نوشته شود، تا برای هر درخواستی قابل نمایش گردد.[۲]
دربرخی موارد در زمان اجرای ASP.NET پردازش عامل در حلقه میافتد. (به طور مثال اگرآن بدون توجه «بی احتیاط» بیاید یا اگرهرکاربرد خارج از کنترل اجرا شود، سبب میشود که پردازش عامل بیش از ۶۰ درصد از رم موجود را استفاده کند) آن همچنین میتواند در شرایطی که تعداد معینی ازدرخواستها ارسال میشود، اتفاق بیفتد برای مثال در یک سیکل زمانی. دراین حالات اگربرنامه برای استفاده از جلسه داخلی تنظیم شده باشد، ممکن است کاربران حالت جلسه را ازدست بدهند «گم کنند». اگربرنامه به حالت جلسه برای ذخیره کردن اطلاعات اعتبار سنجی وابسته باشد، و برنامه با استفاده ازجلسات درون پردازشی پیکربندی شود، ممکن است در صورتی که پردازش درحلقه بیفتد ارتباط کاربر قطع شود.
نشانههایی که ASP.NET ۲٫۰ تولید میکند توسط W3C تایید شدهاند. اما این نکته حائز اهمبت است که ایا این افزایش قابل دسترسی است؟ یکی از این مزایا از یک لحاظ صفحات اکساچتیامال + نمایش CSS است. کنترلهای متعدد از قبیل کنترلهای ورود و کنترلهای چند مرحلهای، به صورت پیش فرض از جداول HTML استفاده میکنند. مایکروسافت هم اکنون به سمت طرقی میرود که این مشکل را به وسیله انتشار کنترلهای سازگار کنندهٔ ASP.NET 2.۰ CSS حل کند. به طور مثال افزودنیهای رایگان که نشانههایی مطابق با اکساچتیامال+CSS در دسترس تولید میکنند. به هر حال برخی از کنترلها هنوز به جاوااسکریپت استناد میکنند.
ابزارهای توسعه
برخی ازبستههای نرمافزاری دردسترس که برای توسعه کاربردهای 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 ۲۰۰۵ (برای ASP.NET 2.۰)
Visual Studio ۲۰۰۸ (برای ASP.NET 3.۵)
Macromedia HomeSite ۵٫۵ (برای برچسبهای ASP)
Microsoft SharePoint Designer 1۲
Delphi 2006
MonoDevelop (مستقل«رایگان» /کد باز)
SharpDevelop (مستقل«رایگان» /کد باز)
Adobe Dreamweaver
چارچوب کاریها
زمانی که عملیات توسعه توسط ASP.NET انجام میشود، لزومی به استفاده از آن برای مدل توسعه فرمهای استاندارد وب نیست. چارچوب کاریهای قابل ملاحظهای که برای انواع طراحی شدهاند شامل:
Castle Monorail، یک چاچوب کاری MVC کد باز با یک مدل اجرایی شبیه به روبی آن ریلز. چارچوب کاری معمولاً به همراه Castle Active Record استفاده میشود که یک لایه ORM ساخته شده درNHibernate میباشد.
Spring.NET، بخشی ازچارچوب کاری ارتجاعی برای JAVA.