دستيابی داده در ASP.NET 2.0
دستيابی به داده از جمله عمليات مهم در زمان پياده سازی هر نوع برنامه كامپيوتری است و برنامه های وب نيز از اين قاعده مستثنی نمی باشند . امروزه صفحات وبی كه در ارتباط با داده بوده و حاوی اطلاعاتی می باشند كه از بانك های اطلاعاتی بازيابی و نمايش داده می شود به يكی از اركان اصلی هر نوع برنامه تجاری تبديل شده است .

پياده كنندگان برنامه های كامپيوتری خصوصا” برنامه های وب همواره برای پياده سازی برنامه هائی كه در ارتباط با داده می باشند با چالش های خاص خود مواجه بوده و آرزو می نمايند كه بتوانند با صرف كمترين زمان و نوشتن حداقل كد لازم به اهداف خود نائل گردند . با ارائه ASP.NET 2.0 ، زمينه تحقق خواسته فوق برای ‌پياده كنندگان برنامه های وب فراهم می گردد . چراكه در اين نسخه از ASP.NET علاوه بر ارائه بيش از پنجاه كنترل جديد ،‌ امكانات متعددی به منظور بهبود و تسهيل عمليات در ارتباط با داده ارائه شده است .

پياده كنندگان برنامه های وب كه از ASP كلاسيك و يا ASP.NET 1.1 برای طراحی و پياده سازی برنامه های خود استفاده می نمايند ، می بايست پس از نوشتن كد لازم به منظور دستيابی و بازيابی داده از منابع ذخيره سازی ، يك قالب و يا فرمت مناسب جهت نمايش اطلاعات در مرورگر را نيز ايجاد نمايند . با اين كه ويژوال استوديو دارای برنامه های كمكی خاصی ( ويزارد ) در اين رابطه می باشد ،

ولی استفاده از ويژگی های پيشرفته ای نظير Paging و مرتب سازی داده ها ،‌ همچنان مستلزم همگرائی بين كدهای نوشته شده در لايه back-end و اطلاعات مورد نظر جهت نمايش در لايه front-end است . در اغلب موارد نگهداری و يكسان سازی كدهای فوق نيز مشكل می باشد خصوصا” در مواردی كه بانك اطلاعاتی تغيير می يابد و يا می بايست اطلاعات اضافه ای را بر روی يك صفحه خاص نمايش دهيم . علاوه بر موارد فوق ، استفاده از فايل های XML به عنوان منابع ذخيره سازی داده نيز ‌مستلزم نوشتن خطوط زيادی است تا بتوان يك همگرائی خاص بين منبع داده و منطق دستيابی داده را ايجاد نمود .

در ASP.NET 2.0 كد مورد نياز به منظور دستيابی و نمايش داده كاهش و از اين طريق كارآئی و بهره وری برنامه های وب بطرز محسوسی افزايش می يابد . در اين رابطه ، كنترل های جديدی ارائه شده است كه قدرت كنترل و انعطاف پياده كنندگان به منظور انجام عمليات در ارتباط با داده را افزايش می دهد. كنترل های داده جديد را می توان به همراه مجموعه وسيعی از منابع داده استفاده نمود ( از بانك های اطلاعاتی سنتی تا منابع داده جديد XML ) . بدين ترتيب تمامی منابع داده يك رفتار همگن را خواهند داشت و به دنبال آن حجم و پيچيدگی برنامه های وب مبتنی بر داده ،‌ كاهش می يابد.

دستيابی داده در برنامه های وب
درفريمورك دات نت ، دستيابی داده با استفاده از ADO.NET انجام می شود . ADO.NET در حقيقت يك رابط و يا اينترفيس برنامه نويسی است كه مجموعه امكانات لازم به منظور كار با بانك های اطلاعاتی را در اختيار پياده كنندگان برنامه های وب قرار می دهد . اينترفيس فوق با ايجاد يك لايه اضافه ، جزئيات و پيچيدگی های موجود به منظور دستيابی به داده را از ديد پياده كنندگان مخفی نگه می دارد .

