k

k

پیام های کوتاه
  • ۲۸ تیر ۹۲ , ۱۴:۰۵
    %)
آخرین مطالب
  • ۹۵/۰۵/۱۷
    kkk
آخرین نظرات
  • ۵ دی ۹۴، ۱۱:۲۸ - سعید
    مرسی

اصول و روش ترجمه ترجمه

چهارشنبه, ۳۰ بهمن ۱۳۹۲، ۱۰:۲۷ ق.ظ

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 ( یا تک فایل ) استفاده می کنند را نشان می دهد .

     مدل توارث page class در مدل 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 استفاده می کند را نشان می دهد .

     مدل توارث page class در مدل  code-Behind
    شکل 2 :  مدل توارث page class در   code-Behin

  • shirintahmasebi.blogfa


دسته بندی : اصول و روش ترجمه ترجمه

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی