برای استفاده مفيدتر از اين مقاله، توصيه می گردد، مقاله معماری برنامه های مبتنی بر داده را در ابتدا مطالعه نمائيد . ADO.NET ، نسل جديدی از ADO شرکت ماکروسافت است . نسخه ADO ، با استفاده از مجموعه ای اشياء ActiveX Data Object طراحی و پياده سازی شده بود. ADO.NET گرچه در سطح ارائه پتانسيل های لازم در برخی موارد دارای شباهت هائی با ADO است ولی از نظر مدل برنامه نويسی دارای ساختاری کاملا" متفاوت( نسبت به ADO ) است. تعريف ADO.NET ADO.NET، مجموعه ای از کلاس ها بمنظور کار با داده ها است. بموازات رشد اينترنت ، طراحی و پياده سازی برنامه های مبتنی بر وب به امری متداول و نيازی همگانی مطرح شده است . در اين راستا برنامه های متعددی ، از XML بمنظور ارسال اطلاعات خود در شبکه استفاده کرده و هر روز به تعداد اين برنامه ها نيز اضافه می گردد. ADO.NET ، يک مدل برنامه نويسی مناسب بمنظور يکپارچگی بين ويژگی های XML و 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 خواهد بود. مدل اشياء 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 در مدل متصل 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 است . 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 ). بستن اتصال
تکنولوژی فوق نسبت به ADO دارای مزايای زير است :
فريمورک دات نت ، پتانسيل ها ی( عمليات ) خود را به چندين Namespace تقسيم و ADO.NET نيز از اين قاعده مستثنی نخواهد بود . ADO.NET عمدتا" در Namespace با نام System.Data ، پياده سازی شده است.Namespace فوق،بصورت فيزيکی در اسمبلی System.Data.dll قرار دارد. برخی از بخش های ADO.NET در Namespace با نام System.Xml قرار دارند ( مثلا" کلاس XmlDataDocument ) مشخصات هر يک از Namespace های مرتبط با داده ها بشرح زير می باشد :
تغييرات متعددی در ADO.NET نسبت به ADO اعمال شده است . اغلب تغييرات فوق ، با توجه به مطالعات انجام شده در رابطه با موارد مثبت و منفی ADO صورت گرفته است . دستاورد اين تغييرات، قدرت و انعطاف مطلوب برای ADO.NET است .
Recordset در ADO ، يک شی بسيار بزرگ است . شی فوق، امکان حمايت از چندين نوع Cursor را فراهم می نمايد ( از نوع سريع تا نوع سمت سرويس گيرنده غير متصل) . سفارشی نمودن تمام امکانات شی فوق، مشکل و در برخی موارد غيرممکن است. ADO.NET ، پتانسيل های Recordset مربوط به ADO را به چندين کلاس تفسيم کرده است .مثلا" DataReader معادل يک Cursor سريع ، DataSet يک مدل غيرمتصل Cache شده با امکان رديابی ، ثبت و کنترل نسبت دهی و DataAdapter قابليت سفارشی نمودن نحوه ذخيره سازی و بهنگام سازی داده ها و اعمال تغييرات در يک DataSet را دارا است .
NET Data Provider . ، کلاس های مورد نياز ADO.NET را بمنظور استفاده در سناريوی متصل (Connected) ارائه می نمايد. NET data Provider. ها ، بگونه ای طراحی شده که کم حجم و حداقل لايه بين کد مربوطه و منبع داده ايجاد و بدين ترتيب کارائی سيستم افزايش خواهد يافت . فريمورک دات نت دارای دو Provider است :
در آينده NET Date Provider . ، بيشتر و با پيشوندهای ديگری ايجاد خواهند شد .
در فهرست زير پيشوندهای متفاوت بصورت Xxx نشان داده شده اند :
کلاس های ADO.NET که در مدل غير متصل استفاده می گردد توسط NET Data Providers . ، ارائه و در Namespace با نام System.Data موجود می باشند. فهرست زير کلاس هائی استفاده شده در مدل غير متصل ، را نشان می دهد :
نظرات شما عزیزان: