Extending ASP.NET Config File Structure

ASP.NET Config File – पिछले Sections में हमने जाना कि किस प्रकार से हम <appSettings> Element का प्रयोग करते हुए अपने Application से सम्बंधित Configuration Settings को Use कर सकते हैं, जिन्हें हमारा Application जरूरत के अनुसार उपयोग में लेता है। लेकिन<appSettings> Element की मूल रूप से दो Limitations हैं:

  • ये हमें Structured Information जैसे कि Lists या Group of Related Settings को Store करने की सुविधा नहीं देता।
  • ये हमें Different Types of Data के साथ Deal करने की सुविधा नहीं देता। बल्कि इस Element का प्रयोग करके हम केवल एक ही String Data के साथ Deal कर सकते हैं।

लेकिन ASP.NET एक Modular, Highly Extensible Configuration Model Use करता है जो हमें हमारे Web.configoMachine.config Configuration Files के Structures को Extend करने की सुविधा देता है, जिसके परिणामस्वरूप हम हमारी Configuration File में अपने स्वयं के Custom Sections Define कर सकते हैं और अपनी Configuration File को Extend करने के लिए हमें तीन Steps Follow करने होते हैं:

  • सबसे पहले हमें उस Information को Identify करना होता है, जिसे हम हमारी Configuration File में Store करना चाहते है और इस Information को Elements व Attributes के रूप में Organize करना होता है। आद”र्ा रूप में हमें प्रत्येक Conceptually Related Settings के Group को एक Element के रूप में Represent करना होता है। साथ ही उस Element के साथ Associated प्रत्येक Information के Piece को Attribute के रूप में Specify करना होता है।
  • फिर प्रत्येक एक Element के लिए एक C# Class Create करना होता है जो इसकी Information को Encapsulate करता है। जब हम हमारे Application को Run करते हैं, तबNET हमारी Configuration File में Specified Custom Element से Information को Read करता है और उसका प्रयोग करते हुए हमारी Class का एक Instance Create करता है। उसके बाद हम जब चाहें तब इस Object से अपनी Group Settings Information को Read कर सकते हैं।
  • तीसरे Step के रूप में हमें Information को Retrieve करना होता है। एक Setting Group को अपनी Configuration File में Specify करने के लिए हमें <configSections> Element Create करना होता है। ये Element प्रत्येक एक Element को Identify करता है और उसे Associated Class के साथ Map करता है।

इस पूरी प्रक्रिया को बेहतर तरीके से समझने का सबसे बेहतर तरीका यही है कि हम एक Example Program द्वारा इसकी सम्पूर्ण कार्यप्रणाली को समझने की कोशिश करें जो कि अग्रानुसार है:

Creating Section Class

मानलो कि हम आपस में Logically Related कई Settings को एक साथ Store करना चाहते हैं, जिन्हें एक साथ उपयोग में लेते हुए हम हमारे Application को बताते हैं कि उसे किसी Remote Object को कैसे Contact करना है। उदाहरण के लिए ये Settings किसी Port Number, Server Location, URL, User Authentication Information आदि को Indicate कर सकती हैं।

जो हमने अभी तक सीखा, उसे उपयोग में लेते हुए इस प्रकार की जरूरत को पूरा करने के लिए हम हमारी Configuration File में <appSettings> Group Create कर सकते हैं, जो सभी Related Settings को एक Group की तरह Specify करने में सक्षम हो।

हालांकि इस Group में ऐसा कोई Indication नहीं होता, जिससे ये बात तय हो कि Specify की गई सभी Settings आपस में Logically Related हैं। जिसकी वजह से न केवल इन Settings को एक Group की तरह Access व Manipulate करना मुश्किल होता है बल्कि Settings के Group में किसी एक Setting की Updating के दौरान कई तरह की समस्याओं का भी सामना करना पड सकता है, जहां अन्‍य Settings में किसी प्रकार का कोई परिवर्तन नहीं किया जा रहा होता।

इसलिए ज्यादा बेहतर तरीका ये होता है कि हम हमारी Group Settings को एक Break-Free <appSettings> Section के रूप में Define करें और उसे किसी Single XML Element के बीच Wrap कर दें। जैसे:

<orderService 
	available="true"
	pollTimeout="00:01:00"
	location="tcp://OrderComputer:8010/OrderService"
/>

यदि हम इस प्रकार का Structure Use करना चाहते हैं, तो हमें एक Matching Class Define करना होता है जो कि system.Configuration.ConfigurationSection Class से Derive होता है। हम इस Class को एक Separate DLL Component में Place कर सकते हैं या फिर हम इसके Source Code को App_Code Folder में Add कर सकते हैं, ताकि ये Code Current Web Application के Compilation के दौरान Application के Part की तरह ही Automatically Compile हो जाए।

या फिर यदि हम हमारे Web Application को एक Web Project की तरह Create करते हैं, तो उस स्थिति में हमें हमारी Code File को अपने Web Project में Add करना होता है, जिससे हमारा Code Automatically हमारे Web Application के साथ Compile होकर हमारे Web Application की Assembly में Add हो जाता है

Setting को Configuration File में Add करने के बाद हमें OrderService नाम की Class Create करनी होती है। ये Class <orderService> Element को Represent करता है और Strongly Typed Properties के माध्‍यम से तीन Attributes Provide करता है:

publicclassOrderService : ConfigurationSection
{
    [ConfigurationProperty("available", IsRequired = false, DefaultValue = true)]
    publicbool Available
    {
        get { return (bool)base["available"]; }
        set { base["available"] = value; }
    }

    [ConfigurationProperty("pollTimeout", IsRequired = true)]
    publicTimeSpan PollTimeout
    {
        get { return (TimeSpan)base["pollTimeout"]; }
        set { base["pollTimeout"] = value; }
    }

    [ConfigurationProperty("location", IsRequired = true)]
    publicstring Location
    {
 	get { return (string)base["location"]; }
        set { base["location"] = value; }
    }
}

जैसाकि हम देख सकते हैं कि प्रत्येक Property ConfigurationProperty Attribute के माध्‍यम से एक Attribute Name के साथ Associated है। ये हमारी Class का एक महत्वपूर्ण Part है क्योंकि ये Part ही हमारे Custom Section का Schema यानी Structure Define करता है। यदि हम हमारे Custom Section में एक Attribute Add करते हैं, लेकिन उससे Matching ConfigurationProperty Attribute को Class में Place नहीं करते, तो ASP.NET Framework उस समय एक Exception Return करता है, जब वह हमारे Application केWeb.config Part को Read करने की कोशिश करता है।

ConfigurationProperty Attribute हमें ये बात तय करने की सुविधा भी देता है कि हमारे द्वारा हमारे Custom Section में Specify किए जाने वाले Element के Attributes को Specify करना Compulsory रूप से जरूरी होगा या नहीं और यदि उस Particular Attribute को Specify न किया जाए तो उसका Default Value क्या होगा।

Actual Property Procedure में हमारा Code उन Attributes की Dictionary को Use करता है, जिसे Base Class द्वारा Provide किया जाता है। हम इन Attributes को उनके Collection से उनके नाम के माध्‍यम से Retrieve कर सकते हैं।

Buy this eBook to read more about …

  • Registering Section Class
  • Retrieving Information

Core ASP.NET WebForms in Hindi - BccFalna.com: TechTalks in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF

BUY NOW GET DEMO REVIEWS