انواع مدل کدینگ در ASP. NET 2.0 - صفحه 2 - تالار گفتمان آذر فروم





دعوت به همکاری با آذر فروم

 

انواع مدل کدینگ در ASP. NET 2.0
زمان کنونی: 13-09-1395،10:04 ق.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: Friga
آخرین ارسال: Friga
پاسخ: 16
بازدید: 720

 
 
رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5

موضوع: انواع مدل کدینگ در ASP. NET 2.0
ارسال: #11
RE: انواع مدل کدینگ در ASP. NET 2.0
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
صفحات 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 درون یک اسمبلی ترجمه تا پس از اجراء خروجی مورد نیاز جهت ارسال برای مرورگر را تولید نماید .


شکل ۲ مدل توارث برای page class در یک صفحه وب ASP.NET که از مدل code-Behind استفاده می کند را نشان می دهد .

[عکس: aspnet2-coding-03.jpg]
















دورمچم به جای ساعت یکنوار مشکی بستم
تا همه بفهمن من از همه هر چه زمانو متعلق به زمان است بیزارم
من هم روزی قلبی داشتم
که توسط مردمانی ازمیان شما شکست و شکست تا سنگی شد
واکنون روزگاریست که شیطان فریاد میزند..
انسان پیدا کنید سجده خواهم کرد...


=====ஜ۩۞۩ஜ=====

15-05-1391 07:14 ب.ظ
 
ارسال: #12
RE: انواع مدل کدینگ در ASP. NET 2.0
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
برای بسیاری از علاقه مندان و پیاده کنندگان برنامه های وب ASP. NET پرسش های متعددی در رابطه با ماهیت مدل کدینگ در ASP. NET مطرح می شود . اهم این پرسش ها عبارتند از :

چگونه فایل های code-behind به صفحات مرتبط می شوند ؟
چگونه تگ های کنترل به متغیرهای صفحه تبدیل می شوند ؟
چگونه رویدادها به Event Handler مرتبط می شوند ؟
















دورمچم به جای ساعت یکنوار مشکی بستم
تا همه بفهمن من از همه هر چه زمانو متعلق به زمان است بیزارم
من هم روزی قلبی داشتم
که توسط مردمانی ازمیان شما شکست و شکست تا سنگی شد
واکنون روزگاریست که شیطان فریاد میزند..
انسان پیدا کنید سجده خواهم کرد...


=====ஜ۩۞۩ஜ=====

15-05-1391 07:14 ب.ظ
 
ارسال: #13
RE: انواع مدل کدینگ در ASP. NET 2.0
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
چگونه فایل های code-behind به صفحات مرتبط می شوند ؟

هر صفحه aspx . با یک دایرکتیو صفحه شروع می شود . دایرکتیو فوق علاوه بر این که زبان برنامه نویسی استفاده شده برای کدینگ صفحه را مشخص می نماید ، به ASP. NET اعلام می نماید که از چه مکانی کد مرتبط با صفحه را پیدا نماید . با توجه به این که در زمان استفاده از روش inline code ، کد به همراه تگ های html و تگ های مختص کنترل های ASP. NET در یک فایل مشابه قرار می گیرد ، دایرکتیو اشاره شده سخن خاصی در خصوص مکان کد مرتبط با صفحه را نخواهد داشت .
برای مشخص کردن مکان کد مرتبط با صفحه از چندین روش مختلف می توان استفاده کرد . در نسخه های قبلی ASP. NET ، از خصلت src که به فایل کد منبع اشاره می نماید و یا خصلت Inherits برای مشخص کردن نام کلاس ترجمه شده استفاده می گردید . هر یک از روش های فوق دارای چالش های مختص به خود می باشند . به عنوان نمونه ، در مواردی که از خصلت Inherits استفاده می گردید ، پیاده کنندگان مجبور به ترجمه کامل کد قبل از بکارگیری نهائی آن می باشند . این موضوع باعث بروز مشکلات عدیده ای برای پیاده کنندگان می گردید ( خصوصا” در گروه های پیاده کننده ، چراکه گزینه استاندارد ، ترجمه هر صفحه در یک اسمبلی DLL است ) . مشکل واقعی‌ هر دو روش فوق ، الزام پیاده کنندگان به تعریف هر یک از کنترل های وب مورد نیاز به عنوان یک member variable است .
در ASP. NET 2.0 ، با استفاده از یک ویژگی جدید با نام partial class این نوع مشکلات برطرف شده است . ویژگی فوق به پیاده کنندگان اجازه می دهد یک کلاس را به چندین فایل کد منبع تقسیم نمایند . در واقع ، عملکرد روش فوق مشابه مدل های قبلی است با این تفاوت که تعاریف کنترل ها به سمت یک فایل جداگانه هدایت شده است . پیاده کنندگان لازم نیست نگران این فایل باشند و برای دستیابی به کنترل های صفحه وب می توان از اسامی آنها استفاده کرد .
قطعا” تاکنون واژه partial را در تعریف کلاس برای کد صفحه وب مشاهده کرده اید .

