آبجی
15th February 2010, 12:39 AM
نویسنده : شرکت سخاروش
پس از عرضه ASP.NET 2.0 ، تغییرات گسترده ای در خصوص نحوه کدینگ برنامه های وب ایجاد گردید . پیاده کنندگان برنامه های وب که از فناوری فوق برای پیاده سازی برنامه های وب استفاده می نمایند ، می بایست با این تغییرات و دستاوردهای آن به خوبی آشنا شوند تا بتوانند برنامه هائی را ایجاد نمایند که ظاهر و باطن آنها با استفاده از آخرین فناوری های موجود پیاده سازی شده باشد .
به دلیل اهمیت این موضوع بر آن شدیم که در سه مقاله جداگانه با گزینه های موجود برای کدینگ یک صفحه وب آشنا شویم و به چندین پرسش اساسی در این رابطه پاسخ دهیم . در اولین بخش ، پس از بررسی اجمالی برخی نکات اولیه و مهم که بیشتر جنبه یادآوری دارد به بررسی انواع مدل کدینگ در ASP.NET 2.0 خواهیم پرداخت .
یادآوری !
پیاده کنندگان برنامه های وب که از فناوری ASP. NET برای تولید محتویات پویا استفاده می کنند ، برای پیاده سازی برنامه های خود می توانند از ابزارهای مختلفی استفاده نمایند . در اکثر وب سایت های بزرگ برای تولید برنامه های وب از ویژوال استودیو استفاده می گردد . این ابزار پیاده سازی حرفه ای ، شامل مجموعه ای غنی از ابزارهای طراحی ، امکانات گسترده جهت اشکال زدائی و تسهیلات کمکی مناسب در زمان کدینگ است .
ویژوال استودیو ، همچنین ازمدل code-behind حمایت می نماید که در آن کد از تگ ها و سایر علائم نشانه گذاری موجود در یک صفحه وب تفکیک می گردد .
برای ایجاد یک برنامه در ویژوال استودیو ۲۰۰۵ به دو پتانسیل سطح بالا نیاز است :
کمپایلر که مسئولیت بررسی کد نوشته شده و ترجمه آن به یک کد سطح پائین تر را برعهده دارد ( در این مورد خاص ، ترجمه به 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 ترجمه می کرد . در ویژوال استودیو ۲۰۰۵ ، رویکرد فوق تغییر یافته است و به ASP.NET اجازه داه می شود که برای هر صفحه در اولین مرتبه دستیابی ، ترجمه را انجام دهد . سیاست فوق باعث شده است که سرعت اشکال زدائی افزایش یافته و پیاده کنندگان بتوانند وب سایت هائی پیاده سازی نمایند که در آنها صفحات وب با زبان های مختلفی نوشته شده باشند .
انواع مدل کدینگ
برای کدینگ صفحات وب و سرویس های وب می توان از دو مدل مختلف استفاده کرد :
Inline code : این مدل به صفحات کلاسیک ASP نزدیک تر است و در آن تمامی کد به همراه تگ های Html در یک فایل aspx . ذخیره می گردد . کد مورد نیاز در یک و یا چندین بلاک اسکریپت قرار می گیرد . با قرار دادن کدها در یک بلاک اسکریپت ، در صورتی که در محیط ویژوال استودیو کار می کنیم همچنان امکان استفاده از پتانسیل هائی نظیر اشکال زدائی و IntelliSense ، تعامل با رویدادها و استفاده از برنامه های جانبی وجود خواهد داشت . این مدل به سهولت قابل استفاده است چراکه همه چیز در یک پکیچ نگهداری می گردد و برای کدینگ صفحات وب ساده مناسب است .
code-Behind : در این مدل هر صفحه ASP.NET در دو فایل جداگانه نگهداری می گردد. اولین فایل که به فایل markup موسوم است شامل تگ های Html و تگ های کنترل های مختص ASP.NET است که دارای انشعاب aspx . است . دومین فایل ، شامل کد مورد نیاز با توجه به اهداف عملیاتی یک صفحه وب است . این فایل با توجه به این که از چه زبانی برای نوشتن کدها استفاده شده است دارای انشعاب متفاوتی خواهد بود . به عنوان نمونه در صورتی که برای کدینگ از زبان VB.NET استفاده شده باشد ، انشعاب این فایل vb . و در صورتی که از زبان #C استفاده شده باشد ، انشعاب آن cs. خواهد بود . مدل فوق سازماندهی بهتری را ارائه می نماید و بخش رابط کاربر را از منطق برنامه نویسی مجزا می نماید . این وضعیت خصوصا” در مواردی که قصد پیاده سازی صفحات وب پیچیده را داشته باشیم ، بسیار مفید و موثر خواهد بود . در ویژوال استودیو ۲۰۰۵ پیاده سازی مدل code-behind تغییر یافته است ولی فلسفه کلی کار با نسخه های قبلی تا حدود زیادی مشابه است .
در NET 1.x. ابزار طراحی استفاده شده برای پیاده سازی ، نوع مدل کدینگ را مشخص می کرد . در ویژوال استودیو شما دارای آزادی عمل در خصوص انتخاب هر یک از گزینه های فوق می باشید . زمانی که یک صفحه وب جدید را به وب سایت خود اضافه می نماید ، با انتخاب و یا عدم گزینش Place Code in Separate File می توان در این رابطه تصمیم گرفت .
در یک پروژه و یا برنامه وب می توان از دو مدل فوق استفاده کرد . شکل ۱ ، نحوه عملیات فوق را نشان می دهد ( انتخاب گزینه Web site و در ادامه Add New Item )
http://www.srco.ir/Articles/images/ASPNET2-Coding-01.jpg
شکل ۱ : اتخاذ تصمیم در خصوص نوع مدل کدینگ
مثال
برای آشنائی بیشتر با روش 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 ) ، تمامی متدهای صفحه تعریف می گردند .
جمع بندی
<li dir="rtl"> مدل code-behind برای صفحات پیچیده ترجیح داده می شود.
<li dir="rtl"> با این که مدل inline code برای صفحات کوچک ، فشرده و مناسب تر به نظر می آید ولی همزمان با رشد کد و Html برای بسیاری از پیاده کنندگان راحت تر است که با دو بخش فوق بطور جداگانه سروکار داشته باشند .
<li dir="rtl"> در مدل code-behind با توجه به این که دقیقا” مشخص می گردد که چه کلاسی ایجاد شده است و از چه namespace استفاده شده است ، شاهد شفافیت بیشتری در کد خواهیم بود.
در مدل code-behind می توان این امکان را در اختیار یک طراح وب قرار داد که صرفا” بخش رابط کاربر را ایجاد و یا تصحیح نماید ، بدون این که لازم باشد وی به کد برنامه دستیابی داشته باشد .
پس از عرضه ASP.NET 2.0 ، تغییرات گسترده ای در خصوص نحوه کدینگ برنامه های وب ایجاد گردید . پیاده کنندگان برنامه های وب که از فناوری فوق برای پیاده سازی برنامه های وب استفاده می نمایند ، می بایست با این تغییرات و دستاوردهای آن به خوبی آشنا شوند تا بتوانند برنامه هائی را ایجاد نمایند که ظاهر و باطن آنها با استفاده از آخرین فناوری های موجود پیاده سازی شده باشد .
به دلیل اهمیت این موضوع بر آن شدیم که در سه مقاله جداگانه با گزینه های موجود برای کدینگ یک صفحه وب آشنا شویم و به چندین پرسش اساسی در این رابطه پاسخ دهیم . در اولین بخش ، پس از بررسی اجمالی برخی نکات اولیه و مهم که بیشتر جنبه یادآوری دارد به بررسی انواع مدل کدینگ در ASP.NET 2.0 خواهیم پرداخت .
یادآوری !
پیاده کنندگان برنامه های وب که از فناوری ASP. NET برای تولید محتویات پویا استفاده می کنند ، برای پیاده سازی برنامه های خود می توانند از ابزارهای مختلفی استفاده نمایند . در اکثر وب سایت های بزرگ برای تولید برنامه های وب از ویژوال استودیو استفاده می گردد . این ابزار پیاده سازی حرفه ای ، شامل مجموعه ای غنی از ابزارهای طراحی ، امکانات گسترده جهت اشکال زدائی و تسهیلات کمکی مناسب در زمان کدینگ است .
ویژوال استودیو ، همچنین ازمدل code-behind حمایت می نماید که در آن کد از تگ ها و سایر علائم نشانه گذاری موجود در یک صفحه وب تفکیک می گردد .
برای ایجاد یک برنامه در ویژوال استودیو ۲۰۰۵ به دو پتانسیل سطح بالا نیاز است :
کمپایلر که مسئولیت بررسی کد نوشته شده و ترجمه آن به یک کد سطح پائین تر را برعهده دارد ( در این مورد خاص ، ترجمه به 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 ترجمه می کرد . در ویژوال استودیو ۲۰۰۵ ، رویکرد فوق تغییر یافته است و به ASP.NET اجازه داه می شود که برای هر صفحه در اولین مرتبه دستیابی ، ترجمه را انجام دهد . سیاست فوق باعث شده است که سرعت اشکال زدائی افزایش یافته و پیاده کنندگان بتوانند وب سایت هائی پیاده سازی نمایند که در آنها صفحات وب با زبان های مختلفی نوشته شده باشند .
انواع مدل کدینگ
برای کدینگ صفحات وب و سرویس های وب می توان از دو مدل مختلف استفاده کرد :
Inline code : این مدل به صفحات کلاسیک ASP نزدیک تر است و در آن تمامی کد به همراه تگ های Html در یک فایل aspx . ذخیره می گردد . کد مورد نیاز در یک و یا چندین بلاک اسکریپت قرار می گیرد . با قرار دادن کدها در یک بلاک اسکریپت ، در صورتی که در محیط ویژوال استودیو کار می کنیم همچنان امکان استفاده از پتانسیل هائی نظیر اشکال زدائی و IntelliSense ، تعامل با رویدادها و استفاده از برنامه های جانبی وجود خواهد داشت . این مدل به سهولت قابل استفاده است چراکه همه چیز در یک پکیچ نگهداری می گردد و برای کدینگ صفحات وب ساده مناسب است .
code-Behind : در این مدل هر صفحه ASP.NET در دو فایل جداگانه نگهداری می گردد. اولین فایل که به فایل markup موسوم است شامل تگ های Html و تگ های کنترل های مختص ASP.NET است که دارای انشعاب aspx . است . دومین فایل ، شامل کد مورد نیاز با توجه به اهداف عملیاتی یک صفحه وب است . این فایل با توجه به این که از چه زبانی برای نوشتن کدها استفاده شده است دارای انشعاب متفاوتی خواهد بود . به عنوان نمونه در صورتی که برای کدینگ از زبان VB.NET استفاده شده باشد ، انشعاب این فایل vb . و در صورتی که از زبان #C استفاده شده باشد ، انشعاب آن cs. خواهد بود . مدل فوق سازماندهی بهتری را ارائه می نماید و بخش رابط کاربر را از منطق برنامه نویسی مجزا می نماید . این وضعیت خصوصا” در مواردی که قصد پیاده سازی صفحات وب پیچیده را داشته باشیم ، بسیار مفید و موثر خواهد بود . در ویژوال استودیو ۲۰۰۵ پیاده سازی مدل code-behind تغییر یافته است ولی فلسفه کلی کار با نسخه های قبلی تا حدود زیادی مشابه است .
در NET 1.x. ابزار طراحی استفاده شده برای پیاده سازی ، نوع مدل کدینگ را مشخص می کرد . در ویژوال استودیو شما دارای آزادی عمل در خصوص انتخاب هر یک از گزینه های فوق می باشید . زمانی که یک صفحه وب جدید را به وب سایت خود اضافه می نماید ، با انتخاب و یا عدم گزینش Place Code in Separate File می توان در این رابطه تصمیم گرفت .
در یک پروژه و یا برنامه وب می توان از دو مدل فوق استفاده کرد . شکل ۱ ، نحوه عملیات فوق را نشان می دهد ( انتخاب گزینه Web site و در ادامه Add New Item )
http://www.srco.ir/Articles/images/ASPNET2-Coding-01.jpg
شکل ۱ : اتخاذ تصمیم در خصوص نوع مدل کدینگ
مثال
برای آشنائی بیشتر با روش 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 ) ، تمامی متدهای صفحه تعریف می گردند .
جمع بندی
<li dir="rtl"> مدل code-behind برای صفحات پیچیده ترجیح داده می شود.
<li dir="rtl"> با این که مدل inline code برای صفحات کوچک ، فشرده و مناسب تر به نظر می آید ولی همزمان با رشد کد و Html برای بسیاری از پیاده کنندگان راحت تر است که با دو بخش فوق بطور جداگانه سروکار داشته باشند .
<li dir="rtl"> در مدل code-behind با توجه به این که دقیقا” مشخص می گردد که چه کلاسی ایجاد شده است و از چه namespace استفاده شده است ، شاهد شفافیت بیشتری در کد خواهیم بود.
در مدل code-behind می توان این امکان را در اختیار یک طراح وب قرار داد که صرفا” بخش رابط کاربر را ایجاد و یا تصحیح نماید ، بدون این که لازم باشد وی به کد برنامه دستیابی داشته باشد .