دستیابی به داده از جمله عملیات مهم در زمان پیاده سازی هر نوع برنامه کامپیوتری است و برنامه های وب نیز از این قاعده مستثنی نمی باشند .
امروزه صفحات وبی که در ارتباط با داده بوده و حاوی اطلاعاتی می باشند که از بانک های اطلاعاتی بازیابی و نمایش داده می شود به یکی از ارکان اصلی هر نوع برنامه تجاری تبدیل شده است .
پیاده کنندگان برنامه های کامپیوتری خصوصا برنامه های وب همواره برای پیاده سازی برنامه هائی که در ارتباط با داده می باشند با چالش های خاص خود مواجه بوده و آرزو می نمایند که بتوانند با صرف کمترین زمان و نوشتن حداقل کد لازم به اهداف خود نائل گردند .
با ارائه 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)
ارتباط بین عناصر فوق، زیرساخت و یا فونداسیون لازم برای تمامی برنامه های وب مبتنی بر داده را ارائه می نماید .
شکل زیر عناصر و معماری دستیابی به داده را نشان می دهد .
شکل 1 : معماری دستیابی داده
منبع : 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
Data providers ADO.NET ، به منظور ارتباط با منابع داده متفاوت از مجموعه ای کلاس و دستور استفاده می نماید که آنان را مدیون Provider model است .
بدیهی است مهمترین دستاورد رویکرد فوق ، انعطاف لازم به منظور نوشتن کد مورد نیاز برای دستیابی به داده ( استفاده از ADO.NET ) از چندین نوع منبع داده می باشد .
در ASP.NET 2.0 ، همچنان از Provider model به منظور انجام عملیات مختلف در ارتباط با دستیابی داده استفاده می گردد .
جدول زیر چهار شی اساسی تشکیل دهنده ساختار عملیاتی یک provider را نشان می دهد : 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 به منظور اتصال به بانک اطلاعاتی استفاده نمود .
کد زیر روش انجام این کار را نشان می دهد : پس از اتصال به یک منبع داده ، می توان از شی Command به منظور اجرای دستورات و برگرداندن نتایج مورد نظر استفاده نمود .شی Command از طریق Command constructor که یک query و یا عبارت SQL را دریافت می نماید ، ایجاد می گردد .
پس از ایجاد شی Command با استفاده از خصلت CommandText می توان عبارات SQL را ویرایش کرد .
شی 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 را نشان می دهد : در کد فوق : به منظور اتصال به بانک اطلاعاتی 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 اشاره گردید .
متداولترین هدف یک صفحه وب ، ارائه اطلاعات مورد نیاز کاربران است .
ارائه اطلاعات شخصی ، تجاری و عمومی نمونه هائی در این زمینه می باشد .
بدیهی است در صورتی که از این زاویه برنامه های وب را بررسی نمائیم به جایگاه مهم فن آوری های موجود به منظور دستیابی داده بیشتر پی خواهیم برد .
تقریبا" هر نوع برنامه وب پویا به نوعی در ارتباط با داده بوده و نیازمند مکانیزم هائی به منظور دستیابی داده می باشد .
هر پلت فرم به منظور دستیابی داده امکانات و پتانسیل های متعددی را در اختیار پیاده کنندگان نرم افزار قرار می دهد .
پس از ارائه دات نت ، پیاده کنندگانی که برای پیاده سازی نرم افزار ( 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 ( یک کنترل نسبت دهی داده ) پس از ذخیره کد فوق در فایلی با نام دلخواه ( مثلا" DataAcessExample1.aspx ) و اجرای آن خروجی زیر را خواهیم داشت .
در مثال فوق ، با استفاده از مجموعه امکانات موجود ( Layout و Style ) می توان شکل و قالب جدول را به دلخواه تغییر داد .
کنترل های منبع داده در ASP.NET 2.0 ( بخش اول ) یکی از مهمترین اهداف پیاده سازی صفحات وب ، ارائه اطلاعات مورد نیاز کاربران با توجه به اهداف عملیاتی یک وب سایت ( سرویس های شخصی و یا عمومی ) است .
شاید به همین دلیل باشد که یکی از چالش های مهم در خصوص طراحی صفحات ، ایجاد صفحاتی است که حاوی جدیدترین و در عین حال صحیح ترین اطلاعات باشند .
برای نمایش اطلاعات بر روی صفحات وب از چهار روش و یا منبع اساسی استفاده می گردد : درج محتویات ثابت به صورت دستی در بطن صفحات : در این روش محتویات مورد نظر مستقیما" و به صورت دستی در بطن یک صفحه وب قرار داده می شود.
برای تعریف یک ساختار نمایشی مناسب از تگ های Html استفاده می گردد .
به منظور تولید صفحات، می توان از ابزارهای تولید مختلفی نظیر FrontPage و یا حتی یک ادیتور ساده متنی استفاده نمود .
تولید محتویات با استفاده از اسکریپت های سمت سرویس گیرنده یا سرویس دهنده : در این روش به صورت اتوماتیک ، مجموعه ای از اسکریپت های سمت سرویس دهنده و یا سرویس گیرنده اجراء و اطلاعات مورد نیاز به منظور نمایش در صفحات وب را تولید می نمایند .
اطلاعات ممکن است به صورت ثابت و یا با بکارگیری مجموعه ای از توابع تعبیه شده در یک زبان برنامه نویسی و یا اشیاء سمت سرویس دهنده، تولید گردند.
پردازش بر روی داده های ورودی : در این روش با پردازش بر روی داده ورودی ، اطلاعات مورد نیاز به منظور نمایش بر روی صفحات وب تولید می گردد .
در واقع ، بر روی داده های خام پردازش مورد نیاز توسط اسکریپت ها انجام تا اطلاعات جدیدی برای نمایش بر روی صفحات وب تولید گردد .
بازیابی و پردازش اطلاعات از منابع داده خارجی : در این روش اطلاعات از منابع داده خارجی استخراج ( بازیابی ) و بر روی صفحات وب نمایش داده می شود .
اطلاعات شخصی ، سازمانی و ...
در منابع ذخیره سازی عمومی ذخیره و پس از بازیابی و در صورت لزوم انجام پردازش های مورد نیاز بر روی صفحات وب نمایش داده می شوند .
هدف اصلی صفحات ASP.NET کاهش و یا حذف فرآیند درج دستی اطلاعات درون صفحات وب است .
با ترکیب محتویات مورد نیاز به منظور نمایش در صفحات وب با تگ های Html ، نگهداری ، پشتیبانی و بهنگام سازی صفحات وب برای پیاده کنندگان مشکل می گردد .
بهنگام سازی و ویرایش محتویات صفحات وب به صورت دستی ، علاوه بر این که توجیه زمانی ندارد ، مشکلات خاص خود را برای پیاده کنندگان صفحات وب نیز به دنبال خواهد داشت .
بهترین گزینه به منظور نگهداری اطلاعات ، جداسازی آنان از صفحاتی است که قرار است آنان را نمایش دهند .
در چنین مواردی صرفا" در صفحات وب ، مکان و فرمت نمایش اطلاعات مشخص می گردد و اطلاعات در مکانی متمایز از صفحات وب نگهداری می گردند .
پس از درخواست یک صفحه ، اطلاعات از منابع داده بازیابی و در محل تعیین شده برروی صفحات وب قرار خواهند گرفت .
در واقع ، صفحات بطور اتوماتیک و پویا در زمان درخواست ایجاد و شامل آخرین اطلاعاتی می باشند که بصورت بلادرنگ و Live از منابع داده خارجی استخراج شده اند .
در ادامه به بررسی چهار روش فوق خواهیم پرداخت تا از این رهگذر جایگاه کنترل های منبع داده ارائه شده در ASP.NET 2.0 مشخص و با این نوع کنترل ها از دو بعد مفاهیم و عملیات آشنا شویم .
روش اول : درج محتویات ثابت به صورت دستی در بطن صفحات روش استاندارد به منظور ارائه اطلاعات درون صفحات وب ، درج مستقیم و دستی آنان درون صفحات وبی است که فرمت و قالب نمایش آنان توسط تگ های html مشخص شده است .
مثال : در مثال زیر اطلاعات به صورت دستی در یک صفحه وب درج و از تگ های Html به منظور تعریف فرمت نمایش آنان استفاده شده است .
روش دوم : تولید محتویات با استفاده از اسکریپت های سمت سرویس گیرنده یا سرویس دهنده در این روش ، اطلاعاتی که قرار است درون صفحات نمایش داده شوند ، توسط اسکریپت هائی که قادر به تولید محتویات ثابت و یا متغیر و پویا می باشند ، ایجاد می گردد.
به منظور تولید و نمایش اطلاعات در زمان نمایش صفحات وب ، می توان با توجه به جایگاه روتین Page_Laod از آن استفاده و پس از تولید اطلاعات توسط اسکریپت ، آنان را با اطلاعات ثابت ترکیب و در نهایت بر روی صفحات وب نمایش داد .
در چنین مواردی می توان فرآیند تولید و در نهایت نمایش اطلاعات را به خواسته های کاربران وابسته نمود تا در ادامه متناسب با خواسته آنان روتین های مورد نظر فعال و از طریق اسکریپت های موجود در آنان ، اطلاعات مورد نیاز تولید گردد.
مثال : در مثال زیر ، اسکریپت موجود در روتین Page_Load اجراء و پس از تولید اطلاعات مورد نیاز ، با استفاده از تگ های Html نحوه نمایش آنان بر روی صفحه وب مشخص می گردد .
در مثال فوق از تابع Date ویژوال بیسیک و کنترل های سرویس دهنده خروجی استفاده شده است .
پس از تولید اطلاعات توسط اسکریپت ، به منظور نمایش آنان در صفحه از کنترل سرویس دهنده خروجی استفاده شده است .
به کنترل فوق یک مشخصه ( id ) نسبت داده شده است تا امکان دستیابی به آن از طریق اسکریپت های سمت سرویس دهنده موجود در روتین Page_Load فراهم گردد.
اسکریپت فوق یک رشته از کاراکترهای متنی و Html را به خصلت Text کنترل label و با نام Paragraph نسبت می دهد.
توجه داشته باشید که در این مثال از هیچگونه تگ Html بطور مستقیم استفاده نشده است .
روش سوم : پردازش بر روی داده های ورودی در این روش ، اطلاعات اولیه توسط کاربر ارائه و در ادامه از آنان به منظور تولید خروجی استفاده می گردد .
در نهایت اطلاعات تولید شده با استفاده از کنترل ها ی سرویس دهنده خروجی بر روی صفحه وب نمایش داده می شود .
مثال : در مثال زیر ، یک کنترل TextBox در اختیار کاربر قرار داده شده است تا داده مورد نظر را وارد نماید .
پس از درج داده توسط کاربر و کلیک بر روی دکمه "Submit" ، روتین مربوطه فعال و پس از انجام عملیات مورد نظر ، نتایج به همراه تگ های Html در یک کنترل خروجی label نوشته می گردند .در این مثال از سه کنترل سرویس دهنده استفاده شده است : یک کنترل asp:Textbox جهت درج داده توسط کاربر یک کنترل asp:Button جهت فراخوانی روتین مربوطه یک کنترل asp:label جهت تعریف یک ناحیه خروجی به منظور نمایش اطلاعات تولید شده پس از کلیک بر روی دکمه مربوطه ، داده ورودی توسط کاربر در عدد هفت ضرب و حاصل با متن ثابت و تگ های Html ترکیب و در ناحیه خروجی مشخص شده توسط کنترل label نمایش داده می شود .
عملیات فوق توسط روتین MultiPly_Seven انجام می شود .
توجه داشته باشید که در این مثال تمام خروجی توسط اسکریپت تولید شده است .
روش چهارم : بازیابی و پردازش داده از طریق منابع داده خارجی در اکثر وب سایت ها اطلاعات به صورت مستقیم درون صفحات وب درج نمی گردد و یا ماحصل دریافت و پردازش بر روی داده کاربر نمی باشد .
در اینگونه سایت ها ، از فایل های خارجی و یا بانک های اطلاعاتی به عنوان منبع اولیه تامین داده استفاده می گردد .پس از درخواست یک صفحه وب ، اطلاعات از منابع داده خارجی استخراج و قبل از این که برای مرورگر ارسال گردند در مکان تعیین شده در صفحات وب قرار می گیرند.
اطلاعات نمایش داده شده بر روی صفحات وب همواره بهنگام می باشد چراکه محتویات اینگونه صفحات به صورت پویا و با بهره گیری از منابع اطلاعاتی خارجی ایجاد می گردد .
مثال : در این مثال از اطلاعات موجود در جدول Products مربوط به بانک اطلاعاتی TestDb.mdb به منظور نمایش اطلاعات بر روی صفحه وب استفاده شده است .
تمامی پردازش های سمت سرویس دهنده از طریق دو کنترل سرویس دهنده موجود بر روی صفحه انجام می شود : asp:GridView ، یک کنترل نمایش اطلاعات است و به یک منبع داده خارجی مرتبط می گردد .
کنترل فوق در نهایت به صورت اتوماتیک اطلاعات بازیابی شده را در قالب یک جدول ( حاوی سطرها و ستون ها) ، نمایش خواهد داد .