برنامه های وب نوشته شده با استفاده از ASP.NET 2.0 از پتانسيل های ارائه شده توسط ADO.NET نظير : ارتباط اتوماتيك با انواع متفاوتی از منابع داده ، ايجاد كنترل های كاربر در ارتباط با داده و ساير موارد ديگر استفاده می نمايند . بدين ترتيب حجم كد مورد نياز برای نوشتن برنامه های وب مبتنی بر داده كاهش يافته و نگهداری و پشتيبانی از اين نوع برنامه ها شرايط مطلوب تری را پيدا خواهد كرد .

معماری دستيابی داده
دستيابی داده در برنامه های وب دات نت براساس يك ساختار و يا معماری دو لايه ای انجام می شود (دو لايه جداگانه ) . اولين لايه ،‌ شامل عناصر ضروری فريمورك به منظور دستيابی به داده است . دومين لايه ، شامل APIs و كنترل هائی است كه قابليت های دستيابی به داده را در اختيار برنامه نويسان قرار می دهد .
دستيابی به داده مستلزم بكارگيری چهار عنصر اساسی زير است :
• برنامه وب ( ASP.NET )

• لايه داده ( ADO.NET )
• ارائه دهنده داده ( Data Provider )
• منبع داده ( Data Source)
ارتباط بين عناصر فوق، زيرساخت و يا فونداسيون لازم برای تمامی برنامه های وب مبتنی بر داده را ارائه می نمايد .
شكل زير عناصر و معماری دستيابی به داده را نشان می دهد .

شكل ۱ : معماری دستيابی داده
منبع : MSDN

در ادامه جايگاه هر يك از عناصر فوق را از پائين به بالا بررسی می نمائيم

.
منابع ذخيره سازی داده
منابع ذخيره سازی داده ، نقطه نهائی در معماری دستيابی داده بوده كه بدون وجود آنان اصل مسئله دستيابی داده زير سوال می رود . با استفاده از ADO.NET 2.0 و كنترل های جديد ارائه شده در ASP.NET 2.0 ، يك برنامه وب قادر به دستيابی داده از منابع داده متنوعی نظير : بانك های اطلاعاتی رابطه ای ، فايل های XML ، سرويس های وب ، فايل های متنی و يا داده های موجود در فايل های Excel می باشد .

بخاطر داشته باشيد كه منابع ذخيره سازی داده با اين كه دارای جايگاه خاص خود می باشند ولی از آن مهمتر ، مكانيزم هائی می باشند كه با استفاده از آنان به منابع داده متصل و عمليات مرتبط با داده را انجام خواهيم داد .

Data providers
ADO.NET ،‌ به منظور ارتباط با منابع داده متفاوت از مجموعه ای كلاس و دستور استفاده می نمايد كه آنان را مديون Provider model است . در واقع Provider ،‌ مجموعه ای از اينترفيس ها و كلاس های لازم به منظور ذخيره و بازيابی داده در ارتباط با يك منبع داده خاص را ارائه می نمايد. بديهی است مهمترين دستاورد رويكرد فوق ، انعطاف لازم به منظور نوشتن كد مورد نياز برای دستيابی به داده ( استفاده از ADO.NET ) از چندين نوع منبع داده می باشد .

در ASP.NET 2.0 ، همچنان از Provider model به منظور انجام عمليات مختلف در ارتباط با دستيابی داده استفاده می گردد .
جدول زير چهار شی اساسی تشكيل دهنده ساختار عملياتی يك provider را نشان می دهد :
عملكرد شی
ايجاد يك اتصال به منبع و يا منابع مشخص شده Connection
اجرای يك دستور در ارتباط با يك منبع داده Command
خواندن داده ها از يك منبع داده بر اساس يك ساختار با ويژگی فقط خواندنی و صرفا” به سمت جلو DataReader
نشر يك DataSet و بهنگام سازی آن با منبع داده DataAdapter

