نمایش نتایج: از شماره 1 تا 2 , از مجموع 2

موضوع: انواع مدل كدينگ در asp. Net 2.0

  1. #1
    تاریخ عضویت
    Nov 2007
    محل سکونت
    Earth
    نوشته ها
    84
    سپاس ها
    0
    سپاس شده 44 در 27 پست

    پیش فرض انواع مدل كدينگ در asp. Net 2.0

    پس از عرضه ASP.NET 2.0 ، تغييرات گسترده ای در خصوص نحوه كدينگ برنامه های$ وب ايجاد گرديد . پياده كنندگان برنامه های وب كه از فناوری فوق برای پياده سازی برنامه های وب استفاده می نمايند ، می بايست با اين تغييرات و دستاوردهای آن به خوبی آشنا شوند تا بتوانند برنامه هائی را ايجاد نمايند كه ظاهر و باطن آنها با استفاده از آخرين فناوری های موجود پياده سازی شده باشد .
    به دليل اهميت اين موضوع بر آن شديم كه در سه مقاله جداگانه با گزينه های موجود برای كدينگ يك صفحه وب آشنا شويم و به چندين پرسش اساسی در اين رابطه پاسخ دهيم . در اولين بخش ، پس از بررسی اجمالی برخی نكات اوليه و مهم كه بيشتر جنبه يادآوری دارد به بررسی انواع مدل كدينگ در ASP.NET 2.0 خواهيم پرداخت .
    يادآوری !
    پياده كنندگان برنامه های وب كه از فناوری ASP. NET برای توليد محتويات پويا استفاده می كنند ، برای پياده سازی برنامه های خود می توانند از ابزارهای مختلفی استفاده نمايند . در اكثر وب سايت های بزرگ برای توليد برنامه های وب از ويژوال استوديو استفاده می گردد . اين ابزار پياده سازی حرفه ای ، شامل مجموعه ای غنی از ابزارهای طراحی ، امكانات گسترده جهت اشكال زدائی و تسهيلات كمكی مناسب در زمان كدينگ است .
    ويژوال استوديو ، همچنين ازمدل code-behind حمايت می نمايد كه در آن كد از تگ ها و ساير علائم نشانه گذاری موجود در يك صفحه وب تفكيك می گردد .
    برای ايجاد يك برنامه در ويژوال استوديو 2005 به دو پتانسيل سطح بالا نياز است :


    • كمپايلر كه مسئوليت بررسی كد نوشته شده و ترجمه آن به يك كد سطح پائين تر را برعهده دارد ( در اين مورد خاص ، ترجمه به IL ) .
    • IDE ( برگرفته شده از Integrated Development Environment ) كه به پياده كنندگان امكان نوشتن كد مورد نياز برای ايجاد يك برنامه وب را می دهد .
      برای پياده سازی يك برنامه وب ASP.NET ، بكارگيری ويژوال استوديو دات نت يك الزام نيست و پياده كنندگان می تواند برای كدينگ برنامه خود از يك برنامه ويرايشگر ( نظير notepad ) نيز استفاده نمايند .
      در زمان پياده سازی يك برنامه وب ، ارائه تسهيلات لازم برای كدينگ از جمله خواسته های مشترك تمامی پياده كنندگان است تا آنان بتوانند صرفنظر از ميزان توانمندی ، سرود خلاقيت خود را آنچنان كه بايسته و شايسته است به گوش مخاطبان برسانند . شايد به همين دليل باشد كه ويژوال استوديو دات نت برای پياده كنندگان برنامه های وب ASP.NET ، به عنوان اولين گزينه ابزار پياده سازی مطرح می گردد .


    با جداسازی ابزارهای پياده سازی و كمپايلر ها اين امكان در اختيار پياده كنندگان گذاشته شده است كه هر يك از ابزار مورد علاقه خود برای پياده سازی برنامه های وب ASP.NET استفاده نمايند و در ادامه اقدام به ترجمه آن نمايند .
    به همراه دات نت كمپايلرهای متعددی ارائه شده است :


    • كمپايلر ويژوال بيسيك ( فايل vbc.exe )
    • كمپايلر #C ( فايل csc.exe )
    • كمپايلر JScript ( فايل jsc.exe )
    • كمپايلر #J ( فايل vjc.exe )

    در صورتی كه قصد استفاده از برنامه های مترجم فوق را بطور دستی داشته می باشيم ، می توان آنها را از طريق خط دستور فعال كرد . كمپايلرهای فوق در آدرس c:\[WinDir]\Microsoft.NET\[Version] قرار دارند كه در آن WinDir ، دايركتوری محل نصب سيستم عامل ( نظير c:\windows ) و Version شماره نسخه دات نت نصب شده بر روی كامپيوتر است ( نظير v2.0.50215 ) .
    استفاده از كمپايلرهای دات نت بطور دستی توصيه نمی گردد چراكه در چنين مواردی می بايست فايل مورد نظر جهت ترجمه و ساير اسمبلی های مورد نياز را مشخص نمود . همچنين لازم است تمامی برنامه را ترجمه و يا هر صفحه را بطور جداگانه ترجمه نمود . برای پيشگيری از اين نوع مسائل جانبی و مشكل ساز ، اكثر پياده كنندگان از امكانات حمايتی تعبيه شده برای ترجمه صفحات در ويژوال استوديو استفاده می نمايند .
    در ASP.NET 1.x ، ويژوال استوديو تمامی صفحات وب را در يك اسمبلی DLL ترجمه می كرد . در ويژوال استوديو 2005 ، رويكرد فوق تغيير يافته است و به ASP.NET اجازه داه می شود كه برای هر صفحه در اولين مرتبه دستيابی ، ترجمه را انجام دهد . سياست فوق باعث شده است كه سرعت اشكال زدائی افزايش يافته و پياده كنندگان بتوانند وب سايت هائی پياده سازی نمايند كه در آنها صفحات وب با زبان های مختلفی نوشته شده باشند .

    انواع مدل كدينگ
    برای كدينگ صفحات وب و سرويس های وب می توان از دو مدل مختلف استفاده كرد :


    • Inline code : اين مدل به صفحات كلاسيك ASP نزديك تر است و در آن تمامی كد به همراه تگ های Html در يك فايل aspx . ذخيره می گردد . كد مورد نياز در يك و يا چندين بلاك اسكريپت قرار می گيرد . با قرار دادن كدها در يك بلاك اسكريپت ، در صورتی كه در محيط ويژوال استوديو كار می كنيم همچنان امكان استفاده از پتانسيل هائی نظير اشكال زدائی و IntelliSense ، تعامل با رويدادها و استفاده از برنامه های جانبی وجود خواهد داشت . اين مدل به سهولت قابل استفاده است چراكه همه چيز در يك پكيچ نگهداری می گردد و برای كدينگ صفحات وب ساده مناسب است .
    • code-Behind : در اين مدل هر صفحه ASP.NET در دو فايل جداگانه نگهداری می گردد. اولين فايل كه به فايل markup موسوم است شامل تگ های Html و تگ های كنترل های مختص ASP.NET است كه دارای انشعاب aspx . است . دومين فايل ، شامل كد مورد نياز با توجه به اهداف عملياتی يك صفحه وب است . اين فايل با توجه به اين كه از چه زبانی برای نوشتن كدها استفاده شده است دارای انشعاب متفاوتی خواهد بود . به عنوان نمونه در صورتی كه برای كدينگ از زبان VB.NET استفاده شده باشد ، انشعاب اين فايل vb . و در صورتی كه از زبان #C استفاده شده باشد ، انشعاب آن cs. خواهد بود . مدل فوق سازماندهی بهتری را ارائه می نمايد و بخش رابط كاربر را از منطق برنامه نويسی مجزا می نمايد . اين وضعيت خصوصا" در مواردی كه قصد پياده سازی صفحات وب پيچيده را داشته باشيم ، بسيار مفيد و موثر خواهد بود . در ويژوال استوديو 2005 پياده سازی مدل code-behind تغيير يافته است ولی فلسفه كلی كار با نسخه های قبلی تا حدود زيادی مشابه است .

    در NET 1.x. ابزار طراحی استفاده شده برای پياده سازی ، نوع مدل كدينگ را مشخص می كرد . در ويژوال استوديو شما دارای آزادی عمل در خصوص انتخاب هر يك از گزينه های فوق می باشيد . زمانی كه يك صفحه وب جديد را به وب سايت خود اضافه می نمايد ، با انتخاب و يا عدم گزينش Place Code in Separate File می توان در اين رابطه تصميم گرفت .
    در يك پروژه و يا برنامه وب می توان از دو مدل فوق استفاده كرد . شكل 1 ، نحوه عمليات فوق را نشان می دهد
    ( انتخاب گزينه Web site و در ادامه Add New Item )


    شكل 1 : اتخاذ تصميم در خصوص نوع مدل كدينگ
    مثال
    برای آشنائی بيشتر با روش Inline code و يا code-Behind يك نمونه مثال را با يكديگر بررسی می نمائيم .
    روش كدينگ Inline code : همه چيز در يك فايل و با نام TestInlineCode.aspx خلاصه شده است. كد زير نحوه انجام اين كار را نشان می دهد .

    روش Inline code : فايل TestInlineCode.aspx
    <%@Page Language="VB" %>

    <scriptrunat="server">
    Protected
    Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Label1.Text =
    "Current time: "
    & DateTime.Now.ToLongTimeString()
    End Sub
    </
    script> <htmlxmlns="http://www.w3.org/1999/xhtml">
    <
    head id="Head1"runat="server">
    <
    title>Test Page</title>
    </
    head>
    <
    body>
    <
    form id="form1"runat="server">
    <
    div>
    <
    asp:LabelID="Label1"runat="server"Text="Click Me!"></asp:Label>
    <
    br/>
    <
    asp:ButtonID="Button1"runat="server" OnClick="Button1_Click"Text="Button"/>
    </
    div>
    </
    form>
    </
    body>
    </
    html
    >
    روش code-behind : در اين مدل از دو فايل استفاده شده است : فايل TestCodeBehind.aspx كه شامل تگ های html و تگ های كنترل های مختص ASP.NET است و بخش رابط كاربر برنامه را تشكيل می دهد و فايل TestCodeBehind.aspx.vb كه حاوی كد مورد نياز صفحه وب با توجه به اهداف عملياتی است .
    كد زير محتويات فايل TestCodeBehind.aspx را نشان می دهد .

    روش code-behind : فايل TestCodeBehind.aspx
    <%@Page Language="VB"AutoEventWireup="true"CodeFile="TestCodeBehind.aspx.vb"Inherits="TestCodeBehind" %>
    <htmlxmlns="http://www.w3.org/1999/xhtml">
    <
    head id="Head1"runat="server">
    <
    title>Test Page</title>
    </
    head>
    <
    body>
    <
    form id="form1"runat="server">
    <
    div>
    <
    asp:LabelID="Label1"runat="server"Text="Click Me!"></asp:Label>
    <
    br/>
    <
    asp:ButtonID="Button1"runat="server"OnClick="Button1_Click" Text="Button"/>
    </
    div>
    </
    form>
    </
    body>
    </
    html>

    كد زير محتويات فايل TestCodeBehind.aspx.vb را نشان می دهد .
    روش code-behind : فايل TestCodeBehind.aspx.vb
    PartialClass TestCodeBehind
    Inherits System.Web.UI.Page
    ProtectedSub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    Label1.Text =
    "Current time: " & DateTime.Now.ToLongTimeString()
    EndSub
    End
    Class
    در كلاس صفحه ( TestCodeBehind ) ، تمامی متدهای صفحه تعريف می گردند .
    جمع بندی

    • مدل code-behind برای صفحات پيچيده ترجيح داده می شود.
    • با اين كه مدل inline code برای صفحات كوچك ، فشرده و مناسب تر به نظر می آيد ولی همزمان با رشد كد و Html برای بسياری از پياده كنندگان راحت تر است كه با دو بخش فوق بطور جداگانه سروكار داشته باشند .
    • در مدل code-behind با توجه به اين كه دقيقا" مشخص می گردد كه چه كلاسی ايجاد شده است و از چه namespace استفاده شده است ، شاهد شفافيت بيشتری در كد خواهيم بود.
    • در مدل code-behind می توان اين امكان را در اختيار يك طراح وب قرار داد كه صرفا" بخش رابط كاربر را ايجاد و يا تصحيح نمايد ، بدون اين كه لازم باشد وی به كد برنامه دستيابی داشته باشد .

  2. #2
    تاریخ عضویت
    Nov 2007
    محل سکونت
    Earth
    نوشته ها
    84
    سپاس ها
    0
    سپاس شده 44 در 27 پست

    پیش فرض پاسخ : انواع مدل كدينگ در asp. Net 2.0

    روش های ترجمه در ASP.NET 2.0
    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-Behind
    در بخش سوم به بررسی سه پرسش اساسی در خصوص ماهيت مدل كدينگ در ASP.NET خواهيم پرداخت .

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •