PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : Asp.net نحوه پردازش صفحات بر روي سرويس دهنده وب



engeneer_19
6th March 2010, 09:53 AM
برنامه های وب از معماری سرویس گیرنده - سرویس دهنده تبعیت نموده و برروی سرویس دهنده وب مستقر و مسئولیت پاسخگوئی به درخواست های ارسالی توسطسرویس گیرندگان را برعهده خواهند داشت .در سمت سرویس گیرنده ، مرورگر و درسمت سرویس دهنده ، سرویس دهنده وب دارای جایگاهی خاص می باشند . مرورگر ،میزبان برنامه وب بوده و مهمترین وظیفه آن ارائه بخش رابط کاربر یک برنامهوب است . در این راستا ، مرورگر دارای پتانسیل لازم به منظور تفسیر ونمایش تگ های 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.WindowsAuthenticationModule"/ >
< add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"/ >
< add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationModule"/ >
< 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 ، صرفا" یک نمونه از یک HTTP handler را پس از فراخوانی ، برمی گرداند . جدول زیر ، اطلاعات عنصر در فایل 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 درخواستی می باشد

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد