پس از عرضه ASP.NET 2.0 ، تغييرات گسترده ای در خصوص نحوه كدينگ برنامه های وب ايجاد گرديد . پياده كنندگان برنامه های وب كه از فناوری فوق برای پياده سازی برنامه های وب استفاده می نمايند ، می بايست با اين تغييرات و دستاوردهای آن به خوبی آشنا شوند تا بتوانند برنامه هائی را ايجاد نمايند كه ظاهر و باطن آنها با استفاده از آخرين فناوری های موجود پياده سازی شده باشد .
انواع مدل كدينگ در 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 می توان در اين رابطه تصميم گرفت .
در يك پروژه و يا برنامه وب می توان از دو مدل فوق استفاده كرد .
مثال
برای آشنائی بيشتر با روش Inline code و يا code-Behind يك نمونه مثال را با يكديگر بررسی می نمائيم .
روش كدينگ Inline code : همه چيز در يك فايل و با نام TestInlineCode.aspx خلاصه شده است. كد زير نحوه انجام اين كار را نشان می دهد .
روش Inline code : فايل TestInlineCode.aspx
<%@ Page Language="VB" %>
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Label1.Text = "Current time: " & DateTime.Now.ToLongTimeString()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Test Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Click Me!"> </asp:Label>
<br />
<asp:Button ID="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" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Test Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Click Me!"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</div>
</form>
</body>
</html>
كد زير محتويات فايل TestCodeBehind.aspx.vb را نشان می دهد .
روش code-behind : فايل TestCodeBehind.aspx.vb
Partial Class TestCodeBehind
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = "Current time: " & DateTime.Now.ToLongTimeString()
End Sub
End Class
در كلاس صفحه ( TestCodeBehind ) ، تمامی متدهای صفحه تعريف می گردند .
جمع بندی
مدل code-behind برای صفحات پيچيده ترجيح داده می شود.
با اين كه مدل inline code برای صفحات كوچك ، فشرده و مناسب تر به نظر می آيد ولی همزمان با رشد كد و Html برای بسياری از پياده كنندگان راحت تر است كه با دو بخش فوق بطور جداگانه سروكار داشته باشند .
در مدل code-behind با توجه به اين كه دقيقا" مشخص می گردد كه چه كلاسی ايجاد شده است و از چه namespace استفاده شده است ، شاهد شفافيت بيشتری در كد خواهيم بود.
در مدل code-behind می توان اين امكان را در اختيار يك طراح وب قرار داد كه صرفا" بخش رابط كاربر را ايجاد و يا تصحيح نمايد ، بدون اين كه لازم باشد وی به كد برنامه دستيابی داشته باشد .
در بخش دوم به بررسی روش های ترجمه و مفهوم page class در ASP.NET 2.0 خواهيم پرداخت .
|