مفاهيم اوليه ADO.NET
مفاهيم اوليه ADO.NET
مفاهيم اوليه ADO.NET
برای استفاده مفيدتر از اين مقاله، توصيه می گردد، مقاله معماری برنامه های مبتنی بر داده را در ابتدا مطالعه نمائيد . ADO.NET ، نسل جديدی از ADO شرکت ماکروسافت است . نسخه ADO ، با استفاده از مجموعه ای اشياء ActiveX Data Object طراحی و پياده سازی شده بود. ADO.NET گرچه در سطح ارائه پتانسيل های لازم در برخی موارد دارای شباهت هائی با ADO است ولی از نظر مدل برنامه نويسی دارای ساختاری کاملا" متفاوت( نسبت به ADO ) است.
بموازات رشد اينترنت ، طراحی و پياده سازی برنامه های مبتنی بر وب به امری متداول و نيازی همگانی مطرح شده است . در اين راستا برنامه های متعددی ، از XML بمنظور ارسال اطلاعات خود در شبکه استفاده کرده و هر روز به تعداد اين برنامه ها نيز اضافه می گردد. ADO.NET ، يک مدل برنامه نويسی مناسب بمنظور يکپارچگی بين ويژگی های XML و ADO.NET در فريمورک دات نت را ارائه می نمايد.
• 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 می گردد، ضرورتی به نگهداری بلاک هائی از بانک اطلاعاتی و يا نگهداری اتصالات فعال با بانک اطلاعاتی برای مقاطع زمانی بعد ، وجود نخواهد داشت .
• 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.NET ، پتانسيل های خود را به کلاس های مجزائی تقسيم و در اختيار قرار می دهد، بدين ترتيب شی اتصال ADO.NET بمراتب کم حجم تر نسبت به شی اتصال ADO خواهد بود.
Recordset در ADO ، يک شی بسيار بزرگ است . شی فوق، امکان حمايت از چندين نوع Cursor را فراهم می نمايد ( از نوع سريع تا نوع سمت سرويس گيرنده غير متصل) . سفارشی نمودن تمام امکانات شی فوق، مشکل و در برخی موارد غيرممکن است. ADO.NET ، پتانسيل های Recordset مربوط به ADO را به چندين کلاس تفسيم کرده است .مثلا" DataReader معادل يک Cursor سريع ، DataSet يک مدل غيرمتصل Cache شده با امکان رديابی ، ثبت و کنترل نسبت دهی و DataAdapter قابليت سفارشی نمودن نحوه ذخيره سازی و بهنگام سازی داده ها و اعمال تغييرات در يک DataSet را دارا است .
• کلاس های 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
• 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
• 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 ).
• بستن اتصال
تعريف ADO.NET |
ADO.NET، مجموعه ای از کلاس ها بمنظور کار با داده ها است. |
مزايای ADO.NET
• 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 های مرتبط با داده
• 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.NET بمراتب کم حجم تر نسبت به شی اتصال ADO خواهد بود.
Recordset در ADO ، يک شی بسيار بزرگ است . شی فوق، امکان حمايت از چندين نوع Cursor را فراهم می نمايد ( از نوع سريع تا نوع سمت سرويس گيرنده غير متصل) . سفارشی نمودن تمام امکانات شی فوق، مشکل و در برخی موارد غيرممکن است. ADO.NET ، پتانسيل های Recordset مربوط به ADO را به چندين کلاس تفسيم کرده است .مثلا" DataReader معادل يک Cursor سريع ، DataSet يک مدل غيرمتصل Cache شده با امکان رديابی ، ثبت و کنترل نسبت دهی و DataAdapter قابليت سفارشی نمودن نحوه ذخيره سازی و بهنگام سازی داده ها و اعمال تغييرات در يک DataSet را دارا است .
مدل اشياء 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 در مدل متصل
• 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 در مدل غيرمتصل
• 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 ).
• بستن اتصال
مقالات مرتبط
تازه های مقالات
ارسال نظر
در ارسال نظر شما خطایی رخ داده است
کاربر گرامی، ضمن تشکر از شما نظر شما با موفقیت ثبت گردید. و پس از تائید در فهرست نظرات نمایش داده می شود
نام :
ایمیل :
نظرات کاربران
{{Fullname}} {{Creationdate}}
{{Body}}