![دستيابی داده در ASP.NET 2.0 دستيابی داده در ASP.NET 2.0](https://rasekhoon.net/_files/thumb_images700/article/22d65fa6-2c13-4677-ac85-f40d83eb32a6.jpg)
![دستيابی داده در ASP.NET 2.0 دستيابی داده در ASP.NET 2.0](/_WebsiteData/Article/ArticleImages/1111111110/180229.jpg)
دستيابی داده در ASP.NET 2.0
پياده كنندگان برنامه های وب كه از ASP كلاسيك و يا ASP.NET 1.1 برای طراحی و پياده سازی برنامه های خود استفاده می نمايند ، می بايست پس از نوشتن كد لازم به منظور دستيابی و بازيابی داده از منابع ذخيره سازی ، يك قالب و يا فرمت مناسب جهت نمايش اطلاعات در مرورگر را نيز ايجاد نمايند . با اين كه ويژوال استوديو دارای برنامه های كمكی خاصی ( ويزارد ) در اين رابطه می باشد ، ولی استفاده از ويژگی های پيشرفته ای نظير Paging و مرتب سازی داده ها ، همچنان مستلزم همگرائی بين كدهای نوشته شده در لايه back-end و اطلاعات مورد نظر جهت نمايش در لايه front-end است . در اغلب موارد نگهداری و يكسان سازی كدهای فوق نيز مشكل می باشد خصوصا" در مواردی كه بانك اطلاعاتی تغيير می يابد و يا می بايست اطلاعات اضافه ای را بر روی يك صفحه خاص نمايش دهيم . علاوه بر موارد فوق ، استفاده از فايل های XML به عنوان منابع ذخيره سازی داده نيز مستلزم نوشتن خطوط زيادی است تا بتوان يك همگرائی خاص بين منبع داده و منطق دستيابی داده را ايجاد نمود .
در ASP.NET 2.0 كد مورد نياز به منظور دستيابی و نمايش داده كاهش و از اين طريق كارآئی و بهره وری برنامه های وب بطرز محسوسی افزايش می يابد . در اين رابطه ، كنترل های جديدی ارائه شده است كه قدرت كنترل و انعطاف پياده كنندگان به منظور انجام عمليات در ارتباط با داده را افزايش می دهد. كنترل های داده جديد را می توان به همراه مجموعه وسيعی از منابع داده استفاده نمود ( از بانك های اطلاعاتی سنتی تا منابع داده جديد XML ) . بدين ترتيب تمامی منابع داده يك رفتار همگن را خواهند داشت و به دنبال آن حجم و پيچيدگی برنامه های وب مبتنی بر داده ، كاهش می يابد.
دستيابی داده در برنامه های وب
برنامه های وب نوشته شده با استفاده از ASP.NET 2.0 از پتانسيل های ارائه شده توسط ADO.NET نظير : ارتباط اتوماتيك با انواع متفاوتی از منابع داده ، ايجاد كنترل های كاربر در ارتباط با داده و ساير موارد ديگر استفاده می نمايند . بدين ترتيب حجم كد مورد نياز برای نوشتن برنامه های وب مبتنی بر داده كاهش يافته و نگهداری و پشتيبانی از اين نوع برنامه ها شرايط مطلوب تری را پيدا خواهد كرد .
معماری دستيابی داده
دستيابی به داده مستلزم بكارگيری چهار عنصر اساسی زير است :
• برنامه وب ( ASP.NET )
• لايه داده ( ADO.NET )
• ارائه دهنده داده ( Data Provider )
• منبع داده ( Data Source)
ارتباط بين عناصر فوق، زيرساخت و يا فونداسيون لازم برای تمامی برنامه های وب مبتنی بر داده را ارائه می نمايد .
در ادامه جايگاه هر يك از عناصر فوق را از پائين به بالا بررسی می نمائيم .
منابع ذخيره سازی داده
بخاطر داشته باشيد كه منابع ذخيره سازی داده با اين كه دارای جايگاه خاص خود می باشند ولی از آن مهمتر ، مكانيزم هائی می باشند كه با استفاده از آنان به منابع داده متصل و عمليات مرتبط با داده را انجام خواهيم داد .
Data providers
در ASP.NET 2.0 ، همچنان از Provider model به منظور انجام عمليات مختلف در ارتباط با دستيابی داده استفاده می گردد .
جدول زير چهار شی اساسی تشكيل دهنده ساختار عملياتی يك provider را نشان می دهد :
عملكرد | شی |
ايجاد يك اتصال به منبع و يا منابع مشخص شده | Connection |
اجرای يك دستور در ارتباط با يك منبع داده | Command |
خواندن داده ها از يك منبع داده بر اساس يك ساختار با ويژگی فقط خواندنی و صرفا" به سمت جلو | DataReader |
نشر يك DataSetو بهنگام سازی آن با منبع داده | DataAdapter |
ADO.NET
ADO.NET API ، شامل امكاناتی است كه با استفاده و بكارگيری آنان تمامی منابع داده يكسان بنظر می آيند .صرفنظر از منبع داده ، پردازش لازم به منظور بازيابی و استخراج اطلاعات ، مستلزم استفاده از كلاس های كليدی و عمليات مشابهی است . دربخش دوم با اين لايه و امكانات آن بشتر آشنا خواهيم شد.
لايه برنامه وب
ASP.NET ( بالاترين لايه ) با ارائه مجموعه ای از كنترل ها و امكانات باعث كاهش حجم كد مورد نياز به منظور دستيابی به داده می گردد. مثلا" پياده كنندگان برنامه های وب می توانند از برنامه كمكی ( ويزارد) منبع داده برای ايجاد و پيكربندی اتوماتيك يك منبع داده استفاده نمايند و در ادامه با اجرای query دلخواه خود ،نتايج مورد نظر را بازيابی نمايند . علاوه بر اين ، می توان كنترل های متفاوتی را به يك منبع داده نسبت داد . بدين ترتيب شكل ظاهری و محتوی كنترل می تواند به صورت اتوماتيك مقداردهی گردد ( بر اساس اطلاعات بازيابی شده از منبع داده ) .
كنترل های فوق در اشكال و اندازه های متفاوتی ارائه شده اند ( نظير Grids ,Trees,Menus و lists ) . برای نسبت دهی يك كنترل به يك منبع داده از خصلت DataSourceID استفاده می شود كه می توان آن را در زمان طراحی و يا اجراء تعريف نمود .
كنترل های منبع داده از طريق امكانات ارائه شده توسط يك provider به يك منبع داده نسبت داده می شوند. مهمترين مزيت يك كنترل منبع داده، امكان استفاده از آنان در صفحات مورد نياز است. علاوه بر اين ، برای انجام عملياتی نظير paging ، مرتب سازی و بهنگام سازی ضرورتی به نوشتن حتی يك خط كد نخواهد بود .
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] |
[Visual Basic] |
• متد ExecuteReader : داده را به عنوان يك شی DataReader برمی گرداند . از متد فوق می توان در ارتباط با هر نوع query كه داده ئی را برمی گرداند ،استفاده نمود .
• متد ExecuteScalar : متد فوق يك مقدار نظير تعداد ركوردهائی كه با شرايط ذكر شده در يك query خاص مطابقت می نمايند و يا نتايج حاصل از فراخوانی يك تابع بانك اطلاعاتی را برمی گرداند .
• متد ExecuteNonQuery : متد فوق ، دستوراتی را كه سطرهائی را برنمی گردانند ( نظير Sored procedure ، update و insert ) ، اجراء می نمايد .
در زمان مقداردهی اوليه شی Command می بايست با توجه به شرايط موجود ، متد مورد نظر را انتخاب نمود .
متد ExecuteReader ، نتايج را از طريق يك DataReader برمی گرداند . DataReader يك ساختار داده ئی متصل گراء ، فقط به سمت جلو و فقط خواندنی از داده های حاصل از اجرای يك query را برمی گرداند . پس از اجرای query ، اولين ركورد به DataReader برگردانده می شود . در اين حالت ارتباط با بانك اطلاعاتی همچنان وجود داشته و امكان برگرداندن ركورد بعدی وجود خواهد داشت . در ساختمان داده فوق، صرفا" امكان خواندن ركوردها وجود داشته و نمی توان ركوردهای موجود را ويرايش نمود .
DataAdapters و DataSets
DataSet مهمترين ابزار ذخيره سازی داده در معماری غيرمتصل ADO.NET است . DataSet مستقيما" و از طريق يك شی Connection با بانك اطلاعاتی ارتباط برقرار نمی نمايد . برای استقرار داده در يك DataSet می بايست يك DataAdapter ايجاد گردد . مسئوليت DataAdapter ارتباط با بانك اطلاعاتی ، اجرای query و استقرار داده در DataSet می باشد . پس از فراخوانی متد Fill و يا Update توسط DataAdapter ، تمامی عمليات انتقال داده در DataSet به صورت اتوماتيك انجام خواهد شد . هر provider ارائه شده در فريمورك دات نت دارای يك شی DataAdapter است .
DataSet ، مجموعه ای كامل از داده شامل جداول ، محدوديت ها و ارتباط بين جداول را در خود نگهداری می نمايد و می تواند شامل داده های محلی ( داده هائی كه از طريق كد ايجاد شده اند ) و يا داده هائی از چندين منبع داده باشد .
ارتباط با منابع داده موجود توسط DataAdapter كنترل می گردد . DataAdapter همچنين تغييرات ايجاد شده در DataSet را به منبع داده منتقل می نمايد .
كد زير سناريوی استفاده از يك DataSet را نشان می دهد :
[Visual Basic] |
• به منظور اتصال به بانك اطلاعاتی 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
با داشتن يك منبع ذخيره سازی داده ، می توان در ادامه منبع داده را به يك كنترل نسبت داد . ارتباط برقرار شده بين منبع داده و كنترل مورد نظر ، Data Binding ناميده می شود . مقادير استخراج شده از منبع داده را می توان به خصلت های مربوط به هر كنترل نسبت و يا از آنان در جداول ، ليست ها و يا grid بدون نياز به نوشتن كد خاصی استفاده نمود .
متداولترين هدف يك صفحه وب ، ارائه اطلاعات مورد نياز كاربران است . ارائه اطلاعات شخصی ، تجاری و عمومی نمونه هائی در اين زمينه می باشد . بديهی است در صورتی كه از اين زاويه برنامه های وب را بررسی نمائيم به جايگاه مهم فن آوری های موجود به منظور دستيابی داده بيشتر پی خواهيم برد .
تقريبا" هر نوع برنامه وب پويا به نوعی در ارتباط با داده بوده و نيازمند مكانيزم هائی به منظور دستيابی داده می باشد . هر پلت فرم به منظور دستيابی داده امكانات و پتانسيل های متعددی را در اختيار پياده كنندگان نرم افزار قرار می دهد . پس از ارائه دات نت ، پياده كنندگانی كه برای پياده سازی نرم افزار ( Desktop و يا وب ) اين محيط را انتخاب كرده بودند عملا" شاهد تغييرات گسترده در اين رابطه با هدف تسهيل در امر پياده سازی برنامه هائی با محوريت دستيابی داده بودند . در ASP.NET 2.0 مجموعه امكانات جديدی به منظور تسهيل در پياده سازی برنامه های وب با محوريت دستيابی به داده ارائه شده است . برخلاف ASP.NET 1.0 كه پياده كنندگان را ملزم می نمايد تا كدهائی سفارشی به منظور بازيابی و نسبت دهی داده به كنترل های سرويس دهنده بنويسند ، در ASP.NET 2.0 با تبعيت از يك رويكرد تعريفی ، عمليات نسبت دهی داده بدون نياز به نوشتن كدی خاص انجام خواهد شد . عمليات زير نمونه هائی در اين زمينه می باشد :
• انتخاب و نمايش داده
• مرتب سازی ، Paging و Caching داده
• درج ، حذف و بهنگام سازی داده
• استفاده از پارامتر به منظور فيلترينگ و يا فرم های Master-Details
ASP.NET 2.0 دو مجموعه جديد از كنترل های سرويس دهنده را به منظور تامين خواسته های فوق و مدل تعريفی نسبت دهی داده ارائه نموده است . كنترل های فوق ، مسئوليت انجام عمليات مورد نظر برای سناريوهای متفاوت دستيابی داده با توجه به ماهيت Stateless بودن وب را ارائه نموده و پياده كنندگان درگير پيچيدگی ها و ساير مسائل پشت پرده نخواهند شد .
كنترل های منبع داده
در 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 را فراهم می نمايد .
كنترل هاي نسبت دهی داده
در 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> |