2012-01-19 25 views
5

मुझे पता है कि आप सिंगल और एकाधिक मशीनों पर GUID पीढ़ी पर दूर जा सकते हैं और यह दो बार एक ही GUID उत्पन्न करने की सांख्यिकीय रूप से असंभव है।क्या .NET कॉम्पैक्ट फ्रेमवर्क 3.5 का उपयोग कर विंडोज सीई उपकरणों पर उत्पन्न GUID उत्पन्न हैं अभी भी सांख्यिकीय रूप से अद्वितीय?

इस पर साबित करने वाले इंटरनेट पर बहुत सारी जानकारी है।

क्या विंडोज सीई 4, 5 & के 100 के बारे में भी कहा जा सकता है 6 .NET कॉम्पैक्ट फ्रेमवर्क 3.5 जेनरेटिंग GUID के आधार पर अनुप्रयोग चलाने वाले 6 डिवाइस?

मैं हां मान रहा हूं लेकिन यह साबित करने वाली कोई जानकारी नहीं मिल रही है कि WinCE ओएस यादृच्छिक संख्याओं का उपयोग करता है और वे उचित रूप से यादृच्छिक हैं।

क्या कोई ऐसी जानकारी और संदर्भ प्रदान कर सकता है?

धन्यवाद,

जे

+1

स्टैक ओवरफ्लो का मोबाइल मोबाइल प्रश्न। –

+0

एक तरफ नोड पर: यादृच्छिक संख्या जैसी कोई चीज़ नहीं है :-) – Matten

+0

आह हाँ, लेकिन इस बार यह विंडोज सीई पर है !! तो यह एक पूरी तरह से अलग सवाल है ...;) – RoboJ1M

उत्तर

6

एक early article से Guid पर NET कम्पैक्ट फ्रेमवर्क

NET कम्पैक्ट फ्रेमवर्क टीम ढांचे पदचिह्न आकार, प्रदर्शन के बीच लगातार बना समझौतों के लिए , और कार्यान्वयन का समय। पूर्ण .NET Framework Guid.NewGuid विधि Windows API फ़ंक्शन CoCreateGuid को कॉल करता है जो UuidCreate को वैश्विक रूप से अद्वितीय 128-बिट संख्याएं उत्पन्न करने के लिए कॉल करता है। दुर्भाग्यवश, ये फ़ंक्शन पॉकेट पीसी पर समर्थित नहीं हैं, इसलिए GUID.NewGuid विधि .NET कॉम्पैक्ट फ्रेमवर्क के लिए लागू नहीं की गई थी।

इस लेख के लिए एक एल्गोरिथ्म जो खिड़कियों संस्करण

के बराबर होती है ऐसा लगता है कि यह विधि Guid.NewGuid के एक कस्टम कार्यान्वयन लिखना आसान है का प्रस्ताव है। निम्नलिखित परीक्षण परीक्षण दिखाता है कि पॉकेट पीसी पर GUID उत्पन्न करता है। यह पॉकेटगुइड नामक एक कस्टम क्लास का उपयोग करता है, जो डेस्कटॉप GUID के समान एल्गोरिदम का उपयोग करता है और इस पेपर में बाद में अधिक विस्तार से चर्चा करता है।

2,0 के बाद से वास्तविक कॉम्पैक्ट फ्रेमवर्क Guid.NewGuid विधि होता है, मैं वे उल्लेख किया है जो एक ही कोड strongness/WinCE पर GUIDs की अद्वितीयता में परिणाम शामिल लगता होगा।

+0

मुझे लगता है कि मेरा सबसे अच्छा समाधान यह कहना है कि GUID बनाने के लिए .NET 2.0 CF विधि PocketGuid उदाहरण में एक ही विधि का उपयोग करता है। – RoboJ1M

+0

हालांकि मुझे पहले से ही तर्क देना पड़ा था कि पॉकेटगुइड में यादृच्छिक विधि प्राप्त करने की विधि _random पर्याप्त_ है ("लेकिन क्या होगा यदि दोनों हैंडहेल्ड एक ही समय में बूट हो जाएं? यह _could_ एक ही अंक बनाते हैं!") – RoboJ1M

+0

जैसा कि बताया गया है लेख में फ़ंक्शन न केवल टाइमस्टैम्प का उपयोग करता है बल्कि कुछ और हार्डवेयर संबंधी जानकारी का उपयोग करता है। तो यह एक ही समय में दो डिवाइस बूट होने पर टकराव मार्गदर्शिकाएं उत्पन्न नहीं करनी चाहिए, उम्मीद है :) – Matten

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

  • कोई संबंधित समस्या नहीं^_^