PDA

View Full Version : مقاله - تفاوت ADO و ADO.Net



علیرضا مداح
جمعه 02 اردیبهشت 1384, 17:38 عصر
مقایسه ای بین ADO و ADO.Net

شما میتواند با قابلیتهای ADO.Net از طریق مقایسه آنها با تک تک ویژگیهای <span dir=ltr>ADO(ActiveX Data Objects)</span> آشنایی پیدا کنید .
در ADO ذخیره و نمایش اطلاعات از طریق Recordset صورت میگیرد ، اما در ADO.Net از Dataset در جهت انجام این کار استفاده میشود ، اما توجه داشته باشید که Dataset و Recordset تفاوتهای بسیار زیادی با یکدیگر دارند .

تعداد جداول
یک رکوردست همانند یک جدول است و اگر قرار باشد تا چند جدول را در خود جای دهد میبایست از کوئری Join که اطلاعات را از جداول مختلف جمع آوری کرده و در یک جدول نهایی قرار میدهد ، استفاده نمود .
بر خلاف رکوردست ، دیتاست حاوی کالکشنی از یک یا چند جدول میباشد . در دیتاست هر یک از جدول ها یک DataTable نامیده شده و در حقیقت یک شیء DataTable میباشند . اگر یک دیتاست حاول چند جدول مختلف باشد به نوعی دارای چند شی ء DataTable نیز خواهد بود که هر یک از این اشیاء به یک table و یا View از یک دیتابیس مربوط میشود و دیتاست ساختار آن Table و یا View را از روی دیتابیس اصلی به نوعی کپی میکند .
همچنین دیتاست دارای Relationship هم میباشد . یک Relationship در دیتاست مشابه به یک کلیدخارجی (Foreign-Key) در دیتابیس میباشد که سطرهای جداول مختلف را به دیگر مربوط ساخته و پیوند میدهد . به طور مثال اگر در یک دیتابیس جدولی درباره سرمایه گذاران و جدولی دیگر درباره سهام آنها وجود داشته باشد میتوان سطرهای موجود در جدول سرمایه گذاران را به سطرهای مربوطه در جدول سهام پیوند داد .
به دلیل اینکه دیتاست توانایی نگهداری و کار با جداول مختلف و همچنین جدا از هم را دارا بوده و قادر به نگهداری اطلاعات مربوط به Relationship بین آنها میباشد ، قابلیت نگهداری ساختارهای داده قویتری نسبت به رکوردست را دارا میباشد . (مانند امکان داشتن تعداد بسیار زیادی Relationship بین جداول مختلف).
پیمایش داده ها و مکان نماها
در ADO شما میتوانید به طور پی در پی و ترتیبی سطرهای موجود در رکوردست را توسط متد MoveNext پیمایش نمایید . اما در ADO.Net سطرها توسط کالکشنهایی معرفی میگردند که شما میتوانید به پیمایش در سرتاسر آنها پرداخته (مانند هر کالکشن دیگری) و یا به سطر مورد نظر خود از طریق ایندکس کلید ترتیبی و یا اصلی دسترسی پیدا نمایید . همچنین اشیاء DataRelation اطلاعات مربوط به رکوردهای Master و Detail را نگهداری کرده و متدهایی را جهت دریافت رکوردهایی که شما هم اکنون با آنها کار میکنید در اختیارتان میگذارد .
مکان نما(Cursor) یک عنصر مربوط به دیتابیس میباشد که پیمایش رکوردها را کنترل کرده و هچنین قابلیت آپدیت کردن داده ها را داشته و امکانی در جهت نمایش تغییراتی که به وسیله کاربران دیگر در بانک اعمال شده است را دارا میباشد . ADO.Net به طور ذاتی دارای مکان نماها نمیباشد ، ولی در عوض دارای کلاسهایی بوده که کارکرد مکان نما ها را برای شما فراهم میسازد . به طور مثال کارکرد مکان نماهای Read-Only و Forward-Only در شی ء DataReader موجود میباشند . برای اطلاعات بیشتر در مورد کارکرد مکان نماها مطلب Data Access Technologies (http://msdn.microsoft.com/library/en-us/vsent7/html/dvconChoosingRightDataAccessTechnology.asp) را مورد مطالعه قرار دهید .
در ADO.Net شما تنها زمان انجام عملیاتی مانند نمایش و یا آپدیت کردن دیتابیس به آن متصل میشوید . شما میتوانید سطرها را در دیتاست ذخیره کرده و سپس با آنها کار کنید بدون اینکه به منبع داده متصل باشید .رکوردست هم میتواند دسترسی به صورت دیسکانکت شده را فراهم سازد اما ADO اصولا" در جهت دسترسی به صورت کانکت شده طراحی گردیده است .
هیچ تفاوت قابل توجهی بین پردازش داده ها به صورت دیسکانکت شده بین ADO و ADO.Net وجود ندارد . در ADO شما قادر خواهید بود تا از طریق فراخوانی OLE DB Provider با دیتابیس ارتباط برقرار نمایید . در ADO.Net هم شما میتوانید از طریق Data Adapter های مختلف که فراخوانهایی را به OLE DB provider و یا APIs provided به وسیله منبع اصلی داده فراهم می آورد ، به دیتابیس متصل شوید . این Data Adapter ها عبارتند از :

OleDbDataAdapter (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbDataAdapterClassTopic.asp )
SqlDataAdapter (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlDataAdapterClassTopic.a sp)
OdbcDataAdapter (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOdbcOdbcDataAdapterClassTopic.asp)
OracleDataAdapter (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOracleClientOracleDataAdapterClassT opic.asp)


تفاوت دیگر این است که Data Adapter ها به شما این امکان را میدهند تا چگونگی انتقال تغییرات از دیتاست به دیتابیس را از طریق بهینه سازی کارایی و همچنینی اعمال معنتبرسازی داده ها(Data Validation) ، کنترل نمایید .

به اشتراک گذاری داده ها میان برنامه ها
انتقال دادن یک دیتاست در ADO.Net بین برنامه های مختلف بسیار ساده تر از انتقال یک رکوردست دیسکانکت شده میباشد . جهت انتقال یک رکوردست دیسکانکت شده در ADO از یک مؤلفه به مؤلفه دیگر ، شما از COM marshalling استفاده مینمایید . برای انتقال داده در ADO.Net ، شما دیتاست را که توانایی انتقال یک جریان XML را دارا میباشد ، به کار میگیرید . انتقال فایلهای XML مزیت های زیر را به دنبال خواهند داشت :
1 : نوع داده های غنی تر
COM marshalling مجموعه محدودی از نوع داده های مختلف را فراهم می آورد که به وسیله استاندارد COM تعیین شده اند . به دلیل اینکه انتقال داده های دیتاست مبتنی بر فرمت XML هستند ، هیچ محدودیتی در نوع داده ها وجود نخواهد داشت .

2 - کارایی(Performance)
انتقال یک رکوردست حجیم در ADOو یایک دیتاست بزرگ در ADO.Net میتواند باعث تحلیل رفتن منابع شبکه شود و همینطور که مقدلر داده ها زیاد میشود فشار بر روی شبکه نیز افزونی میابد .در ADO.Net نیازی به تبدیل نوع داده ها نمیباشد . درADO که برای انتقال مجموعه رکوردها میان مؤلفه های مختلف ، به کارگیری COM marshalling ضروری است ، نوع داده های ADO باید به نوع داده های COM تبدیل گردند .

نفوذ فایروال ها
یک فایروال میتواند در انتقال یک رکوردست دیسکانکت شده بین دو مؤلفه ، مداخله کند . به خاطر داشته باشید که به نوعی فایروال ها جهت اجازه دادن به گذشتن متن های HTML پیکربندی شده اند و از عبور درخواست های در سطح سیستم (همانند COM marshalling) جلوگیری به عمل می آورند .
به دلیل اینکه رد و بدل کردن دیتاست ها در ADO.Net بین دو مؤلفه از طریق XML صورت میگیرد ، فایروالها به آنها اجازه گذر را میدهند .

منبع : Microsoft

Hamedm
جمعه 02 اردیبهشت 1384, 17:52 عصر
ممنون :flower: :flower:

مهدی کرامتی
جمعه 02 اردیبهشت 1384, 19:05 عصر
جالب بود. مرسی :flower:

M-Gheibi
جمعه 02 اردیبهشت 1384, 23:58 عصر
مفید بود :flower:

Behrouz_Rad
شنبه 03 اردیبهشت 1384, 00:08 صبح
مرسی. :flower:
بنده هم سعی می کنم مقالات جامع تری در زمینه ADO.NET آماده و ارسال کنم. :)

