عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
مفاهيم اوليه ADO.NET |
مديريت وب |
22155 |
34 |
4.1 |
با توجه به جایگاه داده در عصر حاضر و لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و خدمات خود را از طریق سایت www.fabak.ir به مخاطبان محترم عرضه می نماید
 |
ADO
مفاهيم اوليه ADO.NET
برای استفاده مفيدتر از اين مقاله،
توصيه می گردد، مقاله
معماری برنامه های مبتنی بر
داده را
در ابتدا مطالعه نمائيد .
ADO.NET
، نسل جديدی از ADO
شرکت ماکروسافت است . نسخه ADO
، با استفاده از مجموعه ای اشياء
ActiveX Data Object طراحی و پياده سازی شده بود.
ADO.NET گرچه در سطح ارائه پتانسيل های لازم در
برخی موارد دارای شباهت هائی با ADO است ولی از نظر مدل
برنامه نويسی دارای ساختاری کاملا" متفاوت( نسبت به ADO
) است.
تعريف
ADO.NET |
ADO.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
).
-
بستن اتصال
