نحوه ترجمه يک صفحه ASP.NET New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 دوشنبه  4  ارديبهشت  1396  2017  Apr.  24   Monday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 ساختار داخلی فرم های وب ( بخش اول )

 مديريت وب

8239

10

3.8

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

ساختار داخلی فرم های وب

ساختار داخلی فرم های وب  ( بخش اول )

فرم های وب مسئوليت ارائه بخش رابط کاربر يک برنامه وب را برعهده داشته و بدون ترديد تحولی شگرف را در طراحی و پياده سازی برنامه های وب ايجاد نموده اند .  تکنولوژی ASP.NET  ، گزينه ای مناسب برای طراحی و پياده سازی برنامه های مبتنی بر وب است . يکی از مهمترين تغييرات ASP.NET نسبت به ASP کلاسيک،امکان ترجمه صفحات است .صفحات ASP.NET بصورت پويا و با توجه به درخواست مربوطه ترجمه می گردند ( اولين مرتبه ای که در بافتار يک برنامه وب مستقر گردند ) . ترجمه پويا ، صرفا" به  ASP.NET محدود نشده ( فايل های با انشعاب aspx . ) و سرويس های وب ( فايل های با انشعاب asmx . ) ، کنترل های کاربر ( فايل های با انشعاب ascx . ) و HTTP handlers ( فايل های با انشعاب ashx . ) و برنامه های ASP.NET نظير فايل goobal.asax  ، را نيز شامل می شود.
شايد تاکنون اين سوال را از خود پرسيده ايد که مفهوم  ترجمه در رابطه با يک صفحه ASP.NET چيست ؟ چگونه ASP.NET runtime  ، کدهای موجود در يک فايل aspx . را به کلاس های سازگار فريمورک دات نت تبديل می نمايد ؟ چگونه فايل های اسمبلی زمانيکه فايل مرتبط با آنها بهنگام می گردد ،  بصورت پويا ايجاد می گردند ؟ و نهايتا" چه اتفاقی خواهد افتاد زمانيکه يک اسمبلی ترجمه شده با يک URL مربوط به صفحه aspx . ، مرتبط شده باشد ؟  در مجموعه مقالاتی که در اين خصوص ارائه خواهد شد به بررسی مفاهيم مربوطه  در اين رابطه پرداخته و با ساختار فرم های وب با نگرشی عميق و سيستماتيک ، آشنا خواهيم شد .

اجراء صفحات ASP.NET
عبارت " صفحه ترجمه شده "  به  همان اندازه که صريح و روشن است  به همان ميزان وشايد بمراتب بيشتر می تواند مبهم و گنگ  باشد. عبارت فوق ، صريح و روشن است چراکه  نوع عملياتی را که پس از درخواست يک صفحه aspx . ، انجام خواهد شد ، مشخص می نمايد. عبارت "صفحه ترجمه شده " ، بدليل عدم مشخص نمودن  ماژول فعال در فرآيند ترجمه ، نحوه کنترل رفتار مترجم و عدم مشخص نمودن پارامترهای موردنياز کمپايلر ، دارای مفهمومی گنگ و مبهم است .در اين مقاله به فرآيندهای مرتبط به ترجمه پويای صفحات ASP.NET پرداخته خواهد شد. بدين منظور بر روی عملياتی که بر روی سرويس دهنده وب انجام خواهد شد ، متمرکز می گرديم و مشاهده خواهيم کرد که هر ماژول در مواجه با درخواست يک صفحه aspx . ، پذيرای چه مسئوليتی است .
 در مقالاتی که در اين خصوص ارائه خواهد شد ، رفتار ASP.NET با توجه به نسخه های 1.0 , 1.1 بررسی خواهد شد . ( IIS 5.0 بعنوان سرويس دهنده وب) . در صورت استفاده از سرويس دهنده IIS 6.0 بهمراه  ويندوز 2003 سرويس دهنده، ما شاهد برخی تفاوت ها در ماهيت ونحوه فرآيندهای مرتبط با ترجمه يک صفحه ، خواهيم بود. در مقالات ارائه شده در اين خصوص ، همواره IIS 5.0  مورد نظر بوده  مگر اينکه با صراحت نسخه ديگری معرفی گردد .

