مفاهیم اولیه ADO.NET
مقاله ای مفید و کامل
لینک پرداخت و دانلود *پایین مطلب*
فرمت فایل:Word (قابل ویرایش و آماده پرینت)
تعداد صفحه:92
چکیده:
برای استفاده مفیدتر از این مقاله، توصیه می گردد، مقاله معماری برنامه های مبتنی بر داده را در ابتدا مطالعه نمائید . ADO.NET ، نسل جدیدی از ADO شرکت ماکروسافت است . نسخه ADO ، با استفاده از مجموعه ای اشیاء ActiveX Data Object طراحی و پیاده سازی شده بود. ADO.NET گرچه در سطح ارائه پتانسیل های لازم در برخی موارد دارای شباهت هائی با ADO است ولی از نظر مدل برنامه نویسی دارای ساختاری کاملا" متفاوت( نسبت به ADO ) است.
تعریف ADO.NET
- NET، مجموعه ای از کلاس ها بمنظور کار با داده ها است.
بموازات رشد اینترنت ، طراحی و پیاده سازی برنامه های مبتنی بر وب به امری متداول و نیازی همگانی مطرح شده است . در این راستا برنامه های متعددی ، از XML بمنظور ارسال اطلاعات خود در شبکه استفاده کرده و هر روز به تعداد این برنامه ها نیز اضافه می گردد. ADO.NET ، یک مدل برنامه نویسی مناسب بمنظور یکپارچگی بین ویژگی های XML و ADO.NET در فریمورک دات نت را ارائه می نماید.
مزایای ADO.NET
تکنولوژی فوق نسبت به ADO دارای مزایای زیر است :
- Interoperability . تکنولوژی ADO.NET از XML بعنوان فرمت ارسال اطلاعات از یک منبع داده به مقصد مورد نظر استفاده می نماید ( داده های مستقرشده در حافظه محلی)
- Maintainability . بموازات افزایش کاربران یک برنامه ، ما شاهد بروز مسائلی در رابطه با منابع موجود در سیستم خواهیم بود. با استفاده از یک برنامه N-Tire ، می توان منطق برنامه را بین چندین Tire اضافی توزیع نمود. معماری ADO.NET ، از حافظه Cache بمنظور نگهداری نسخه هائی از داده استفاده و بدین ترتیب امکان بهره برداری از اطلاعات فوق برای سایر Tire های اضافی فراهم می گردد .
- Programmability . مدل برنامه نویسی ADO.NET کاملا" از Strongly typed data حمایت و باعث می گردد که که کدها مختصرتر و با شفافیت خاصی، بسادگی نوشته گردند .
- Performance . تکنولوژی ADO.NET این امکان را فراهم می آورد تا عملیات مازاد در ارتباط با تبدیل نوع داده ها ،حذف گردد( از Strongly typed data استفاده می گردد ) .
- Scalability . مدل برنامه نویسی ADO.NET باعث تشویق برنامه نویسان برای صرفه جوئی در منابع سیستم و ارائه آنان برای برنامه های در حال اجراء بر روی بستر وب می گردد. با توجه به اینکه داده در حافظه محلی Cache می گردد، ضرورتی به نگهداری بلاک هائی از بانک اطلاعاتی و یا نگهداری اتصالات فعال با بانک اطلاعاتی برای مقاطع زمانی بعد ، وجود نخواهد داشت .
Namespace های مرتبط با داده
فریمورک دات نت ، پتانسیل ها ی( عملیات ) خود را به چندین Namespace تقسیم و ADO.NET نیز از این قاعده مستثنی نخواهد بود . ADO.NET عمدتا" در Namespace با نام System.Data ، پیاده سازی شده است.Namespace فوق،بصورت فیزیکی در اسمبلی System.Data.dll قرار دارد. برخی از بخش های ADO.NET در Namespace با نام System.Xml قرار دارند ( مثلا" کلاس XmlDataDocument ) مشخصات هر یک از Namespace های مرتبط با داده ها بشرح زیر می باشد :
- System.Data ، هسته ADO.NET بوده و شامل کلاس هائی است که بخش غیرمتصل معماری ADO.NET را شکل می دهد ( کلاس DataSet )
- System.Data.Common ، کلاس های کاربردی و اینترفیس مورد نیاز برای NET Data Providres . را فراهم می نماید.
- System.Data.sqlclient ، ارائه دهنده داده: SQL Server.Net Data Provider
- System.data.OleDB ، ارائه دهنده : OLEDB.NET Data Provider
- System.Data.sqltypes ، کلاس ها و ساختارهای مورد نیاز برای Native SQL Server Data Types را ارائه می نماید.( یک جایگزین سریع و ایمن برای داده های نوع دیگر).
- System.Xml ، کلاس ها واینترفیس های لازم بمنظور حمایت استاندارد د از پردازش های مبتنی بر XML را ارائه می نماید. ( مثلا" کلاس XmlDataDocument)
تغییرات ADO و ADO.NET
تغییرات متعددی در ADO.NET نسبت به ADO اعمال شده است . اغلب تغییرات فوق ، با توجه به مطالعات انجام شده در رابطه با موارد مثبت و منفی ADO صورت گرفته است . دستاورد این تغییرات، قدرت و انعطاف مطلوب برای ADO.NET است .
با توجه به اینکه تمامی ارائه دهندگان داده دات نت، عملیات تراکنشی را ارائه نمی نمایند ، ADO.NET ، پتانسیل های خود را به کلاس های مجزائی تقسیم و در اختیار قرار می دهد، بدین ترتیب شی اتصال ADO.NET بمراتب کم حجم تر نسبت به شی اتصال ADO خواهد بود.
Recordset در ADO ، یک شی بسیار بزرگ است . شی فوق، امکان حمایت از چندین نوع Cursor را فراهم می نماید ( از نوع سریع تا نوع سمت سرویس گیرنده غیر متصل) . سفارشی نمودن تمام امکانات شی فوق، مشکل و در برخی موارد غیرممکن است. ADO.NET ، پتانسیل های Recordset مربوط به ADO را به چندین کلاس تفسیم کرده است .مثلا" DataReader معادل یک Cursor سریع ، DataSet یک مدل غیرمتصل Cache شده با امکان ردیابی ، ثبت و کنترل نسبت دهی و DataAdapter قابلیت سفارشی نمودن نحوه ذخیره سازی و بهنگام سازی داده ها و اعمال تغییرات در یک DataSet را دارا است .
مدل اشیاء ADO.NET
مدل اشیاء ADO.NET شامل دو بخش اصلی است :
- کلاس های DataSet .کلاس های فوق ، این امکان را فراهم می نمایند که داده ها را در یک Cache غیر متصل ، ذخیره و مدیریت کرد. DataSet مستقل از هر نوع منبع داده بوده و بنابراین ویژگی های آن برای تمامی برنامه ها در دسترس و قابل استفاده خواهد بود ( صرفنظر از محلی که داده ها از آنجا سرچشمه می گیرند ) .
- کلاس های NET Data Provider . کلاس های فوق ، مختص یک منبع داده خاص می باشند. بنابراین NET Data Providers . ، می بایست برای یک منبع داده ئی خاص نوشته گردد و صرفا" با همان منبع داده ، کار نماید . کلاس های فوق، قابلیت اتصال به یک منبع داده ،بازیابی از منبع داده و بهنگام سازی داده های موجود در یک منبع داده را فراهم می نمایند .
مدل اشیاء ADO.NET ، شامل کلاس های زیر است :
- SQL Server .NET Data Provider
- OLE DB .NET Data Provider
- other .NET Data Providers
استفاده از کلاس های ADO.NET در مدل متصل
NET Data Provider . ، کلاس های مورد نیاز ADO.NET را بمنظور استفاده در سناریوی متصل (Connected) ارائه می نماید. NET data Provider. ها ، بگونه ای طراحی شده که کم حجم و حداقل لایه بین کد مربوطه و منبع داده ایجاد و بدین ترتیب کارائی سیستم افزایش خواهد یافت . فریمورک دات نت دارای دو Provider است :
- SQL Server .NET ، امکان دستیابی بهینه به بانک های اطلاعاتی SQL server 2000 و SQL Server 7 را فراهم می نماید . بمنظور استفاده از Provider فوق، می بایست از Namespace با نام System.Data.sqlclient در برنامه مورد نظر استفاده گردد . استفاده از Provider فوق در مقایسه با OLE DB.NET دارای کارائی بمراتب بیشتری است (چون از طریق یک OLE DB و یا ODBC عبور داده نمی شود) .
- OLE DB.NET ، امکان دستیابی به SQL Server 6.5 و سایر بانک های اطلاعاتی نظیر Oracle , Sybase , DB2/400 و Access را فراهم می نماید . بمنظور استفاده از Provider فوق، می بایست از Namespace با نام System.Data.OleDb در برنامه مورد نظر استفاده گردد .
کلاس های هر یک از Data Provider ها، از مدل رایج اشیاء ADO.NET تبعیت می نمایند . در SQL Server .NET Data Provider ، اسامی کلاس ها با پیشوند sql شروع می شود . مثلا" کلاس مربوطه به Connection دارای نام sqlConnection است . در OLE DB.NET Provider ، اسامی کلاس ها با پیشوند OleDb شروع می گردد . مثلا" کلاس Connection دارای نام OleDbConnection است .
در آینده NET Date Provider . ، بیشتر و با پیشوندهای دیگری ایجاد خواهند شد .
در فهرست زیر پیشوندهای متفاوت بصورت Xxx نشان داده شده اند :
- XxxConnection ، باعث ایجاد یک اتصال( ارتباط) به منبع داده می شود . مثلا" کلاس sqlConnection ، باعث ایجاد یک اتصال به منبع داده ئی از نوع SQL Server می گردد .
- XxxCommand ، باعث اجرای یک دستور از منبع داده می گردد . مثلا" کلاس sqlCommand می تواند باعث اجرای یک Stored Procedure و یا یک عبارت SQL در منبع داده ئی از نوع SQL Server می گردد .
- XxxDataReader ، کلاس فوق، باعث خواندن مجموعه ای داده از یک منبع داده ، بصورت فقط خواندنی و صرفا" بسمت جلو می گردد .مثلا" کلاس sqlDataReader ، باعث خواندن سطرهائی از جداول یک منبع داده ئی از نوع SQL Server می گردد . کلاس فوق، توسط متد ExecuteReader مربوط به کلاس XxxCommand بعنوان نتیجه اجرای یک عبارت SELECT SQL برگردانده می گردد .
مثال : کلاس XxxDataReader ، امکان دستیابی فقط خواندنی و صرفا" بسمت جلو در ارتباط با داده های موجود در یک منبع داده را فراهم می نماید. مثلا" برای استفاده از sqlDataReader برای خواندن داده از یک بانک اطلاعاتی SQL server ، می بایست مراحل زیر را انجام داد.
- یک شی sqlConnection ، بمنظور اتصال ( ارتباط) به بانک اطلاعاتی SQL Server تعریف نمائید.
- یک شی sqlCommand تعریف که شامل عبارت SQL SELECT برای پرس و جو(Query) در ارتباط با بانک اطلاعاتی باشد .
- یک شی sqlDataReader تعریف نمائید.
- فعال نمودن (Open) شی sqlConnection
- اجرای شی sqlCommand با استفاده از متد ExecuteReader و نسبت دهی نتایج به شی sqlDataReader
- استفاده از متد Read مربوط به شی sqlDataReader برای حرکت بسمت جلو در طول داده ها و پردازش سطرهای مربوطه
- بستن sqlDataReader
- بستن sqlConnection
استفاده از ADO.NET در مدل غیرمتصل
کلاس های ADO.NET که در مدل غیر متصل استفاده می گردد توسط NET Data Providers . ، ارائه و در Namespace با نام System.Data موجود می باشند. فهرست زیر کلاس هائی استفاده شده در مدل غیر متصل ، را نشان می دهد :
- XxxDataAdapter ، با استفاده از کلاس های Connection , DataReader و Coomand می توان یک DataSet را مدیریت نمود.مثلا" کلاس sqlDataAdapter ، قادر به مدیریت بین یک Dataset و یک بانک اطلاعاتی SQL Server 7 است .
- XxxConnection ، ارتباطی با یک منبع داده ئی خاص را ایجاد ( برقرار) می نماید . مثلا" کلاس sqlConnection ،باعث برقراری یک اتصال با منبع داده ئی از نوع SQL Server می گردد .
- XxxCommand ، قادر به اجرای Stored Procedure و یا عبارات SQL در یک منبع داده ئی از نوع SQL Server می باشد .
- XxxDataReader ، کلاس فوق، باعث خواندن مجموعه ای داده از یک منبع داده ، بصورت فقط خواندنی و صرفا" بسمت جلو می گردد .مثلا" کلاس sqlDataReader ، باعث خواندن سطرهائی از جداول یک منبع داده ئی از نوع SQL Server می گردد . کلاس فوق، توسط متد ExecuteReader مربوط به کلاس XxxCommand بعنوان نتیجه اجرای یک عبارت SELECT SQL برگردانده می گردد .
مثال : مراحل زیر نحوه کار در یک محیط غیر متصل را نشان می دهد :
- باز نمودن یک اتصال
- پر نمودن DataSet با استفاده از متد Fill مربوط به DataAdapter
- بستن اتصال
- پردازش DataSet ( مرتب سازی ، فیلترسازی، خلاصه سازی، نمایش داده ها در کنترل های ویندوز و وب ) . DataSet بصورت خودکار هرگونه تغییرات را ردیابی و ثبت خواهد کرد .
- باز نمودن اتصال .، می توان از همان اتصالی که قبلا" ایجاد شده بود استفاده گردد .
- بهنگام سازی منبع داده با در نظر گرفتن تغییراتی که در DataSet اعمال شده است ( از طریق متد Upadate مربوط به DataAdapter ).
- بستن اتصال
DataSet و یا DataReader ؟
DataReader و DataSet دو شی ارائه شده در ADO.NET به منظور دستیابی به داده می باشند . اشیاء فوق امکانات متعددی برای دستیابی به داده در برنامه های دات نت را در اختیار پیاده کنندگان قرار می دهند . Scott Mitchell اخیرا" در مقاله ای جامع که بر روی سایت http://www.4guysfromrolla.com منشتر شده است به بررسی دو شی فوق پرداخته و آنان را از زوایای متفاوتی مقایسه و در نهایت به این نتیجه رسیده است که استفاده از DataReader در برنامه های وب دارای مزایای بمراتب بیشتری نسبت به DataSet است . برای آشنائی با دلایل وی برای رسیدن به نتیجه فوق ، خلاصه ای از مقاله وی را در ادامه با هم مطالعه می کنیم .
و...
دانلود مقاله مفاهیم اولیه ADO.NET