Partial Class TestCodeBehind
Inherits System.Web.UI.Page

End Class
با تغییر اندک در زیرساخت ASP. NET ، به سادگی یک صفحه aspx . با فایل کد منبع توسط خصلت CodeFile مرتبط می گردد .

<%@ Page Language=”VB” AutoEventWireup=”true“ CodeFile=”TestCodeBehind.aspx.vb” Inherits=”TestCodeBehind” %>
















دورمچم به جای ساعت یکنوار مشکی بستم
تا همه بفهمن من از همه هر چه زمانو متعلق به زمان است بیزارم
من هم روزی قلبی داشتم
که توسط مردمانی ازمیان شما شکست و شکست تا سنگی شد
واکنون روزگاریست که شیطان فریاد میزند..
انسان پیدا کنید سجده خواهم کرد...


=====ஜ۩۞۩ஜ=====

15-05-1391 07:14 ب.ظ
 
ارسال: #14
RE: انواع مدل کدینگ در ASP. NET 2.0
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
چگونه تگ های کنترل به متغیرهای صفحه مرتبط می گردند ؟

پس از درخواست یک صفحه aspx . در یک مرورگر ، ASP. NET در آغاز سعی می نماید که کد فایل مرتبط با صفحه درخواستی را پیدا نماید . در ادامه برای هر کنترلی که دارای خصلت runat= server است یک تعریف متغیر را تولید می نماید .
فرض کنید که در صفحه aspx . دارای یک کنترل text box به صورت زیر باشیم :

ASP. NET ، در ادامه تعریف member variable زیر را تولید و آن را با استفاده از کلاس های partial به page class ملحق می نماید .

Protected System.Web.UI.TextBox txtInput
برای حصول اطمینان از این موضوع که سیستم به درستی کار می کند ، می بایست فایل aspx . و فایل vb. همسان گردند . در صورتی که اسامی کنترل ها را با استفاده از ابزاری نظیر یک ویرایشگر متن تغییر داده باشیم ، لینک مورد نظر از بین رفته و کد مورد نظر کمپایل نخواهد شد .
توجه داشته باشید که متغیرهای کنترل همواره با کلید واژه قابلیت دستیابی پذیری protected تعریف می گردند . علت این موضوع به روش توارث استفاده شده در ASP.NET ( مدل کدینگ صفحه ) برمی گردد .
روش انجام این کار به صورت زیر است :

در ابتدا ، page class از کتابخانه کلاس دات نت قابلیت های اولیه را تعریف و به یک صفحه وب اجازه می دهد سایر کنترل ها را هاست نماید و خود را به Html تفسیر و امکان دستیابی به اشیاء سنتی ASP نظیر Request ، Response و Session را فراهم نماید .

کلاس code-behind از کلاس صفحه به ارث می رسد تا بتواند توانمندی های اولیه صفحه وب ASP. NET را فراهم نماید .

در نهایت ، صفحه aspx . از طریق کلاس صفحه سفارشی از کد استفاده می نماید . این موضوع باعث می شود که صفحه فوق بتواند رابط کاربر را با کدی که آن را حمایت می نماید ، ترکیب نماید .

عملکرد متغیرهای protected مشابه متغیرهای private با یک تفاوت اساسی است . این نوع متغیرها قابل دستیابی برای کلاس های مشتق شده می باشند .به عبارت دیگر ، استفاده از متغیرهای protected در کلاس code-behind این اطمینان را ایجاد می نماید که متغیرها در کلاس صفحه مشتق شده قابل دستیابی باشند . این موضوع به ASP. NET اجازه می دهد که متغیرهای کنترل را در زمان اجراء به تگ های کنترل مرتبط نماید .
















دورمچم به جای ساعت یکنوار مشکی بستم
تا همه بفهمن من از همه هر چه زمانو متعلق به زمان است بیزارم
من هم روزی قلبی داشتم
که توسط مردمانی ازمیان شما شکست و شکست تا سنگی شد
واکنون روزگاریست که شیطان فریاد میزند..
انسان پیدا کنید سجده خواهم کرد...


=====ஜ۩۞۩ஜ=====

15-05-1391 07:14 ب.ظ
 
ارسال: #15
RE: انواع مدل کدینگ در ASP. NET 2.0
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
چگونه رویدادها به Event Handler مرتبط می شوند ؟

