2011-11-23 9 views
7

एफ # प्रकार प्रदाता पर Channel 9's video देखने के बाद, मैं डेटा स्कीमा परिवर्तनों के बारे में सोच रहा हूं। डॉन ने अंत में थोड़ा सा स्पर्श किया, लेकिन मैं अधिक जानकारी की तलाश में हूं।क्या होता है जब प्रदाता प्रदाता F # में बदलते हैं?

  1. डेमो यह देखने के रूप में यद्यपि आप अनिवार्य रूप से दबाने रहे हैं बनाया '।' यह पता लगाने के लिए कि आपके लिए किस प्रकार का डेटा उपलब्ध है। जब आप लिंक करते हैं, तो 2008 में अमेरिका में अपराध दर, जब आप अपना आवेदन वितरित करते हैं और स्कीमा में परिवर्तन होता है तो क्या होता है? क्या आपको रनटाइम प्रकार की त्रुटियां मिलती हैं? क्या इन त्रुटियों को संभालने के लिए डेवलपर की ज़िम्मेदारी है?

  2. इसके अलावा, क्या यह प्रकार प्रदाता के हाथों में जिम्मेदारी रखता है?

    वर्तमान में जब आप .NET असेंबली डाउनलोड करते हैं, तो आप जानते हैं कि यह तब तक नहीं बदलेगा जब तक आप (मैन्युअल रूप से या सेवा के माध्यम से) स्पष्ट रूप से इसे अपडेट नहीं करते। विकसित प्रकारों से संकलन त्रुटियों को हल किया जाना चाहिए, लेकिन आप तब तक अपग्रेड रोक सकते हैं जब तक आप परिवर्तन के लिए तैयार न हों। प्रकार प्रदाताओं के साथ, क्या आपको उनके खिलाफ अधिक सतर्कता से प्रोग्राम करना है?

उत्तर

8

स्कीमा परिवर्तन का जवाब देते प्रकार प्रदाता की जिम्मेदारी है, लेकिन केवल विकास समय पर। एक बार जब आप कोई एप्लिकेशन विकसित कर लेते हैं, तो यह प्रदाता प्रदाता का उपयोग करके संकलित हो जाता है और संकलन के समय वर्तमान स्कीमा का उपयोग करता है।

जब आप विजुअल स्टूडियो से टाइप प्रदाता का उपयोग कर रहे हैं, तो यह स्कीमा परिवर्तनों की निगरानी कर सकता है और विजुअल स्टूडियो आईडीई को सूचित कर सकता है कि स्कीमा में कोई बदलाव आया है। मैंने एक एक्सएमएल प्रकार प्रदाता उदाहरण लिखा है जो ऐसा करता है, इसलिए जब आप स्कीमा (उदाहरण के रूप में उपयोग की जाने वाली एक्सएमएल फाइल) बदलते हैं, तो आपको तुरंत वीएस में त्रुटियां मिलेंगी। मैंने video demonstration of this (लगभग 19:40) किया था।

एक बार जब आप अपने प्रोग्राम को संकलित करते हैं, तो प्रकार प्रदाता कोड उत्पन्न करता है जिसे संकलित रूप में उपयोग किया जाना चाहिए (और प्रकार प्रदाता रनटाइम पर उपयोग नहीं किया जाता है)। इसका अर्थ यह है कि यदि स्कीमा रनटाइम पर बदलती है, तो आप इसके बारे में कुछ भी नहीं कर सकते (डेवलपर को प्रतिक्रिया करने की आवश्यकता है)। यदि स्कीमा परिवर्तन पिछड़ा-संगत है (यानी एक डीबी तालिका में नए कॉलम जोड़ें), तो आपका प्रोग्राम अभी भी ठीक काम कर सकता है।

+2

टॉमस कहते हैं, मुख्य रूप से उल्लेखनीय सा विकास समय पर स्कीमा परिवर्तन (जैसे इस तरह के स्थानीय एक्सएमएल फाइल या स्प्रेडशीट के रूप में 'बहुत गतिशील' डेटा, कि आप स्थानीय रूप से editting किया जा सकता है के रूप में आप उनके खिलाफ कार्यक्रम के लिए) है। तैनात किए गए ऐप्स के लिए स्कीमा परिवर्तनों के साथ समस्याएं पारंपरिक ऐप्स के साथ एक ही समस्याएं हैं, जहां आप आमतौर पर या तो (1) पीछे-संगत परिवर्तन करते हैं, (2) पुराना डेटाबेस/स्कीमा रखें लेकिन एक नया (पुराना क्लाइंट भी प्रकाशित करें क्षुधा अभी भी पुराने, नए लोगों को नई जो अमीर/भिन्न डेटा से बात बात), या (3) नए ग्राहक क्षुधा जब आप स्कीमा को बदलने की तैनाती। – Brian

संबंधित मुद्दे