منابع IIS
تمامی منابعی که از طريق يک سرويس دهنده مبتنی بر IIS در دسترس و قابل استفاده خواهند بود ، بر اساس انشعاب فايل های مربوطه گروه بندی  می گردند. هر درخواست دريافتی بمنظور انجام پردازش های مربوطه به يک ماژول زمان اجراء خاص ، نسبت داده می شود. ماژول هائی که قادر به بررسی منابع وب همراه IIS می باشند،  ISAPI Extensions  ناميده می شوند. هر ماژول يک اينترفيس برنامه نويسی شناخته شده را پياده سازی می نمايد. اين ماژول ها ، فايل های Win32 DLLبوده که مشابه يک اينترفيس،مجموعه ای از توابع API با اسامی و نمونه های از قبل تعريف شده  را ارائه می نمايند. IIS و ISAPI Extensions ، از اينترفيس های فوق ،بعنوان نوع خاصی از پروتکل ارتباطی خصوصی استفاده می نمايند. زمانيکه IIS به  ISAPI Extensions بمنظور انجام عمليات خاصی نياز داشته باشد ،  DLL مربوطه در حافظه مستقر( توسط IIS )  و تابع مورد نظر بهمراه  آرگومانهای مربوطه ، فراخوانده می شوند.
زمانيکه درخواستی برای  منبعی دريافت می گردد ، در ابتدا IIS نوع منبع درخواستی را بررسی می نمايد . منابع ايستا نظير تصاوير ، فايل های متن ، صفحات HTML و صفحات بدون اسکريپت ASP ، مستقيما" توسط IIS و بدون درگير نمودن ماژول های خارجی  سرويس دهی می گردند. IIS به فايل موجود بر روی سرويس دهنده محلی وب دسترسی و محتويات آن را برروی کنسول خروجی ارسال تا زمينه استفاده از آن برای مرورگر متقاضی فراهم گردد . منابعی که به پردازش های خاص سمت سرويس دهنده نياز دارند در اختيار ماژول ريجستر شده  مربوطه قرار خواهند گرفت . مثلا" صفحات ASP ، توسط يک ISAPI extension با نام asp.dll پردازش می گردند. در حالت کلی ، زمانيکه منبع درخواستی شامل کد قابل اجراء باشد ،  IIS  درخواست دريافتی را در اختيار مجری مربوطه بمنظور انجام پردازش های بعدی قرار خواهد داد . فايل هائی که دارای انشعاب aspx .  می باشند،  به  يک ISAPI با نام aspnet_isapi.dll نسبت داده خواهند شد.( مسئول سرويس دهی ) . شکل زير ، وضعيت فوق را در برنامه IIS نشان می دهد ( انتخاب : سايت مورد نظر ،  گزينه Properties ، گزينه Home Directory ، گزينه Configuration ، گزينهApp Mappings ، گزينه aspx . )

aspnet_isapi.dll توسط پردازه IIS 5.0 ( نام فايل اجرائی مربوطه Inetinfo.exe است ) ميزبان می گردد (وضعيت فوق در رابطه با سايرISAPI extensions ، نيز صدق می کند ). نسبت دهی منابع ( mapping ) ،  در متابيس IIS ذخيره می گردد. پس از نصب ، ASP.NET  متابيس IIS  را تغيير تا اين اطمينان بوجود آيد که aspnet_isapi.dll قادر به بررسی تمامی منابع مشخص شده در جدول زير است :

mapping لازم برای IIS در رابطه با aspnet_isapi.dll

توضيحات

انشعاب فايل

فايل برنامه ASP.NET ( فايل golobal.asax )

.asax

فايل های شامل کنترل های وب کاربر

.ascx

هندلرهای HTTP ، مسئول ارتباط با درخواست سطح پائين و پاسخ IIS

.ashx

فايل های مسئول پياده سازی سرويس های وب XML

.asmx

فايل های مسئول پياده سازی صفحات ASP.NET

.aspx

انشعاباتی که برنامه های Trace-viewer مربوط به ASP.NET را مشخص می نمايند . زمانيکه در يک فولدر مجازی فراخوانده گردند ، اطلاعات مربوط به Trace را برای هر يک از صفحات موجود در برنامه ، ارائه می نمايند.

.axd

منبع استفاده شده بمنظور تائيد URI در رابطه با يکی شی راه دور دات نت ميزبان شده توسط IIS

.rem

نظير rem .

.soap

علاوه بر موارد فوق ، aspnet_isapi.dll قادر به رسيدگی و سرويس دهی به  ساير انشعابات استفاده شده  در ويژوال استوديو دات نت است :

.cs, .csproj, .vb, .vbproj, .licx, .config, .resx, .webinfo, .vsdisco.

در ويژوال استوديو دات نت 2003 ، انشعاباتی ديگر نظير : java ,jsl ,resource   و vjsproj اضافه شده است .
ISAPI مربوط به ASP.NET ، فايل های aspx . را پردازش نکرده و صرفا" بعنوان يک پيام رسان (dispatcher ) رفتار می نمايد . در اين رابطه تمامی اطلاعات لازم در رابطه با URL فراخوانده شده و منابع مورد نظر ، جمع آوری و برای يک پردازه مجزاء ديگر ارسال می گردند ( پردازه ASP.NET Worker )

