اصول و روش ترجمه ترجمه
ASP.NET به همراه خود یک مدل ترجمه را ارائه
داده است که در آن اسمبلی ها به صورت پویا ترجمه می گردند . برنامه همواره
به عنوان یک نسخه ترجمه شده ( با هدف افزایش کارآئی ) اجراء می گردد .
ASP.NET از سه روش مختلف برای ترجمه برنامه های وب استفاده می کند :
Classic precompilation : این مدل ترجمه همزمان با عرضه اولین نسخه ASP.NET ارائه گردید . در این روش ، بخش هائی از وب سایت نظیر فایل های code-behind و هر نوع اسمبلی مرجع ترجمه و بخش هائی دیگر نظیر فایل های حاوی تگ (فایل های aspx . ، و ASMX ) در زمان اجراء و همزمان با اولین مرتبه درخواست ، بطور پویا ترجمه می شوند . از مدل فوق صرفا" به همراه مدل code-behind سنتی که در آن صفحه واقعی از کلاس پایه ترجمه شده به ارث رسیده باشد ، می توان استفاده کرد.
در روش فوق ، فایل های code-behind به اسمبلی ترجمه و در دایرکتوری bin / قرار می گیرند و فایل های aspx. بر اساس نیاز و درخواست ترجمه می شوند .
-
Dynamic compilation : این مدل ترجمه همزمان با عرضه اولین نسخه ASP.NET 2.0 ارائه گردید و در آن برنامه به همراه تمامی تگ ها و فایل های کد منبع بر روی سرویس دهنده وب بکارگرفته شده و ASP.NET بطور کامل ترجمه را به صورت پویا و on the fly انجام می دهد . ایجاد تغییرات در فایل های حاوی تگ ها و یا فایل های کد منبع به صورت on the fly از مهمترین ویژگی های روش فوق است . در چنین مواردی ، برنامه بطور اتوماتیک و پس از بروز هر گونه تغییر ترجمه می گردد .
با توجه به این که ترجمه پویا همزمان با اولین درخواست انجام می شود ، همواره برای پاسخ به اولین درخواست پس از اعمال تغییر در کد مدت زمان بیشتری نسبت به درخواست های بعدی صرف خواهد شد . -
Site precompilation : در ASP.NET 2.0 یک مدل جدید برای ترجمه precompilation ارائه شده است که اجازه می دهد تمامی وب سایت را به باینری ترجمه کرد .
در این روش می بایست قبل از بکارگیری یک پروژه در ابتدا آن را بطور کامل ترجمه نمود . در این مدل تمامی فایل های code-behind ، صفحات aspx . ، فایل های Html ، منابع گرافیکی و سایر عناصر موجود در back-end به یک و یا چندین اسمبلی قابل اجراء ترجمه می گردند . مدل فوق ، دارای بالاترین سطح کارآئی و امنیت است ولی امکان تغییر محتویات وب سایت در زمان فعال بودن سایت را نمی دهد . این مدل ، برای سایت هائی که فرکانس بهنگام سازی آنها اندک است و خواستار امنیت بالائی می باشند مناسب است . -
در زمان ایجاد یک وب سایت جدید ، ASP.NET به صورت پیش فرض گزینه Dynamic compilation را انتخاب می نماید . این بدان معنی است که تمامی کد و صفحات به عنوان فایل های حاوی کد و تگ بر روی سیستم فایل سرویس دهنده وب ذخیره می گردند و ASP.NET بطور اتوماتیک آنها را ترجمه خواهد کرد . در چنین مواردی ، پاسخ به اولین درخواست نیازمند صرف زمان بیشتری است تا ASP.NET بتواند تمامی صفحه را ترجمه نماید .
برای site precompilation ، می بایست از یک ابزار جداگانه با نام aspnet_compiler.exe جهت ترجمه برنامه وب استفاده کرد. کمپایلر فوق در دایرکتوری Microsoft .NET Framework قرار دارد و می بایست در ابتدا از آن بر روی ماشین تست و پیاده سازی استفاده کرد و در ادامه خروجی را بر روی ماشین عملیاتی بکار گرفت .
کمپایلر فوق چندین فایل را در دایرکتوری مقصد ایجاد می نماید . در صورتی که دقیق تر محتویات یکی از فایل های aspx . را بررسی نمائیم ، مشاهده خواهیم کرد که فایل فوق حاوی هیچگونه تگ مفیدی نمی باشد و صرفا" شامل اطلاعات زیر است :"This is a marker file generated by the precompilation tool, and should not be deleted!"
تمامی کد واقعی و تگ ها به باینری ترجمه و در دایرکتوری Bin قرار داده می شوند . پس از این کار می توان محتویات و ساختار دایرکتوری ایجاد شده را بر روی ماشین مقصد بکار گرفت و دایرکتوری فوق را به عنوان دایرکتوری مجازی پیکربندی تا شرایط اجرای برنامه فراهم گردد .
مفهوم page class در ASP.NET
پس از درخواست یک صفحه ASP.NET از سرویس دهنده و به منظور پاسخ گوئی به کاربران، می بایست در سمت سرویس دهنده پردازش های متعددی صورت پذیرد . کدی که در سمت سرویس دهنده اجراء می گردد منحصرا" کدی نیست که توسط پیاده کننده ایجاد شده است . در مقابل ، ASP.NET در زمان اجراء یک و یا چندین کلاس را که دقیقا" عملیات مورد نظر را انجام خواهد داد تولید و ترجمه می نماید .
یک صفحه ASP.NET به عنوان یک unit اجراء و شامل عناصر سمت سرویس دهنده موجود در صفحه ( نظیر کنترل ها ) و کد مربوط به event-handlers است که توسط پیاده کننده نوشته شده است . پیاده کنندگان مجبور نیستند که صفحات را از قبل به اسمبلی ترجمه نمایند . ASP.NET بطور پویا صفحات را ترجمه و آنها را در اولین مرتبه ای که توسط یک کاربر درخواست می گردند ، ترجمه می نماید . در صورتی که در صفحه و سایر منابع مربوط به آن تغییراتی ایجاد شده باشد ، صفحه بطور اتوماتیک مجددا" ترجمه می گردد .
کلاس و یا کلاس هائی که توسط کمپایلر ایجاد می گردد به نوع کدینگ ( مدل Inline code و یا code-behind ) بستگی دارد .مدل Inline code
در این مدل ، تگ ها و عناصر سمت سرویس دهنده به همراه کد مربوط به event-handler در یک فایل با انشعاب aspx . قرار می گیرد . کمپایلر یک کلاس جدید را که مشتق شده از کلاس page و یا یک کلاس پایه سفارشی تعریف شده توسط خصلت Inherits دایرکتیو Page@را تولید و ترجمه می نماید .
مثلا" در صورتی که دارای یک صفحه وب ASP.NET با نام SamplePage1 در فهرست ریشه برنامه وب باشیم ، یک کلاس جدید با نام ASP.SamplePage1_aspx از کلاس Page مشتق می گردد . برای صفحات موجود در فولدرهای برنامه ، از نام فولدر به عنوان بخشی در نام کلاس تولید شده استفاده می گردد . کلاس تولید شده شامل تعاریف کنترل های موجود در صفحه aspx .، کد های سفارشی و event handlers است .
پس از تولید صفحه ، کلاس ایجاد شده به یک اسمبلی ترجمه و پس از استقرار در application domain ، امکان اجرای آن به منظور تولید خروجی مورد نظر جهت ارسال برای مرورگر فراهم می گردد . در صورتی که در صفحه تغییراتی داده شود که بر روی کلاس تولید شده تاثیر بگذارد ( نظیر افزودن کنترل های جدید و تغییر در کد ) ، کلاس ترجمه شده غیرمعتبر شده و یک کلاس جدید ایجاد می گردد .
شکل 1 ، مدل توارث برای page class در صفحات وب ASP.NET که از مدل inline code ( یا تک فایل ) استفاده می کنند را نشان می دهد .
شکل 1 : مدل توارث page class در inline codeصفحات code-Behind
در مدل code-Behind ، تگ های صفحه به همراه عناصر سمت سرویس دهنده ( شامل تعاریف کنترل ها ) در یک فایل aspx . ذخیره می گردند و کد صفحه در یک فایل جداگانه دیگر قرار می گیرد . فایل حاوی کد شامل یک partial class است (تعریف یک کلاس با استفاده از کلید واژه Partial ) . وپژگی فوق این موضوع را به اثبات می رساند که فایل فوق صرفا" شامل بخشی از تمام کدی است که کلاس کامل صفحه را ایجاد می نماید . در partial class ، کد مورد نیاز برنامه که عمدتا" شامل event handlers است به آن اضافه می گردد ( امکان اضافه کردن متدها و یا خصلت هائی دیگر با توجه اهداف عملیاتی یک صفحه نیز وجود دارد ) .
مدل توارث برای صفحات code-behind نسبت به صفحات Inline code از پیچیدگی بیشتری برخوردار است :-
فایل code-Behind شامل یک partial class است که از کلاس پایه صفحه به ارث می رسد . کلاس پایه صفحه می تواند کلاس Page و یا کلاس دیگری باشد که از کلاس Page مشتق شده است.
-
فایل aspx . شامل یک خصلت Inherits در دایرکتیو Page@ است که به کلاس partial مربوط به code-behind اشاره می نماید .
-
پس از ترجمه صفحه ، ASP.NET یک partial class را بر اساس فایل aspx . ایجاد می نماید . این کلاس ، یک partial class از فایل کلاس code-behind است . فایل partial class تولید شده شامل تعاریف کنترل های صفحه است . این partial class فایل code-behind را قادر می سازد که به عنوان بخشی از یک کلاس کامل و بدون الزام پیاده کنندگان به تعریف صریح کنترل ها استفاده گردد.
-
در نهایت ، ASP.NET کلاس دیگری را تولید که از کلاس تولید شده در مرحله سوم به ارث رسیده است . این کلاس تولید شده جدید شامل کد مورد نیاز برای ایجاد صفحه است . کلاس تولید شده فوق و کلاس code-behind درون یک اسمبلی ترجمه تا پس از اجراء خروجی مورد نیاز جهت ارسال برای مرورگر را تولید نماید .
شکل 2 مدل توارث برای page class در یک صفحه وب ASP.NET که از مدل code-Behind استفاده می کند را نشان می دهد .
شکل 2 : مدل توارث page class در code-Behin -
-
shirintahmasebi.blogfa
دسته بندی : اصول و روش ترجمه ترجمه