ADO.NET Disconnected Architecture: वर्तमान समय के Modern Distributed Applications की Requirements को Connected Applications अकेले अपने स्तर पर पूरा नहीं कर सकते। हालांकि Disconnected Applications भी ADO.NET का प्रयोग करते हुए ही Develop किए जाते हैं, लेकिन इस Development का Approach काफी भिन्न होता है।
Disconnected Applications सामान्यत: जितना देर से सम्भव हो, उतना देर से Underlying Database से Connection Establish करते हैं और जितना जल्दी हो सके, उतना जल्दी Disconnect होने की कोशिश करते हैं।
इस Disconnected Fashion में ADO.NET, Actual Data Connection को विभिन्न Requests के दौरान Underlying Database Pool से Retrieve करता है और Retrieved Data को Local Cache में Save करके रख लेता है। ADO.NET के विभिन्न Disconnected Objects के बारे में हम निम्नानुसार जान सकते हैं:
DataSet Object
DataSet Object, Disconnected Mode के ADO.NET Data Access का Central Core यानी मुख्य आधार होता है। DataSet को सरल शब्दों में इस तरह से समझ जा सकता है कि DataSet एक प्रकार से हमारे Current Frontend Application के लिए एक Mini Relational Database Management System Software (RDBMS) Software की तरह काम करता है और Underlying Database को पूरी तरह से Local Computer की Memory में Represent करता है।
इसलिए हम DataSet को Exactly उसी प्रकार से Access व Manipulate करते हैं, जैसे कि हम Actual Data Source को Use कर रहे हों। DataSet को हम DataTables व DataRelations का Logical Collection भी मान सकते हैं।
DataTable Object
DataTable लगभग Actual Database की Table के समान होता है, जो कि Actual Database की किसी Table का In-Memory Representation होता है। ये DataColumns व DataRows का बना होता है, जिस पर Exactly उसी तरह से विभिन्न प्रकार के Constraints Set किए जा सकते हैं, जिस प्रकार से Actual Database में किसी Table पर विभिन्न प्रकार के Constraints Set किए जाते हैं।
ये Object Data को Rows व Columns के रूप में Store करता है और इस Object को पूरी तरह से XML Format में Convert किया जा सकता है, जबकि XML Format में Serialized Content के आधार पर फिर से DataSet Object भी Define किया जा सकता है।
इसलिए जब किसी DataSet के माध्यम से केवल एक ही Table के Data को Access करना हो, तो DataSet Create करने के स्थान पर DataTable Create करना ज्यादा बेहतर होता है और DataTable का प्रयोग करना न केवल ज्यादा आसान होता है बल्कि इसकी Performance भी तुलनात्मक रूप से ज्यादा बेहतर होती है।
DataRow Object
DataRow Object वास्तव में DataTable Object की एक Property है, जो कि DataColumnCollection Type का Object होता है और DataTable Object में Stored विभिन्न Records में से किसी समय पर किसी एक Record को Represent करता है। जैसे-जैसे DataTable Object में नया Data Fill होता जाता है, हर Record को Represent करने के लिए DataRowCollection में एक नया DataRow Object Add होता जाता है। DataRow Object वास्तव में किसी Actual Database के किसी Table की किसी Row को In-Memory Represent करता है।
DataColumn Object
DataColumn Object भी वास्तव में DataTable Object की एक Property है, जो कि DataRowCollection Type का Object है और किसी Actual Database Table Structure को Represent करता है। यानी DataRow Object वास्तव में किसी Actual Database के किसी Table के किसी Column को In-Memory Represent करता है।
DataView Object
DataView Object किसी Actual Database के किसी View Object का In-Memory Logical Representation होता है। ये Object हमें किसी DataTable पर In-Memory View Create करने की सुविधा देता है।
Actual View की तरह ही ये DataView भी अपनी Filter Property में Specified Condition के आधार पर वर्तमान में Memory में Exist Data का Logical View Create करता है। DataTable के Data के Subset यानी View के Data को Sorted Form में Handle करने के लिए हम DataView Object के साथ Sort Property का भी प्रयोग कर सकते हैं।
Constraints Object
Constraints Object भी वास्तव में DataTable Object की एक Property है, जो कि ConstraintsCollection Type का Object है। ये Object हमें ForeignKeyConstraint या UniqueConstraint Object Create करने की सुविधा देता है, जिन्हें हम किसी Specific Condition के आधार पर DataTable के विभिन्न Columns के साथ Associate कर सकते हैं, ताकि DataTable में Store होने वाला Data इन Constraints को Satisfy किए बिना किसी न, Data को Store न होने दे। ForeignKeyConstraint व UniqueConstraint ये दोनों Constraint Collections, Logically Actual Database के Foreign Key व Unique Key के समान होते हैं।
DataRelation Object
DataSet Object किसी Actual Database के समान बहुत सारी In-Memory Tables को Logically Represent करता है, जिसमें बहुत सारी Interrelated Tables हो सकती है। DataRelation Object इन्हीं विभिन्न Interrelated Tables के बीच की Relationship को Represent करता है। साथ ही विभिन्न Related Tables के Data को Validate करते हुए विभिन्न DataTables के बीच की Parent-Child Relationship को भी Represent करता है। इस Object को हम Actual Database की Foreign Key के Equivalent मान सकते हैं, जो कि दो Tables के बीच की Relationship को एक नाम के माध्यम से Represent करता है।
ForeignKeyConstraint व DataRelation के बीच मुख्य अन्तर यही है कि DataRelation Object हमें Data Validation की सुविधा Provide करने के साथ ही एक ऐसा Convenient Mechanism Provide करता है, जिसका प्रयोग करके हम DataSet Object में Parent व Child Rows को Browse कर सकते हैं।
इस प्रकार से हम ADO.NET के Connected व Disconnected दोनों Parts के आपसी Interaction को निम्न चित्र द्वारा ज्यादा बेहतर तरीके से Represent कर सकते हैं और समझ सकते हैं कि ADO.NET के उपरोक्तानुसार Discussed विभिन्न Objects आपस में किस प्रकार से Interaction करते हुए Frontend व Backend के बीच Communication Provide करते हैं:
ADO Architecture के अन्तर्गत Data Source से Returned Data को Hold करने का जो काम Recordset Object करता था, वही काम ADO.NET Architecture में DataSet करता है। फिर भी दोनों के बीच एक बहुत ही महत्वपूर्ण अन्तर होता है।
Recordset Object, Database से Communicate करने के लिए भी जिम्मेदार होता था, वहीं DataSet Object किसी भी तरह से किसी Database से Directly Communication स्थापित नहीं कर सकता। बल्कि Database से Connection Establish करने के लिए ADO.NET Architecture, DataAdapter नाम के Gateway Object को Use करता है जो कि Connected व Disconnected Modes को आपस में Communicate करवाता है।
चूंकि Connected Objects, Directly Underlying Database के साथ Communication करते हैं, इसलिए Connected Objects को सामान्यत: Database Specific Codes Implement करने होते हैं और सभी Connected Objects को .NET Data Providers के रूप में Identify या Refer किया जाता है। जबकि Disconnected Objects, Underlying Database से बिल्कुल स्वतंत्र व अलग होते हैं, अत: इन Disconnected Objects को विभिन्न प्रकार के अलग-अलग Databases के लिए समान रूप से Use किया जा सकता है।
यानी यदि हमने MySql Database को Use करते हुए Disconnected तरीके से अपना Application Design किया हो, तो हम जब चाहें तब MySql के स्थान पर Underlying Database के रूप में SQL Server या Oracle को Use कर सकते हैं, जबकि हमें हमारे Disconnected Design में किसी भी तरह का कोई Modification करने की जरूरत नहीं होगी। (ADO.NET Disconnected Architecture)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook ADO.NET with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
ADO.NET with C# in Hindi | Page:501 | Format: PDF