2015-10-16 4 views
5

मैं एक अनुभवी विंडोज सी # डेवलपर हूं, लेकिन एज़ूर की दुनिया में नया हूं, और इसलिए एक "सर्वश्रेष्ठ अभ्यास" को समझने की कोशिश कर रहा हूं क्योंकि मैं एक या अधिक Azure क्लाउड सर्विसेज को लागू करता हूं।Azure फ़ाइल सिस्टम - क्या मैं "देख सकता हूं" या केवल मतदान कर सकता हूं?

मेरे पास कई (बाहरी, और मेरे नियंत्रण के बाहर) स्रोत हैं जो सभी फ़ाइलों को किसी फ़ोल्डर (या संभवतः फ़ोल्डर का एक सेट) में सहेज सकते हैं। विंडोज के तहत मेरे सिस्टम की वर्तमान स्थिति में, मेरे पास एक फ़ाइल सिस्टम सिस्टम स्थापित करने के लिए एक फ़ाइल सिस्टम सिस्टम स्थापित किया गया है और जब कोई फ़ाइल वहां दिखाई देती है तो एक ईवेंट बढ़ाते हैं।

Azure की दुनिया में, ऐसा करने के बराबर तरीका क्या है? या वहाँ है?

मुझे पता है कि मैं कुछ समय (30 सेकंड कहता हूं) पास करने के लिए टाइमर (या नींद) बना सकता हूं, और फ़ोल्डर को मतदान कर सकता हूं, लेकिन मुझे यकीन नहीं है कि क्लाउड पर्यावरण में "सर्वश्रेष्ठ" तरीका है।

यह ध्यान रखना महत्वपूर्ण है कि मेरे पास इनपुट पर कोई नियंत्रण नहीं है - दूसरे शब्दों में फाइलें बाहरी डिवाइस द्वारा सहेजी जाती हैं जिन पर मेरा कोई नियंत्रण नहीं होता है; इसलिए, उदाहरण के लिए, फ़ाइल को सहेजने पर एक संदेश को कतार पर धक्का नहीं दे सकता है, और उस संदेश का जवाब ...

हालांकि, अंत में, यह लक्ष्य है ... तो मेरा इरादा है एक "वॉचर" सेवा जो (घटनाओं या मतदान के माध्यम से) एक या अधिक फ़ाइलों की उपस्थिति का पता लगाएगी, और जवाब देने के लिए मेरे वर्कफ़्लो में अगले चरण के लिए उपयुक्त कतार पर एक संदेश दबाएगी।

यह ध्यान दिया जाना चाहिए कि मैं वीएस2015 का उपयोग कर रहा हूं, और नवीनतम एज़ूर एसडीके सामान, इसलिए मैं किसी भी विरासत से सीमित नहीं हूं।

storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 

// Create a CloudFileClient object for credentialed access to File storage. 
fileClient = storageAccount.CreateCloudFileClient(); 

// Obtain the file share name from the config file 
string sharenameString = CloudConfigurationManager.GetSetting("NLRB.Scanning.FileSharename"); 

// Get a reference to the file share. 
share = fileClient.GetShareReference(sharenameString); 

// Ensure that the share exists. 
if (share.Exists()) 
{ 
    Trace.WriteLine("Share exists."); 
    // Get a reference to the root directory for the share. 
    rootDir = share.GetRootDirectoryReference(); 

    //Here is where I want to start watching the folder represented by rootDir... 
} 

अग्रिम धन्यवाद:

मैं अब तक क्या किया है मूल रूप से इस (एक बड़ा कोड बेस का एक टुकड़ा) है।

उत्तर

1

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

एज़ूर फ़ाइल सेवा है, जो एसएमबी सेवा के रूप में है और आपके स्थानीय नेटवर्क पर नियमित एसएमबी वॉल्यूम पर किए जाने वाले किसी भी क्रिया का समर्थन करेगी।

Azure ब्लॉब स्टोरेज है। ये देखे जा सकते हैं। आपको ब्लॉब कंटेनर में बदलाव के लिए मतदान करना होगा।

+0

यह अच्छा लगता है, और मैं Azure फ़ाइल सेवा (या ... कोशिश कर रहा हूं ...) –

+0

मैंने अपने मूल प्रश्न में एक कोड स्निपेट जोड़ा है, इसलिए उम्मीद है कि आप (या अन्य) अधिक विशिष्ट प्रदान कर सकते हैं मैं क्या करने की कोशिश कर रहा हूं पर मार्गदर्शन करने के लिए मार्गदर्शन। धन्यवाद! –

-1

मैं भी Azure के लिए बहुत नया हूं, और वास्तव में मैं एक फ़ाइल वॉचर प्रकार की चीज़ की जांच कर रहा हूं। मैं Azure फ़ंक्शंस को शामिल करने में कुछ विचार कर रहा हूं, इस वजह से, जब कोई ब्लॉग बनाया या अपडेट किया जाता है तो कुछ कोड ट्रिगर करने का एक तरीका दिखता है। एक पैटर्न भी निर्दिष्ट करने का एक तरीका है: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob

+0

यदि आप लिंक को कभी भी खराब होने पर दूसरों की सहायता के लिए माइक्रोसॉफ्ट से पोस्ट से पर्याप्त विवरण प्रदान करते हैं तो यह सहायक होगा। – newenglander

1

आप एक लूप बना सकते हैं जो समय-समय पर रूट निर्देशिका को CloudFileDirectory.ListFilesAndDirectories विधि का उपयोग करके मतदान कर सकता है। https://msdn.microsoft.com/en-us/library/dn723299.aspx

आप उप निर्देशिकाओं में इसे कॉल करने के लिए एक छोटी रिकर्सिव विधि भी लिख सकते हैं।

मतभेदों का पता लगाने के लिए आप सभी फ़ाइलों और निर्देशिकाओं के मेमोरी हैश मानचित्र में एक निर्माण कर सकते हैं। यदि आप लगातार वितरित कैश की तरह कुछ चाहते हैं तो आप यानी उपयोग कर सकते हैं। फ़ाइलों/निर्देशिकाओं की इस सूची को रखने के लिए Redis। प्रत्येक बार जब आप अपनी सूची में फ़ाइल या निर्देशिका नहीं करते हैं तो आपको मतदान के दौरान एक नई फ़ाइल/निर्देशिका मिली है।

आप पहचान और व्यापार तर्क की जिम्मेदारी को अलग कर सकते हैं यानी। एक कार्यकर्ता भूमिका निर्देशिका को मतदान करती रहती है और नई फाइलें कतार में लिखती है और उपभोक्ता एक अन्य कार्यकर्ता भूमिका/वेब सेवा को समाप्त करता है जो उस जानकारी के साथ प्रसंस्करण करता है।

+0

कूल तर्क धन्यवाद –

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