پردازه خدمتگزار ASP.NET 
پردازه خدمتگزار ASP.NET ، محيط اجراء ASP.NET را ارائه می نمايد . پردازه فوق،  شامل يک کد اجرائی غير مديريت يافته با نام aspnet_wp.exe بوده که مسئول ميزبان نمودن CLR فريمورک دات نت است .اين پردازه ، کد اجرائی موردنيازبمنظوراشکال زدائی برنامه های ASP.NET را ارائه می نمايد. پردازه خدمتگزار ASP.NET ، باعث فعال نمودن خط ارتباطی ( pipeline ) مربوط به HTTP ، شده که عملا" مسئوليت  پردازش صفحه درخواستی را برعهده خواهد گرفت  خط ارتباطی HTTP ، مجموعه ای از کلاس های فريمورک دات نت است که مسئوليت سرپرستی از ترجمه اسمبلی صفحه و نمونه  کلاس های مرتبط با صفحه را برعهده خواهد داشت .
ارتباط بين aspnet_isapi.dll و aspnet_wp.exe از طريق "named pipe " ( مکانيزمی مبتنی بر win32 برای ارسال داده  بين پردازه ها ) محقق می گردد .named pipe ، مشابه يک خط ارتباطی کار می کند:  داده از يک نقطه وارد و داده مشابه از نقطه ديگرخارج می گردد. خطوط ارتباطی ، می توانند ارتباط بين پردازه های محلی و پردازه های در حال اجراء بر روی ماشين از راه دور را  ايجاد نمايند. شکل زير لايه ASP.NET موجود بر روی بالاترين سطح IIS  را نشان می دهد :

IIS صفحات درخواستی دريافتی را برای ASP.NET runtime ارسال خواهد کرد

نحوه عمليات ASP.NET runtime
يک نسخه از پردازه خدمتگزار ASP.NET  درتمام زمان اجراء فعال  و تمامی برنامه های وب فعال را ميزبان می نمايد. تنها استثناء در اين رابطه ، داشتن يک سرويس دهنده وب با چندين پردازنده است . در اين حالت می توان،  ASP.NET runtime  را بگونه ای پيکربندی نمود تا چندين پردازه خدمتگزار را  اجراء نمايد(به ازاء هر پردازنده  يک پردازه ) . web garden  ، مدلی بمنظور اجرای چندين پردازه بر روی چندين پردازنده در يک سرويس دهنده بوده  و توسط خصلت های  بخش <processModel> مربوط به فايل machine.config کنترل می گردد .
زمانيکه يک پردازه خدمتگزار توسط تمامی پردازنده ها استفاده و تمامی برنامه های وب را کنترل می نمايد ، ضرورتی به ايزولاسيون پردازه وجود نخواهد داشت. هر برنامه وب در واقع ، توسط دايرکتوری مجازی مربوطه مشخص و به يک حوزه مجزای برنامه تعلق دارد ( AppDomain ناميده می شود) . يک AppDomain جديد بهمراه پردازه خدمتگزار ASP.NET  در زمانيکه  سرويس گيرنده ای  يک دايرکتوری مجازی را برای مرتبه اول ، آدرس دهی می نمايد ، ايجاد خواهد شد. پس از ايجاد يک AppDomain جديد ، ASP.NET runtime تمامی اسمبلی ها را در حافظه مستقر و کنترل را به خط ارتباطی HTTP داده تا پاسخگوی سرويس درخواستی باشد .
اگر يک سرويس گيرنده ، صفحه ای را از يک برنامه وب در حال اجراء  درخواست نمايد ، ASP.NET runtime ، درخواست  را به AppDomain موجود و مرتبط با دايرکتوری مجازی ، ارسال خواهد کرد . تمامی اسمبلی های مورد نياز بمنظور پردازش صفحه،  آماده استفاده خواهند بود (بر اساس اولين فراخوانی ترجمه شده اند). شکل زير نمای  عمومی  ASP.NET runtime را نشان می دهد .

ASP.NET runtime  و AppDomain های متفاوت

بمنظور پيکربندی ASP.NET runtime بعنوان يک web garden ، ( داشتن چندين پردازه خدمتگزار بمنظور اجراء بر روی چندين پردازنده دريک سرويس دهنده فيزيکی ) ، فايل machine.config را فعال و در بخش <processModel> ، مستقر  و در ادامه خصلت webGarden را مقدار True ( بصورت پيش فرض False است ) و خصلت cpuMask  را به يک bit mask تبديل که در آن هر يک ، نشاندهنده يک پردازنده است . در صورتيکه ASP.NET تحت IIS 6.0 کار می کند ، می بايست از IIS manager بمنظور پيکربندی web garden استفاده گردد . در اين حالت تنظيمات موجود در machin.config ، ناديده گرفته می شوند . در صورتيکه webGarden ، دارای مقدار False باشد ، تنظيم cpuMask صرفنظر  و صرفا" يک پردازه صرفنظر از تعداد پردازنده های موجود ، زمانبندی  خواهد شد.
در بخش دوم اين مقاله به بررسی ، پردازه ها ، AppDomian ، Threads   و نحوه پيکربندی پردازه خدمتگزار ASP.NET   خواهيم پرداخت .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382