ADO.NET API
ADO.NET API ، شامل امكاناتی است كه با استفاده و بكارگيری آنان تمامی منابع داده يكسان بنظر می آيند .صرفنظر از منبع داده ، پردازش لازم به منظور بازيابی و استخراج اطلاعات ،‌ مستلزم استفاده از كلاس های كليدی و عمليات مشابهی است . دربخش دوم با اين لايه و امكانات آن بشتر آشنا خواهيم شد.

لايه برنامه وب
ASP.NET ( بالاترين لايه ) با ارائه مجموعه ای از كنترل ها و امكانات باعث كاهش حجم كد مورد نياز به منظور دستيابی به داده می گردد. مثلا” پياده كنندگان برنامه های وب می توانند از برنامه كمكی ( ويزارد) منبع داده برای ايجاد و پيكربندی اتوماتيك يك منبع داده استفاده نمايند و در ادامه با اجرای query دلخواه خود ،نتايج مورد نظر را بازيابی نمايند . علاوه بر اين ، می توان كنترل های متفاوتی را به يك منبع داده نسبت داد . بدين ترتيب شكل ظاهری و محتوی كنترل می تواند به صورت اتوماتيك مقداردهی گردد ( بر اساس اطلاعات بازيابی شده از منبع داده ) .

كنترل های فوق در اشكال و اندازه های متفاوتی ارائه شده اند ( نظير Grids ,Trees,Menus و lists ) . برای نسبت دهی يك كنترل به يك منبع داده از خصلت DataSourceID استفاده می شود كه می توان آن را در زمان طراحی و يا اجراء تعريف نمود .

كنترل های منبع داده از طريق امكانات ارائه شده توسط يك provider به يك منبع داده نسبت داده می شوند. مهمترين مزيت يك كنترل منبع داده،‌ امكان استفاده از آنان در صفحات مورد نياز است. علاوه بر اين ، برای انجام عملياتی نظير paging ،‌ مرتب سازی و بهنگام سازی ضرورتی به نوشتن حتی يك خط كد نخواهد بود .
در بخش دوم با تمركز بر روی لايه دوم ( ADO.NET API ) با امكانات موجود به منظور كار با ADO.NET ، كنترل های ASP.NET و providers بشتر آشنا خواهيم شد .
________________________________________
دستيابی داده در ASP.NET 2.0 ( بخش دوم )
در بخش اول به مدل دستيابی داده در فريمورك دات نت اشاره و با عناصر اساسی در اين معماری آشنا شديم . در بخش دوم با تمركز بر روی لايه دوم ( ADO.NET API ) به بررسی امكانات موجود به منظور كار با ADO.NET ، كنترل های ASP.NET و providers خواهيم پرداخت .
Data Access APIs

لايه دوم در معماری دستيابی داده ، مكانيزم های لازم برای كار با ADO.NET ، كنترل های ASP.NET و providers را ارائه می نمايد. از امكانات ارائه شده در اين لايه می توان به منظور انجام مجموعه ای از عمليات و فرآيندهای متداول استفاده نمود . با استفاده از كنترل های متنوع منبع داده و نسبت دهی داده در ASP.NET 2.0 ، حجم كد مورد نياز به منظور حمايت از عمليات در ارتباط با داده كاهش و در مواردی نيز حذف می گردد .
Connection و Commands

ADO.NET از چندين Data Provider متفاوت برای اتصال به بانك های اطلاعاتی ، اجرای دستورات و بازيابی نتايج استفاده می نمايد . در ADO.NET از شی Connection برای اتصال به يك منبع داده خاص استفاده می گردد . مثلا” در صورت استفاده از بانك اطلاعاتی SQL Server 2000 ، می توان از شی SQLConnection به منظور اتصال به بانك اطلاعاتی استفاده نمود . كد زير روش انجام اين كار را نشان می دهد :
[Visual Basic]

