برنامه های وب از معماری سرویس گیرنده - سرویس دهنده تبعیت نموده و برروی سرویس دهنده وب مستقر و مسئولیت پاسخگوئی به درخواست های ارسالی توسطسرویس گیرندگان را برعهده خواهند داشت .در سمت سرویس گیرنده ، مرورگر و درسمت سرویس دهنده ، سرویس دهنده وب دارای جایگاهی خاص می باشند . مرورگر ،میزبان برنامه وب بوده و مهمترین وظیفه آن ارائه بخش رابط کاربر یک برنامهوب است . در این راستا ، مرورگر دارای پتانسیل لازم به منظور تفسیر ونمایش تگ های HTML می باشد .در سمت سرویس دهنده ، برنامه های وب با نظارتو مدیریت یک سرویس دهنده وب مثلا" IIS اجراء می گردند . سرویس دهندهوب ، مسئولیت مدیریت برنامه ، پردازش درخواست های ارسالی توسط سرویسگیرندگان و ارائه پاسخ لازم به سرویس گیرندگان را بر عهده دارد .به منظورقانونمند کردن ارسال درخواست سرویس گیرندگان و ارائه پاسخ سرویس دهنده ،می بایست از یک پروتکل ارتباطی خاص استفاده گردد. پروتکل ، مجموعه ای ازقوانین لازم بمنظور تشریح نحوه ارتباط دو و یا چندین آیتم از طریق یک محیطانتقال ( زیر ساخت انتقال داده ) نظیر اینترنت است . در برنامه های وب ( ارسال درخواست توسط سرویس گیرنده و پاسخ به درخواست توسط سرویس دهنده ) ازپروتکل ارتباطی HTTP)Hypertext Transport Protocol) ، استفاده می گردد.
ASP.NET پلات فرم مایکروسافت برای طراحی و پیاده سازی برنامه های وب در دات نت می باشد . پس از درخواست یک صفحه ASP.NET توسط مرورگر سرویس گیرنده ، پردازش های متعددی بر روی سرویس دهنده وب به منظور ارائه پاسخ لازم ، انجام خواهد شد.شاید تاکنون سوالات مختلفی در رابطه با نحوه پردازش صفحات ASP.NET بر روی سرویس دهنده ، برای شما مطرح شده باشد :


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

مرحله اول : ایجاد یک درخواست
HTTP برای یک صفحه ASP.NET توسط مرورگر
پردازش با درخواست یک صفحه ASP.NET که توسط مرورگر ایجاد می شود ، آغاز می گردد .مثلا" یک کاربر ممکن است در بخش آدرس مرورگر کامپیوتر خود آدرس http://www. noorportal.ir را به منظور دریافت این مقاله وارد نماید . مرورگر در ادامه یک درخواست HTTP را از سرویس دهنده وب محل استقرار سایت Srco.ir ایجاد و درخواست فایل حاوی مقاله را می نماید .

مرحله دوم : دریافت درخواست
HTTP ، توسط سرویس دهنده وب

مهمترین وظیفه سرویس دهنده وب ، دریافت درخواست ارسالی HTTP و ارائه منبع درخواست شده درقالب یک پاسخ HTTP است . سرویس دهنده وب ( مثلا " IIS ) ، پس از دریافت درخواست ارسال شده توسط سرویس گیرنده ، تصمیم لازم در رابطه با نحوه برخورد با آن را اتخاذ می نماید. محور تصمیم گیری فوق بر پایه نوع انشعاب فایل درخواستی استوار می باشد. مثلا" در صورتیکه فایل درخواستی دارای انشعاب asp. ، باشد ، IIS درخواست را به سمت asp.dll هدایت تا عملیات مرتبط با آن انجام شود . انشعابات فایل متعددی به موتور ASP.NET ، مپ می گردند . برخی از آنان شامل موارد زیر می باشد :

انشعاب aspx . ، برای صفحات وب ASP.NET
انشعاب
asmx . ، برای سرویس های وب ASP.NET
انشعاب
config . ، برای فایل های پیکربندی ASP.NET
انشعاب
ashx . ، برای هندلرهای سفارشی ASP.NET HTTP
انشعاب
rem . ، برای منابع راه دور
و سایر انشعابات دیگر
پس از دریافت درخواست ارسالی توسط سرویس گیرنده ، سرویس دهنده وب آن را در اختیار مسئول مربوطه قرار خواهد داد . مثلا" در صورتیکه درخواست دریافتی مربوط به یک صفحه ASP کلاسیک باشد ، درخواست در اخـتیار asp.dll گذاشته شده و یا در صورتیکه درخواست در ارتباط با یک صفحه ASP.NET باشد ، درخواست در اختیار موتور ASP.NET قرار داده می شود . همانگونه که اشاره گردید ، معیار اصلی در این تصمیم گیری ، نوع انشعاب فایل درخواست شده توسط سرویس گیرنده می باشد .

مرحله سوم : عملکرد موتور
ASP.NET
پس از درخواست یک صفحه ASP.NET توسط سرویس گیرنده و دریافت آن توسط سرویس دهنده وب ، درخواست دریافتی در اختیار موتور ASP.NET قرار داده می شود . از موتور ASP.NET ، اغلب با نام ASP.NET HTTP pipeline یاد می گردد . علت نامگذاری فوق ، بدین دلیل است که درخواست دریافتی از بین تعداد متغیری از HTTP modules در بین مسیر خود برای رسیدن به یک HTTP handler عبور می نماید . HTTP modules ، کلاس هائی می باشند که امکان دستیابی به درخواست دریافتی را دارا می باشند. این ماژول ها قادر به بازبینی و بررسی درخواست دریافتی و اتخاد تصمیماتی می باشند که مستقیما" بر نحوه گردش داخلی ( روند برخورد با درخواست ) تاثیر خواهد گذاشت . درخواست دریافتی پس از عبور از ماژول های مسخص شده HTTP ، به یک HTTP Handler خواهد رسید . HTTP Handler مسئولیت ایجاد خروجی لازم به منظور ارسال برای مرورگر متقاصی ( ارسال کننده درخواست ) را برعهده دارد .
تعداد زیادی از ماژول های HTTP از قبل ایجاد شده، بصورت پیش فرض در HTTP pipline وجود دارد :

OutputCache ، مسئولیت برگرداندن و Caching خروجی صفحات HTML در صورت نیاز ، برعهده دارد .

Session ، ماژول فوق ، مسئولیت لود Session state را بر اساس درخواست دریافتی کاربر و روش Session که در فایل Web.config مشخص شده است ، برعهده دارد .

FormsAuthentication ، ماژول فوق ، مسئولیت تائید کاربران بر اساس مدل تعریف شده Forms Authentication را در صورت ضرورت برعهده دارد .

و موارد دیگر


به منظورآشنائی با ماژول های پیش فرض، می توان مقادیر نسبت داده شده به عنصر در فایل machine.config را مشاهده نمود. جدول زیر مقدار پیش فرض عنصر را نشان می دهد .

machine.Config: httpModules Section
Path : $WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG

< httpModules >
< add name="OutputCache" type="System.Web.Caching.OutputCacheModule"/ >
< add name="Session" type="System.Web.SessionState.SessionStateModule"/ >
< add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationMod ule"/ >
< add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModul e"/ >
< add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationMo dule"/ >
< add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"/ >
< add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule"/ >
< add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/ >
< / httpModules >

هندلرهای HTTP ، نقطه پایان در ASP.NET HTTP pipeline می باشند . مسئولیت HTTP handler ، تولید خروجی برای منبع درخواست شده است . برای صفحات ASP.NET ، این به معنی Rendering ، کنترل های وب به HTML و برگرداندن HTML می باشد. برای یک سرویس وب ، مسئولیت فوق ، شامل اجرای متد مشخص شده و Wrapping مقایر برگردانده شده به یک پاسخ مناسب و با فرمت SOAP می باشد . منابع متفاوت ASP.NET از هندلرهای متفاوت HTTP استفاده می نمایند.هندلرهای پیش فرص استفاده شده ، توسط بخش
< httpHandlers > فایل machine.config مشخص شده اند. بخش فوق، شامل کلاس هائی است که یا خود HTTP handler بوده و یا HTTP handler factories ، می باشند. یک HTTP handler factory ، صرفا" یک نمونه از یک HTTPhandler را پس از فراخوانی ، برمی گرداند . جدول زیر ، اطلاعات عنصر در فایل machine.config را نشان می دهد .

machine.Config: httpHandlers Section
Path : $WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG

< httpHandlers >
< add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler"/ >
< add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory "/ >

. ...
< add verb="*" path="*.resources" type="System.Web.HttpForbiddenHandler"/ >
< add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler"/ >
< add verb="*" path="*" type="System.Web.HttpMethodNotAllowedHandler"/ >
< /httpHandlers >

لازم است بهاین نکتهاشاره گردد که امکان ایجاد HTTP modules و HTTP handler اختصاصی ، توسط طراحان وپیاده کنندگان برنامه هایوب ASP.NET نیزوجود دارد . پس از ایجاد ماژول ها و هندلرهای HTTP ، می توان آنان رابه pipeline ملحق تا برای تمامی سایت های وب موجود برسرویس دهنده وب ، قابلاستفاده گردند. بدین منظور، میتوان تغییرات لازم را در فایل machine.config اعمال تازمینه استفاده از آنان توسط تمامی برنامه های وبفراهمگردد . در این رابطه می توان تغییرات را در فایل Web.config نیزاعمال نمود، در چنین مواردی امکاناستفاده از ماژول ها و هندلرهای HTTP ایجاد شده ، صرفا" برای یک برنامه وب وجود خواهد داشت .
مرحله چهارم : تولید خروجیآخرین مرحله درارتباط با پردازش یک صفحه ASP.NET بر روی سرویس دهندهوب ، شامل ایجاد خروجیمناسب است . خروجی فوق ، در ادامه از طریق ماژولهای HTTP عبور داده شدهتا مجددا" به IIS برسد . در نهایت IIS ، خروجیتولید شده را برای سرویس گیرندهمتقاصی ارسال می نماید .مراحل لازم بهمنظور تولید خروجیبا توجه به HTTP handler متفاوت بوده و در ادامهصرفا " یک حالت خاص آن را بررسی می نمائیم ( هندلر HTTP که از آن به منظور rendering صفحات ASP.NET استفاده می گردد
).
سرویس دهنده وب (IIS) پس از دریافت درخواستی برای یک صفحه ASP.NET ( انشعاب فایل aspx.) ، آن را در اختیارموتور ASP.NET ، قرار خواهد داد . درخواست دریافتی در ادامه از بین ماژول ها عبور داده شده تا به PageHandlerFactory برسد
دربخش < httpHandlers > فایل machin.config که قبلا " mapping آنانجام شده است .
machine.Config: httpHandlers Section :PageHandlerFactory
Path : $WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG

< httpHandlers >
...
< add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/ >
. ...
< /httpHandlers >
کلاس PageHandlerFactory ،یک HTTP handler factory است که وظیفه آنارائه نمونه ای از یک HTTP handler بوده که قادر به برخورد مناسب بادرخواست ارسالیاست.مهمترین رسالت PageHandlerFactory ، یافتن کلاسترجمهشده ای است که نشاندهنده صفحه ASP.NET درخواستی می باشد