|
کاربری
سلام مهمان IP: 38.107.179.221
|
|
|
نحوه پردازش صفحات ASP.NET بر روی سرويس دهنده وب  16/08/2008 02:27  http://www.4guysfromrolla.com |
|
نحوه پردازش صفحات ASP.NET بر روی سرويس دهنده وب
برنامه های وب از معماری سرويس گيرنده - سرويس دهنده تبعيت نموده و بر روی سرويس دهنده وب مستقر و مسئوليت پاسخگوئی به درخواست های ارسالی توسط سرويس گيرندگان را برعهده خواهند داشت .در سمت سرويس گيرنده ، مرورگر و در سمت سرويس دهنده ، سرويس دهنده وب دارای جايگاهی خاص می باشند . نحوه پردازش صفحات ASP.NET بر روی سرويس دهنده وب
برنامه های وب از معماری سرويس گيرنده - سرويس دهنده تبعيت نموده و بر روی سرويس دهنده وب مستقر و مسئوليت پاسخگوئی به درخواست های ارسالی توسط سرويس گيرندگان را برعهده خواهند داشت .در سمت سرويس گيرنده ، مرورگر و در سمت سرويس دهنده ، سرويس دهنده وب دارای جايگاهی خاص می باشند . مرورگر ، ميزبان برنامه وب بوده و مهمترين وظيفه آن ارائه بخش رابط کاربر يک برنامه وب است . در اين راستا ، مرورگر دارای پتانسيل لازم به منظور تفسير و نمايش تگ های HTML می باشد .در سمت سرويس دهنده ، برنامه های وب با نظارت و مديريت يک سرويس دهنده وب ( مثلا" IIS ) اجراء می گردند . سرويس دهنده وب ، مسئوليت مديريت برنامه ، پردازش درخواست های ارسالی توسط سرويس گيرندگان و ارائه پاسخ لازم به سرويس گيرندگان را بر عهده دارد .به منظور قانونمند کردن ارسال درخواست سرويس گيرندگان و ارائه پاسخ سرويس دهنده ، می بايست از يک پروتکل ارتباطی خاص استفاده گردد. پروتکل ، مجموعه ای از قوانين لازم بمنظور تشريح نحوه ارتباط دو و يا چندين آيتم از طريق يک محيط انتقال ( زير ساخت انتقال داده ) نظير اينترنت است . در برنامه های وب ( ارسال درخواست توسط سرويس گيرنده و پاسخ به درخواست توسط سرويس دهنده ) از پروتکل ارتباطی HTTP)Hypertext Transport Protocol) ، استفاده می گردد.
ASP.NET پلات فرم مايکروسافت برای طراحی و پياده سازی برنامه های وب در دات نت می باشد . پس از درخواست يک صفحه ASP.NET توسط مرورگر سرويس گيرنده ، پردازش های متعددی بر روی سرويس دهنده وب به منظور ارائه پاسخ لازم ، انجام خواهد شد.شايد تاکنون سوالات مختلفی در رابطه با نحوه پردازش صفحات ASP.NET بر روی سرويس دهنده ، برای شما مطرح شده باشد :
* پس از درخواست يک صفحه ASP.NET ، بر روی سرويس دهنده وب چه اتفاقی می افتد ؟
* نحوه برخورد سرويس دهنده وب با درخواست ارسالی توسط سرويس گيرنده چگونه است ؟
* تگ های HTML چگونه توليد و برای مرورگر ارسال می گردد؟
* و شايد سوالات ديگر!
در اين مقاله قصد داريم با نحوه پردازش صفحات ASP.NET بر روی سرويس دهنده بيشتر آشنا شويم . بديهی است تشريح تمامی مراحل با ذکر جزئيات از حوصله يک مقاله خارج بوده و هدف آشنائی با کليات موضوع با يک روند مشخص و سيستماتيک است .
مرحله اول : ايجاد يک درخواست HTTP برای يک صفحه ASP.NET توسط مرورگر
پردازش با درخواست يک صفحه ASP.NET که توسط مرورگر ايجاد می شود ، آغاز می گردد .مثلا" يک کاربر ممکن است در بخش آدرس مرورگر کامپيوتر خود آدرس www.taymaz.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 مسئوليت ايجاد خروجی لازم به منظور ارسال برای مرورگر متقاصی ( ارسال کننده درخواست ) را برعهده دارد. شکل زير ، pipline يک درخواست ASP.NET را نشان می دهد .
تعداد زيادی از ماژول های 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
هندلرهای HTTP ، نقطه پايان در ASP.NET HTTP pipeline می باشند . مسئوليت HTTP handler ، توليد خروجی برای منبع درخواست شده است . برای صفحات ASP.NET ، اين به معنی Rendering ، کنترل های وب به HTML و برگرداندن HTML می باشد. برای يک سرويس وب ، مسئوليت فوق ، شامل اجرای متد مشخص شده و Wrapping مقاير برگردانده شده به يک پاسخ مناسب و با فرمت SOAP می باشد . منابع متفاوت ASP.NET از هندلرهای متفاوت HTTP استفاده می نمايند.هندلرهای پيش فرص استفاده شده ، توسط بخش فايل machine.config مشخص شده اند. بخش فوق، شامل کلاس هائی است که يا خود HTTP handler بوده و يا HTTP handler factories ، می باشند. يک HTTP handler factory ، صرفا" يک نمونه از يک HTTP handler را پس از فراخوانی ، برمی گرداند . جدول زير ، اطلاعات عنصر در فايل machine.config را نشان می دهد .
machine.Config: httpHandlers Section
Path : $WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG
. ...
لازم است به اين نکته اشاره گردد که امکان ايجاد 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 برسد ( در بخش فايل machin.config که قبلا" mapping آن انجام شده است ) .
machine.Config: httpHandlers Section :PageHandlerFactory
Path : $WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG
...
. ...
کلاس PageHandlerFactory ، يک HTTP handler factory است که وظيفه آن ارائه نمونه ای از يک HTTP handlerبوده که قادر به برخورد مناسب با درخواست ارسالی است.مهمترين رسالت PageHandlerFactory ، يافتن کلاس ترجمه شده ای است که نشاندهنده صفحه ASP.NET درخواستی می باشد. در صورتيکه از ويژوال استوديو دات نت به منظور ايجاد صفحات ASP.NET استفاده می گردد ، صفحات وب از دو فايل جداگانه ( يک فايل با انشعاب aspx . ، شامل صرفا" کنترل های وب و تگ های HTML و يک فايل aspx.vb و يا aspx.cs شامل کلاس code-behind ( کد سمت سرويس دهنده ) ) ، تشکيل می گردند. در صورتيکه از ويژوال استوديو دات نت استفاده نمی گردد ، می توان از يک بلاک سمت سرويس دهنده | |
|