اکثر کد نوشته شده در یک صفحه ASP. NET درون event handlers قرار می گیرند تا بتوانند به رویدادهای کنترل های وب واکنش نشان دهند . در ویژوال استودیو دات نت ، با استفاده از سه روش زیر می توان یک event handler را اضافه کرد :

تایپ دستی آن : در این روش می توان متد مورد نظر را مستقیما” در کلاس صفحه اضافه کرد . در چنین مواردی لازم است که پارامترهای ضروری دقیقا” مشخص گردند تا signature مربوط به event handler با signature رویداد مورد نظر مطابقت نماید . همچنین لازم است که تگ کنترل ویرایش گردد تا بتواند به event handler مربوطه به درستی مرتبط گردد .

Double-click بر روی یک کنترل در حالت Design view : در این حالت ، ویژوال استودیو یک event handler برای رویداد پیش فرض کنترل را ایجاد می نماید . به عنوان مثال در صورتی که بر روی صفحه double-click گردد ، event handler مربوط به Page_Load ایجاد می گردد . همچنین ، در صورتی که بر روی یک کنترل button ، کلیک (double-click) گردد، ویژوال استودیو بطور اتوماتیک رویداد Click را برای آن ایجاد خواهد کرد .

انتخاب رویداد از طریق پنجره Properties : در این روش پس از انتخاب کنترل از طریق پنجره Properties می توان رویداد مورد نظر را انتخاب نمود. در ادامه ، لیستی از رویدادهای ارائه شده توسط کنترل مورد نظر نمایش داده می شوند . با double-click بر روی رویداد مورد نظر می توان آن را انتخاب نمود . ویژوال استودیو بطور اتوماتیک event handler را در page class ایجاد و تگ کنترل را نیز بر اساس آن تنظیم می نماید .
















دورمچم به جای ساعت یکنوار مشکی بستم
تا همه بفهمن من از همه هر چه زمانو متعلق به زمان است بیزارم
من هم روزی قلبی داشتم
که توسط مردمانی ازمیان شما شکست و شکست تا سنگی شد
واکنون روزگاریست که شیطان فریاد میزند..
انسان پیدا کنید سجده خواهم کرد...


=====ஜ۩۞۩ஜ=====

15-05-1391 07:15 ب.ظ
 
ارسال: #16
RE: انواع مدل کدینگ در ASP. NET 2.0
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
ویژوال استودیو دانت ۲۰۰۵ از یک ویژگی با نام automatic event wire-up استفاده می نماید( در دایرکتیو صفحه مشخص می گردد).
این ویژگی از دو اصل کلی زیر تبعیت می نماید :

تمامی event handlers صفحه بطور اتوماتیک و بر اساس نام event handler مرتبط می شوند . به عبارت دیگر ، متد page_Load بطور اتوماتیک و در زمان استقرار صفحه در حافظه صدا زده می شود .

تمامی event handlers کنترل از طریق خصلت های مربوطه در تگ کنترل مرتبط می گردند . خصلت مورد نظر دارای نام مشابه رویداد است که دارای پیشوند on است .

به عنوان مثال ، در صورتی که قصد برخورد با رویداد Click مربوط به کنترل Button را داشته باشیم ، می بایست خصلت OnClick در تگ کنترل را به نام event handler مورد نظر مقداردهی نمود . کد زیر نحوه انجام این کار را نشان م دهد :

nClick=”cmdOK_Click” runat=”server”>

کنترل های ASP. NET همواره از گرامر فوق استفاده می نمایند . بخاطر داشته باشید با توجه به این که ASP. NET می بایست به event handler مرتبط گردد ، کلاس صفحه مشتق شده می بایست قادر به دستیابی به کلاس code-behind باشد . این بدان معنی است که event handlers می بایست به همراه کلید واژه های Protected و یا Public تعریف شوند ( protected ترجیح داده می شود چراکه از مشاهده متد توسط سایر کلاس ها پیشگیری به عمل می آید ) .
















دورمچم به جای ساعت یکنوار مشکی بستم
تا همه بفهمن من از همه هر چه زمانو متعلق به زمان است بیزارم
من هم روزی قلبی داشتم
که توسط مردمانی ازمیان شما شکست و شکست تا سنگی شد
واکنون روزگاریست که شیطان فریاد میزند..
انسان پیدا کنید سجده خواهم کرد...


=====ஜ۩۞۩ஜ=====

15-05-1391 07:15 ب.ظ
 


[-]
پاسخ سریع
پیام
پاسخ خود را برای این پیام در اینجا بنویسید.


کد تصویری
royalfuns
(غیر حساس به بزرگی و کوچکی حروف)
لطفاً کد نشان داده شده در تصویر را وارد نمایید. این اقدام جهت جلوگیری از ارسال‌های خودکار ضروری می‌باشد.

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان