از پرشین بلاگ
دستیابی به داده از جمله عملیات مهم در زمان پیاده سازی هر نوع برنامه کامپیوتری است و برنامه های وب نیز از این قاعده مستثنی نمی باشند . امروزه صفحات وبی که در ارتباط با داده بوده و حاوی اطلاعاتی می باشند که از بانک های اطلاعاتی بازیابی و نمایش داده می شود به یکی از ارکان اصلی هر نوع برنامه تجاری تبدیل شده است . پیاده کنندگان برنامه های کامپیوتری خصوصا" برنامه های وب همواره برای پیاده سازی برنامه هائی که در ارتباط با داده می باشند با چالش های خاص خود مواجه بوده و آرزو می نمایند که بتوانند با صرف کمترین زمان و نوشتن حداقل کد لازم به اهداف خود نائل گردند . با ارائه 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 را نشان می دهد :
عملکرد شی
ایجاد یک اتصال به منبع و یا منابع مشخص شده 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 بشتر آشنا خواهیم شد .