ADO.NET की पूरी Functionality कुछ Basic Care Classes पर निर्भर होती है, जिन्हें हम दो Groups में Divide कर सकते हैं। पहले Group के अन्दर उन Classes को रखा जाता सकता है, जो कि Data को Manage व Contain (DataSet, DataTable, DataRow and DataRelation) करने का काम करते हैं। जबकि दूसरे Group में Specific Data Source से Connect होने वाली Classes (Connection, Command and DataReader) को रख सकते हैं।
Data Container Classes पूरी तरह से Generic Classes होती हैं, जिन पर इस बात का कोई प्रभाव नहीं पडता कि हम किस Underlying Data Source को Use कर रहे हैं और Underlying Data Source से Data को Extract कर लेने के बाद इन्हें इन DataSet, DataTable, DataRow या DataRelation Containers में ही Store किया जाता है।
DataSet को हम ठीक Collection या Array की तरह मान सकते हैं, जो कि Data के Package की तरह होते हैं। अन्तर केवल इतना ही है कि DataSet में Store होने वाले Data वास्तव में Relational Data होते हैं, जो किसी DBMS Software से Retrieve होते हैं और Database के विभिन्न मूल Concepts जैसे कि Rows, Columns, Tables व उनके बीच की आपसी Relationship से Familiar होते हैं।
दूसरे Group के Classes कई Flavor में उपलब्ध होते हैं, जो कि Different DBMS Software के लिए Different होते हैं। इन Classes के समूह को ही ADO.NET Data Provider कहा जाता है क्योंकि इन्हीं के माध्यम से हमारा Application किसी Underlying Data Source के Data के साथ Interact करता है।
Data Providers को इस प्रकार से Customize किया गया होता है ताकि प्रत्येक Class Best Performing तरीके से काम करते हुए Underlying Data Source के साथ Interact करे और जितना सम्भव हो सके, उतना तेजी से Data Storing व Retrieving करे।
उदाहरण के लिए SQL Server Data Provider को MSSQL Server के साथ Best Performing तरीके से काम करने के लिए Design किया गया है। क्योंकि ये Classes Internally SQL Server के Tabular Data Stream (TDS) Protocol को Use करते हुए Database के साथ Communication करता है, इसलिए Generate होने वाला Result, Best Possible Performance के साथ Generate होता है। जबकि यदि हम Underlying Database के रूप में Oracle को Use करना चाहें, तो हम Oracle Data Provider Use कर सकते हैं।
प्रत्येक Data Provider का अपना अलग Prefix होता है, जिसे सम्बंधित Core Classes के साथ Naming Convention के रूप में Use किया जाता है। अत: यदि हम SQL Server Data Provider की बात करें, तो इससे सम्बंधित Core Classes का नाम SqlConnection व SqlCommand होता है। जबकि यदि हम Oracle Data Provider की बात करें, तो इससे सम्बंधित Classes का नाम OracleConnection व OracleCommand होता है।
Internally ये सभी Classes काफी अलग तरीके से काम करती हैं, क्योंकि इन्हें एकदम अलग Low-Level Protocols को Use करते हुए बिल्कुल Different Database के साथ Connect होने के लिए Design किया गया होता है। जबकि Externally ये Classes सभी प्रकार के DBMS के साथ समान प्रकार से काम करती हुई मालूम पडती हैं, क्योंकि सभी को Access व Manipulate करने के लिए Use किए जाने वाले Methods व Properties का नाम समान होता है।
यानी हम एक Data Provider के लिए जिन Codes को लिखते हैं, बडी ही आसानी से उन Codes को किसी दूसरे प्रकार के Data Provider के लिए Change कर सकते हैं, जिसके परिणामस्वरूप Underlying Database के रूप में Oracle को Use करते हुए Develop किए गए Application को बडी ही आसानी से MSSQL Server के लिए Convert किया जा सकता है।
हालांकि अलग-अलग Data Provider के लिए जो Core Classes हमें प्राप्त होती हैं, वे सभी किसी भी अन्य Data Provider के लिए भी Similar ही होती हैं। लेकिन फिर भी MSSQL Server भी Microsoft का ही एक Product है, इसलिए किसी भी .NET आधारित Application के साथ सामान्यत: इसे ही Best Matching Backend के रूप में Use किया जाता है। इसलिए इस पुस्तक में हम हमारे ASP.NET Application के Backend Database के रूप में MSSQL Server के Expression Edition को ही Use करेंगे, जो कि MSSQL Server का ही Lite Version है।
जबकि Oracle के लिए Best Matching Frontend के रूप में सामान्यत: Java को Use किया जाता है। हालांकि Oracle को .NET Application के लिए Backend के रूप में Use करने के लिए सबसे बेहतर Data Provider स्वयं Oracle ही Provide करता है, जिसे ODP.NET (Oracle Data Provider for .NET) के नाम से जाना जाता है।
SQL Data Provider की सभी जरूरी Core Classes को मूल रूप से तीन मुख्य Namespaces में Divide किया गया है, जो कि निम्नानुसार हैं:
System.Data.SqlClient namespace
इस Namespace में वे Classes होती हैं, जिन्हें MSSQL Server Database के साथ Connection Establish करने तथा उस पर Commands को Execute करने के लिए Use किया जाता है। जैसे: SqlConnection व SqlCommand
System.Data.SqlTypes namespace
इस Namespace में वे Structures होते हैं, जिनका प्रयोग SQL Server Specific Data Types जैसे कि SqlMoney व SqlDateTime को Represent करने के लिए किया जाता है। हम इन Types को SQL Server Data Types के साथ बिना किसी प्रकार का Equivalent Conversion किए हुए Directly Use करने के लिए कर सकते हैं।
यानी सामान्यत: .NET Framework Supported Data Types व SQL Server Supported Data Types Exactly समान प्रकार से Implemented नहीं होते। इसलिए ASP.NET जैसे किसी Frontend से Receive किए गए Data को SQL Server में Store करने से पहले व SQL Server से आने वाले Data को ASP.NET जैसे Frontend में Render करने से पहले Appropriate Type में Cast करना जरूरी होता है।
लेकिन जब हम इस Namespace की Classes को Use करते हैं, तब ये Conversion Automatically Internally Perform कर लिया जाता है, इसलिए हमें ये Conversion अपने स्तर पर Manually करने की जरूरत नहीं होती।
System.Data namespace
इस Namespace में वे Core Classes होती हैं, जो ADO.NET की Core Functionalities Provide करती हैं। इन Classes के अन्तर्गत DataSet व DataRelation जैसी Classes होती हैं, जो हमें MSSQL Server व Oracle जैसे किसी RDBMS के Structured Relational Data को Manipulate करने की सुविधा देती हैं। ये Classes किसी भी DBMS Software के Implementation से पूरी तरह से Independent होती हैं, इसलिए हम चाहे जिस प्रकार के DBMS के साथ Deal कर रहे हों] इन Classes को हमें हमेंशा समान प्रकार से ही उपयोग में लेना होता है।
ADO.NET Data Access Model का प्रयोग करते हुए हम मूलत: दो प्रकार से Underlying Database को Access व Manipulate कर सकते हैं, जिन्हें Connected Model व Disconnected Model के नाम से जाना जाता है। Connected Model को Direct Data Access Model के नाम से भी जाना जाता है और सबसे पहले हम इसी Model के बारे में जानेंगे।
उसके बाद फिर हम Disconnected Data Access Model के बारे में जानेंगे, जो हमें Underlying Database से Data को Retrieve करके DataSet Object में Cache करने की सुविधा देता है, ताकि हम बार-बार Underlying Database से Connect किए बिना भी Data को बार-बार Access व Manipulate कर सकें।
हालांकि हम इस Chapter में ADO.NET Data Access Model के इन दोनों तरीकों के बारे में जानेंगे, लेकिन इनके बारे में बेहतर तरीके से विस्तारपूर्वक समझने के लिए आप हमारी अन्य पुस्तक “ADO.NET with C# in Hindi” पढ़ सकते हैं। क्योंकि ये पुस्तक मूलत: ASP.NET से सम्बंधित है न कि ADO.NET से, इसलिए इस पुस्तक में ADO.NET को उतना विस्तारपूर्ण तरीके से Discuss किया जाना सम्भव नहीं है, जितना विस्तारपूर्ण तरीके से इसे एक Professional Developer के लिए समझना जरूरी होता है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance ASP.NET WebForms in Hindi | Page:707 | Format: PDF