بابک زواری
شنبه 03 اردیبهشت 1384, 01:13 صبح
دوستان اگر مقالاتی آموزشی در این زمینه دارن که میتونه به سایر دوستان یاد بده
که در دات نت چطور میشه به داده ها دسترسی پیدا کنند و اموری از قبیل اضافه
کردن رکورد ، اصلاح و حذف و استفاده از چند جدول و . . . انجام بدن ممنون میشم
اینجا بذارن.
هدف از ایجاد این تاپیک در بخش VB آشنا کردن دوستان با تکنولوژی جدید هست و
اینکه این گروه از قافله عقب نمونن و بتون آرام آرام به سوی محیط جدید سوئیچ کنن
یا حداقل اطلاعاتی داشته باشن.
ممنون

حامد مصافی
پنج شنبه 08 اردیبهشت 1384, 18:38 عصر
ممنون آقای مداح
جالب بود :flower:

afshin61
شنبه 10 اردیبهشت 1384, 10:51 صبح
مرسی .... خیلی ممنون

ma-ra-2005
دوشنبه 12 اردیبهشت 1384, 17:27 عصر
عالی بود ..مرسی :موفق:

مهدی
دوشنبه 12 اردیبهشت 1384, 18:59 عصر
مرسی. فقط یه پیشنهاد هم داشتم که اگر بصورت PDF یا DOC هم upload کنین مقاله رو فکر میکنم بد نباشه :)
بازم ممنون :flower:

majjjj
یک شنبه 16 اردیبهشت 1386, 06:27 صبح
مقایسه ای بین ADO و ADO.Net

شما میتواند با قابلیتهای ADO.Net از طریق مقایسه آنها با تک تک ویژگیهای <span dir=ltr>ADO(ActiveX Data Objects)</span> آشنایی پیدا کنید .
در ADO ذخیره و نمایش اطلاعات از طریق Recordset صورت میگیرد ، اما در ADO.Net از Dataset در جهت انجام این کار استفاده میشود ، اما توجه داشته باشید که Dataset و Recordset تفاوتهای بسیار زیادی با یکدیگر دارند .

تعداد جداول
یک رکوردست همانند یک جدول است و اگر قرار باشد تا چند جدول را در خود جای دهد میبایست از کوئری Join که اطلاعات را از جداول مختلف جمع آوری کرده و در یک جدول نهایی قرار میدهد ، استفاده نمود .
بر خلاف رکوردست ، دیتاست حاوی کالکشنی از یک یا چند جدول میباشد . در دیتاست هر یک از جدول ها یک DataTable نامیده شده و در حقیقت یک شیء DataTable میباشند . اگر یک دیتاست حاول چند جدول مختلف باشد به نوعی دارای چند شی ء DataTable نیز خواهد بود که هر یک از این اشیاء به یک table و یا View از یک دیتابیس مربوط میشود و دیتاست ساختار آن Table و یا View را از روی دیتابیس اصلی به نوعی کپی میکند .
همچنین دیتاست دارای Relationship هم میباشد . یک Relationship در دیتاست مشابه به یک کلیدخارجی (Foreign-Key) در دیتابیس میباشد که سطرهای جداول مختلف را به دیگر مربوط ساخته و پیوند میدهد . به طور مثال اگر در یک دیتابیس جدولی درباره سرمایه گذاران و جدولی دیگر درباره سهام آنها وجود داشته باشد میتوان سطرهای موجود در جدول سرمایه گذاران را به سطرهای مربوطه در جدول سهام پیوند داد .
به دلیل اینکه دیتاست توانایی نگهداری و کار با جداول مختلف و همچنین جدا از هم را دارا بوده و قادر به نگهداری اطلاعات مربوط به Relationship بین آنها میباشد ، قابلیت نگهداری ساختارهای داده قویتری نسبت به رکوردست را دارا میباشد . (مانند امکان داشتن تعداد بسیار زیادی Relationship بین جداول مختلف).
پیمایش داده ها و مکان نماها
در ADO شما میتوانید به طور پی در پی و ترتیبی سطرهای موجود در رکوردست را توسط متد MoveNext پیمایش نمایید . اما در ADO.Net سطرها توسط کالکشنهایی معرفی میگردند که شما میتوانید به پیمایش در سرتاسر آنها پرداخته (مانند هر کالکشن دیگری) و یا به سطر مورد نظر خود از طریق ایندکس کلید ترتیبی و یا اصلی دسترسی پیدا نمایید . همچنین اشیاء DataRelation اطلاعات مربوط به رکوردهای Master و Detail را نگهداری کرده و متدهایی را جهت دریافت رکوردهایی که شما هم اکنون با آنها کار میکنید در اختیارتان میگذارد .
مکان نما(Cursor) یک عنصر مربوط به دیتابیس میباشد که پیمایش رکوردها را کنترل کرده و هچنین قابلیت آپدیت کردن داده ها را داشته و امکانی در جهت نمایش تغییراتی که به وسیله کاربران دیگر در بانک اعمال شده است را دارا میباشد . ADO.Net به طور ذاتی دارای مکان نماها نمیباشد ، ولی در عوض دارای کلاسهایی بوده که کارکرد مکان نما ها را برای شما فراهم میسازد . به طور مثال کارکرد مکان نماهای Read-Only و Forward-Only در شی ء DataReader موجود میباشند . برای اطلاعات بیشتر در مورد کارکرد مکان نماها مطلب Data Access Technologies (http://msdn.microsoft.com/library/en-us/vsent7/html/dvconChoosingRightDataAccessTechnology.asp) را مورد مطالعه قرار دهید .
در ADO.Net شما تنها زمان انجام عملیاتی مانند نمایش و یا آپدیت کردن دیتابیس به آن متصل میشوید . شما میتوانید سطرها را در دیتاست ذخیره کرده و سپس با آنها کار کنید بدون اینکه به منبع داده متصل باشید .رکوردست هم میتواند دسترسی به صورت دیسکانکت شده را فراهم سازد اما ADO اصولا" در جهت دسترسی به صورت کانکت شده طراحی گردیده است .
هیچ تفاوت قابل توجهی بین پردازش داده ها به صورت دیسکانکت شده بین ADO و ADO.Net وجود ندارد . در ADO شما قادر خواهید بود تا از طریق فراخوانی OLE DB Provider با دیتابیس ارتباط برقرار نمایید . در ADO.Net هم شما میتوانید از طریق Data Adapter های مختلف که فراخوانهایی را به OLE DB provider و یا APIs provided به وسیله منبع اصلی داده فراهم می آورد ، به دیتابیس متصل شوید . این Data Adapter ها عبارتند از :

OleDbDataAdapter (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbDataAdapterClassTopic.asp )
SqlDataAdapter (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlDataAdapterClassTopic.a sp)
OdbcDataAdapter (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOdbcOdbcDataAdapterClassTopic.asp)
OracleDataAdapter (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOracleClientOracleDataAdapterClassT opic.asp)


تفاوت دیگر این است که Data Adapter ها به شما این امکان را میدهند تا چگونگی انتقال تغییرات از دیتاست به دیتابیس را از طریق بهینه سازی کارایی و همچنینی اعمال معنتبرسازی داده ها(Data Validation) ، کنترل نمایید .

به اشتراک گذاری داده ها میان برنامه ها
انتقال دادن یک دیتاست در ADO.Net بین برنامه های مختلف بسیار ساده تر از انتقال یک رکوردست دیسکانکت شده میباشد . جهت انتقال یک رکوردست دیسکانکت شده در ADO از یک مؤلفه به مؤلفه دیگر ، شما از COM marshalling استفاده مینمایید . برای انتقال داده در ADO.Net ، شما دیتاست را که توانایی انتقال یک جریان XML را دارا میباشد ، به کار میگیرید . انتقال فایلهای XML مزیت های زیر را به دنبال خواهند داشت :
1 : نوع داده های غنی تر
COM marshalling مجموعه محدودی از نوع داده های مختلف را فراهم می آورد که به وسیله استاندارد COM تعیین شده اند . به دلیل اینکه انتقال داده های دیتاست مبتنی بر فرمت XML هستند ، هیچ محدودیتی در نوع داده ها وجود نخواهد داشت .

2 - کارایی(Performance)
انتقال یک رکوردست حجیم در ADOو یایک دیتاست بزرگ در ADO.Net میتواند باعث تحلیل رفتن منابع شبکه شود و همینطور که مقدلر داده ها زیاد میشود فشار بر روی شبکه نیز افزونی میابد .در ADO.Net نیازی به تبدیل نوع داده ها نمیباشد . درADO که برای انتقال مجموعه رکوردها میان مؤلفه های مختلف ، به کارگیری COM marshalling ضروری است ، نوع داده های ADO باید به نوع داده های COM تبدیل گردند .

نفوذ فایروال ها
یک فایروال میتواند در انتقال یک رکوردست دیسکانکت شده بین دو مؤلفه ، مداخله کند . به خاطر داشته باشید که به نوعی فایروال ها جهت اجازه دادن به گذشتن متن های HTML پیکربندی شده اند و از عبور درخواست های در سطح سیستم (همانند COM marshalling) جلوگیری به عمل می آورند .
به دلیل اینکه رد و بدل کردن دیتاست ها در ADO.Net بین دو مؤلفه از طریق XML صورت میگیرد ، فایروالها به آنها اجازه گذر را میدهند .

منبع : Microsoft
با سلام
خسته نباشید

MMR_1344
یک شنبه 16 اردیبهشت 1386, 07:18 صبح
با تشکر از زحمات دوستان