Dim nwindConn As SqlConnection = _
New SqlConnection(“Data Source=localhost;Integrated Security=SSPI;” _
“Initial Catalog=northwind”)
nwindConn.Open()

[C#]
SqlConnection nwindConn =
new SqlConnection(“Data Source=localhost; Integrated Security=SSPI;”
“Initial Catalog=northwind”);
nwindConn.Open();
پس از اتصال به يك منبع داده ،‌ می توان از شی Command به منظور اجرای دستورات و برگرداندن نتايج مورد نظر استفاده نمود .شی Command از طريق Command constructor كه يك query و يا عبارت SQL را دريافت می نمايد ، ايجاد می گردد . پس از ايجاد شی Command با استفاده از خصلت CommandText می توان عبارات SQL را ويرايش كرد .

[Visual Basic]
Dim catCMD As SqlCommand = _
New SqlCommand(“SELECT CategoryID, CategoryName FROM Categories”,nwindConn)

[C#]
SqlCommand catCMD =
new SqlCommand(“SELECT CategoryID, CategoryName FROM Categories”, nwindConn);

شی Command چندين متد Execute را به منظور اجرای Stored Procedure ، query و يا عبارات غير query نظير Update و Insert ، ارائه نموده است :
• متد ExecuteReader : داده را به عنوان يك شی DataReader برمی گرداند . از متد فوق می توان در ارتباط با هر نوع query كه داده ئی را برمی گرداند ،‌استفاده نمود .

• متد ExecuteScalar : متد فوق يك مقدار نظير تعداد ركوردهائی كه با شرايط ذكر شده در يك query خاص مطابقت می نمايند و يا نتايج حاصل از فراخوانی يك تابع بانك اطلاعاتی را برمی گرداند .

• متد ExecuteNonQuery : متد فوق ،‌ دستوراتی را كه سطرهائی را برنمی گردانند ( نظير Sored procedure ، update و insert ) ،‌ اجراء می نمايد .
در زمان مقداردهی اوليه شی Command می بايست با توجه به شرايط موجود ،‌ متد مورد نظر را انتخاب نمود .
متد ExecuteReader ، نتايج را از طريق يك DataReader برمی گرداند . DataReader يك ساختار داده ئی متصل گراء ، فقط به سمت جلو و فقط خواندنی از داده های حاصل از اجرای يك query را برمی گرداند . پس از اجرای query ، اولين ركورد به DataReader برگردانده می شود . در اين حالت ارتباط با بانك اطلاعاتی همچنان وجود داشته و امكان برگرداندن ركورد بعدی وجود خواهد داشت . در ساختمان داده فوق، صرفا” امكان خواندن ركوردها وجود داشته و نمی توان ركوردهای موجود را ويرايش نمود .
DataAdapters و DataSets
با اين كه DataReader برای برنامه های متصل گرا كافی به نظر می آيد ، ولی اين ساختمان داده قادر به حمايت از مدل غيرمتصل برای دستيابی به بانك های اطلاعاتی نمی باشد . بدين منظور از كلاس های DataAdapter و DataSet ،‌استفاده می گردد .
DataSet مهمترين ابزار ذخيره سازی داده در معماری غيرمتصل ADO.NET است . DataSet مستقيما” و از طريق يك شی Connection با بانك اطلاعاتی ارتباط برقرار نمی نمايد . برای استقرار داده در يك DataSet می بايست يك DataAdapter ايجاد گردد . مسئوليت DataAdapter ارتباط با بانك اطلاعاتی ، اجرای query و استقرار داده در DataSet می باشد . پس از فراخوانی متد Fill و يا Update توسط DataAdapter ، تمامی عمليات انتقال داده در DataSet به صورت اتوماتيك انجام خواهد شد . هر provider ارائه شده در فريمورك دات نت دارای يك شی DataAdapter است .
DataSet ، مجموعه ای كامل از داده شامل جداول ، محدوديت ها و ارتباط بين جداول را در خود نگهداری می نمايد و می تواند شامل داده های محلی ( داده هائی كه از طريق كد ايجاد شده اند ) و يا داده هائی از چندين منبع داده باشد .
ارتباط با منابع داده موجود توسط DataAdapter كنترل می گردد . DataAdapter همچنين تغييرات ايجاد شده در DataSet را به منبع داده منتقل می نمايد .
كد زير سناريوی استفاده از يك DataSet را نشان می دهد :
[Visual Basic]

Dim nwindConn As SqlConnection = _
New SqlConnection(“Data Source=localhost;” & _
“Integrated_Security=SSPI;Initial Catalog=northwind”)

Dim selectCMD As SqlCommand = _
New SqlCommand(“SELECT CustomerID, CompanyName FROM ” & _
“Customers”, nwindConn)
selectCMD.CommandTimeout = 30

Dim custDA As SqlDataAdapter = New SqlDataAdapter
custDA.SelectCommand = selectCMD
Dim custDS As DataSet = New DataSet
custDA.Fill(custDS, “Customers”)
nwindConn.Close()

[C#]
SqlConnection nwindConn =
new SqlConnection(“Data Source=localhost;” +
“IntegratedSecurity=SSPI;Initial Catalog=northwind”);
SqlCommand selectCMD =
new SqlCommand(“SELECT CustomerID, CompanyName FROM Customers”,
nwindConn);
selectCMD.CommandTimeout = 30;

SqlDataAdapter custDA = new SqlDataAdapter();
custDA.SelectCommand = selectCMD;
nwindConn.Open();
DataSet custDS = new DataSet();
custDA.Fill(custDS, “Customers”);
nwindConn.Close();

در كد فوق :
• به منظور اتصال به بانك اطلاعاتی SQL Server يك SQLConnection ايجاد شده است .
• برای اجرای query مورد نظر در ارتباط با جدول Customers يك SQLCommand ايجاد شده است .
• برای ايجاد SQLCommand يك DataAdapter ايجاد شده است ( ارتباط با بانك اطلاعاتی ) .
• از طريق DataAdapter يك DataSet ايجاد شده است .DataSet بخش غير متصل عمليات داده بوده و می تواند به مجموعه وسيعی از كنترل های وب ASP.NET 2.0 نسبت داده شود .
در زمان استفاده از يك DataSet می توان آن را به هر نوع كنترل داده نسبت داد . بدين منظور از خصلت DataSource و متد DataBind استفاده می گردد . در صورتی كه داده های موجود در بانك اطلاعاتی تغيير نمايند ،‌ تغييرات به صورت اتوماتيك در DataSet اعمال نمی شود و می بايست مجددا” از متد DataBind استفاده گردد . ( زمان و محل استفاده از متد DataBind از چالش های پياده كنندگان برنامه های وب در ASP.NET 1.x است ) .
در ASP.NET 2.0 تمامی فرآيندهای مربوط به ايجاد يك DataSet ، نسبت دهی داده ، نگهداری و يكسان سازی داده با ارائه مفهوم جديد منابع داده بهبود و تسهيلات ويژه ای در اختيار پياده كنندگان برنامه های وب قرار می گيرد.
ASP.NET 2.0
در ASP.NET 2.0 اغلب عمليات و يا فرآيندهای مورد نياز به منظور ايجاد يك SQLCommand ، توليد يك DataAdapter و استقرار داده در يك DataSet توسط بكارگيری DataSource از ديد پياده كنندگان برنامه های وب مخفی نگه داشته می گردد . در چنين مواردی می توان با استفاده از برنامه كمكی ( ويزارد ) نسبت دهی داده ، عمليات اشاره شده را به صورت اتوماتيك نيز انجام داد . برنامه كمكی Configure DataSource ،‌ كدمورد نياز به منظور اتصال به منابع ذخيره سازی داده ( نظير بانك های اطلاعاتی ، فايل های معمولی ، فايل هار XML ) را توليد و query مورد نظر را ايجاد می نمايد .
با داشتن يك منبع ذخيره سازی داده ،‌ می توان در ادامه منبع داده را به يك كنترل نسبت داد . ارتباط برقرار شده بين منبع داده و كنترل مورد نظر ، Data Binding ناميده می شود . مقادير استخراج شده از منبع داده را می توان به خصلت های مربوط به هر كنترل نسبت و يا از آنان در جداول ، ليست ها و يا grid بدون نياز به نوشتن كد خاصی استفاده نمود .
در بخش سوم به بررسی كنترل های جديد معرفی شده در ASP.NET 2.0 برای دستيابی داده خواهيم پرداخت .
________________________________________
دستيابی داده در ASP.NET 2.0 ( بخش سوم )
در بخش اول به مدل دستيابی داده در فريمورك دات نت اشاره و با عناصر اساسی در اين معماری آشنا شديم . در بخش دوم با تمركز بر روی لايه دوم ( ADO.NET API ) به امكانات موجود به منظور كار با ADO.NET ، كنترل های ASP.NET و providers اشاره گرديد .
در بخش سوم به بررسی كنترل های جديد معرفی شده در ASP.NET 2.0 برای دستيابی داده خواهيم پرداخت .
متداولترين هدف يك صفحه وب ، ‌ارائه اطلاعات مورد نياز كاربران است . ارائه اطلاعات شخصی ،‌ تجاری و عمومی نمونه هائی در اين زمينه می باشد . بديهی است در صورتی كه از اين زاويه برنامه های وب را بررسی نمائيم به جايگاه مهم فن آوری های موجود به منظور دستيابی داده بيشتر پی خواهيم برد .
تقريبا” هر نوع برنامه وب پويا به نوعی در ارتباط با داده بوده و نيازمند مكانيزم هائی به منظور دستيابی داده می باشد . هر پلت فرم به منظور دستيابی داده امكانات و پتانسيل های متعددی را در اختيار پياده كنندگان نرم افزار قرار می دهد . پس از ارائه دات نت ، پياده كنندگانی كه برای پياده سازی نرم افزار ( Desktop و يا وب ) اين محيط را انتخاب كرده بودند عملا” شاهد تغييرات گسترده در اين رابطه با هدف تسهيل در امر پياده سازی برنامه هائی با محوريت دستيابی داده بودند . در ASP.NET 2.0 مجموعه امكانات جديدی به منظور تسهيل در پياده سازی برنامه های وب با محوريت دستيابی به داده ارائه شده است . برخلاف ASP.NET 1.0 كه پياده كنندگان را ملزم می نمايد تا كدهائی سفارشی به منظور بازيابی و نسبت دهی داده به كنترل های سرويس دهنده بنويسند ، در ASP.NET 2.0 با تبعيت از يك رويكرد تعريفی ،‌ عمليات نسبت دهی داده بدون نياز به نوشتن كدی خاص انجام خواهد شد . عمليات زير نمونه هائی در اين زمينه می باشد :
• انتخاب و نمايش داده
• مرتب سازی ، Paging و Caching داده
• درج ، حذف و بهنگام سازی داده
• استفاده از پارامتر به منظور فيلترينگ و يا فرم های Master-Details
ASP.NET 2.0 دو مجموعه جديد از كنترل های سرويس دهنده را به منظور تامين خواسته های فوق و مدل تعريفی نسبت دهی داده ارائه نموده است . كنترل های فوق ، مسئوليت انجام عمليات مورد نظر برای سناريوهای متفاوت دستيابی داده با توجه به ماهيت Stateless بودن وب را ارائه نموده و پياده كنندگان درگير پيچيدگی ها و ساير مسائل پشت پرده نخواهند شد .
كنترل های منبع داده
كنترل های منبع داده يك منبع ذخيره سازی داده خاص نظير يك بانك اطلاعاتی ، فايل های XML و يا سرويس های وب XML را ارائه می نمايند . كنترل های فوق امكان انجام عمليات متفاوت و قدرتمندی در ارتباط با داده نظير مرتب سازی ، فيلترينگ ، بهنگام سازی ، حذف و نمايش اطلاعات به صورت صفحه به صفحه را ارائه می نمايند كه كنترل های استفاده شده در سطح لايه رابط كاربر می توانند از امكانات آنان به منظور نسبت دهی استفاده نمايند .
در ASP.NET 2.0 ، از روش های ساده به منظور دستيابی و نمايش اطلاعات موجود در بانك های اطلاعاتی استفاده می شود . در ASP.NET 1.x به منظور دستيابی به داده می بايست از اسكريپت هائی خاص برای‌ ارتباط ،‌ باز نمودن ، استخراج و بازيابی ركوردهای موجود در يك بانك اطلاعاتی استفاده می گرديد ،‌ تمامی فرآيندهای فوق در ASP.NET 2.0 از طريق كنترل های منبع داده كه به صورت تعريفی در يك صفحه مشخص می گردند ،‌انجام خواهد شد .
كنترل های منبع داده ارائه شده در ASP.NET 2.0 عبارتند از :
• SqlDataSource : امكان دستيابی به يك بانك اطلاعاتی SQL ارائه شده توسط ADO.NET Provider نظير سرويس دهنده SQL Server شركت مايكروسافت ، را فراهم می نمايد.
• ObjectDataSource : امكان دستيابی به يك شی Middle-tier نظير يك لايه دستيابی داده و يا يك عنصر business را فراهم می نمايد.
• AccessDataSource : امكان دستيابی به يك بانك اطلاعاتی اكسس ( Jet ) را فراهم می نمايد.
• SiteMapDataSource : امكان دستيابی به يك ساختار سلسله مراتبی استفاده شده توسط يك ASP.NET 2.0 site navigation provider را فراهم می نمايد.
• XmlDataSource : امكان دستيابی به يك فايل و يا سند XML را فراهم می نمايد .

كنترل هاي نسبت دهی داده
كنترل های نسبت دهی داده،كنترل های لايه رابط كاربر می باشند كه داده را به عنوان markup بررسی تا پاسخ لازم را در اختيار مرورگرها و ساير دستگاه های سرويس دهنده قرار دهند . يك كنترل نسبت دهی داده می تواند داده را به صورت اتوماتيك از يك منبع داده اخذ و متناسب با چرخه حيات يك صفحه آنان را بازيابی و نمايش دهد . كنترل های فوق می توانند از امكانات و مزايای ذاتی يك منبع داده نظير مرتب سازی ، فيلترينگ ، بهنگام سازی ، حذف و نمايش اطلاعات به صورت صفحه به صفحه استفاده نمايند . ارتباط بين كنترل نسبت دهی داده با يك كنترل منبع داده توسط خصلت DataSourceID مربوطه محقق می گردد .
در ASP.NET 1.x كنترل های نسبت دهی داده متعددی نظير DataGrid , DataList ، Repeater و كنترل های ليست نظير DropDownList ارائه شده است . در ASP.NET 2.0 چندين كنترل جديد نسبت دهی داده اضافه شده است :
• GridView ، داده را در يك قالب خاص مشتمل بر تعدادی سطر و يا ستون ( grid ) نمايش می دهد . كنترل فوق نسخه بهنگام شده كنترل DataGrid است كه قادر به استفاده از مزايا و قابليت های منابع داده به صورت اتوماتيك می باشد .
• DetailsView ، داده را در جدولی شامل زوج مقدار و Label ارائه می نمايد (نظير form view در اكسس مايكروسافت ) . كنترل فوق قادر به استفاده از مزايا و قابليت های منابع داده به صورت اتوماتيك می باشد .
• TreeView ، داده را به صورت يك ساختار سلسله مراتبی درخت گونه كه امكان توسعه هر يك از گره های آن وجود دارد ،‌ ارائه می نمايد .
• Menu ، داده را به شكل يك منو سلسله مراتبی ارائه می نمايد .
برای آشنائی با نحوه استفاده از كنترل های فوق در ادامه به بررسی يك نمونه مثال كاربردی خواهيم پرداخت .
مثال : بازيابی داده موجود در بانك اطلاعاتی اكسس و نمايش در يك GridView
فرضيات : بانك اطلاعاتی SrcoTest.mdb ، جدول ScroTable1
بدين منظور از دو كنترل استفاده شده است :
• كنترل AccessDataSource جهت اتصال به بانك اطلاعاتی SrcoTest.mdb و بازيابی داده ( يك كنترل منبع داده )
• كنترل Gridview جهت نمايش داده های موجود در جدول ScroTable1 ( يك كنترل نسبت دهی داده )
<html>
<body>
<form Runat=”Server”>
<Font Face=”Tahoma” >
<h4>استفاده از دو كنترل منبع داده و نسبت دهی داده </h4>

<asp:AccessDataSource id=”Srco” Runat=”Server”
DataFile=”c:\SrcoTest.mdb”
SelectCommand=”SELECT Fname, Lname, Email FROM SrcoTable1″/>

<asp:GridView id=”SrcoGrid” DataSourceID=”Srco” Runat=”Server”/>
<br>
<h5>تهيه شده توسط شركت سخا روش </h5>
</Font>
</form>
</body>
</html>
پس از ذخيره كد فوق در فايلی با نام دلخواه ( مثلا” DataAcessExample1.aspx ) و اجرای آن خروجی زير را خواهيم داشت .

در مثال فوق ، با استفاده از مجموعه امكانات موجود ( Layout و Style ) می توان شكل و قالب جدول را به دلخواه تغيير داد .
________________________________________
كنترل های منبع داده در ASP.NET 2.0 ( بخش اول )
يكی از مهمترين اهداف پياده سازی صفحات وب ، ارائه اطلاعات مورد نياز كاربران با توجه به اهداف عملياتی يك وب سايت ( سرويس های شخصی و يا عمومی ) است . شايد به همين دليل باشد كه يكی از چالش های مهم در خصوص طراحی صفحات ، ايجاد صفحاتی است كه حاوی جديدترين و در عين حال صحيح ترين اطلاعات باشند .
برای نمايش اطلاعات بر روی صفحات وب از چهار روش و يا منبع اساسی استفاده می گردد :
• درج محتويات ثابت به صورت دستی در بطن صفحات : در اين روش محتويات مورد نظر مستقيما” و به صورت دستی در بطن يك صفحه وب قرار داده می شود. برای تعريف يك ساختار نمايشی مناسب از تگ های Html استفاده می گردد . به منظور توليد صفحات، می توان از ابزارهای توليد مختلفی نظير FrontPage و يا حتی يك اديتور ساده متنی استفاده نمود .
• توليد محتويات با استفاده از اسكريپت های سمت سرويس گيرنده يا سرويس دهنده : در اين روش به صورت اتوماتيك ، مجموعه ای از اسكريپت های سمت سرويس دهنده و يا سرويس گيرنده اجراء و اطلاعات مورد نياز به منظور نمايش در صفحات وب را توليد می نمايند . اطلاعات ممكن است به صورت ثابت و يا با بكارگيری مجموعه ای از توابع تعبيه شده در يك زبان برنامه نويسی و يا اشياء سمت سرويس دهنده، توليد گردند.