एफ # मधील बीअरवेभिमुख प्रोग्रामिंग [2]

परिचय

या ब्लॉग पोस्टमध्ये आम्ही मागील ब्लॉग पोस्टपासून जिथे सोडले तेथे आम्ही सुरू ठेवतो. आम्हाला पुढील गोष्टी करायच्या आहेत.

  1. अक्षरशः कॉन्फिगर करा जेणेकरून जास्त हार्ड-कोडेड मुंबो जम्बो चालू नयेत. प्रक्रिया सुरू झाल्यावर आम्ही आमच्या कॉन्फिगरेशन जतन करतो जे मॉन्गॉडबी वरून एमएलएब द्वारे लोड केली जातात. फक्त हार्ड-कोडेड मूल्य मोंगो सर्व्हरशी कनेक्ट होण्यासाठी वापरल्या जाणार्‍या कनेक्शन स्ट्रिंगचे आहे.
  2. कित्येक ब्रुअरीजसाठी पाईपलाईन कार्यान्वित करण्यासाठी वेळापत्रकचे सामान्यीकरण.
  3. प्रक्रियेची वेळेत धावण्याची योजना करा.
  4. मॉंगोडीबीवर कायमस्वरुपी स्क्रॅच

आम्ही या मालिकेत तिसर्‍या ब्लॉग पोस्टमध्ये एक्सपेक्टोच्या वापराची चाचणी करू आणि लॉगरीद्वारे लॉगिंग जोडू.

तयारी

Dडल रुडशॉग कडून मला नो-डिफरन्स केसच्या उपचारांबद्दल एक चांगली टीप मिळाली. आम्ही NoDifferences प्रकरण यशस्वी म्हणून मानले पाहिजे. फरक आढळला नाही तर मजकूर पाठवू नका.

आमचे सुधारित त्रुटी मॉड्यूल आता यासारखे दिसते:

फंक्शनची तुलना करा, जे आता फक्त चालू आणि मागील स्क्रॅचमधील फरक मोजते.

सेट केलेल्या फरकाच्या कार्डिनॅलिटीवर आधारित मजकूर पाठविला जावा की नाही हे आता अधिसूचना फंक्शनने निश्चित केले पाहिजे.

आम्ही पाईपलाईनच्या सामान्यीकरणाची दिशा निश्चित करण्यासाठी "नेम" नावाच्या आमच्या डेटा सेटमध्ये एक नवीन "स्ट्रिंग" प्रकार घटक समाविष्ट करतो, ज्या नंतर नंतर हायलाइट केला जाईल.

अद्ययावत रेकॉर्ड प्रकार आणि चिरॉनसाठी स्थिर घटकांसह असलेली आमची बीअरआयएनएफओ.एफएस फाइल आता यासारखे दिसते:

कॉन्फिगरेशन आणि सामान्यीकरण

चला सर्व हार्ड कोडेड लिटर्ल्सपासून मुक्त होऊ आणि फक्त कंटाळलेल्या हातांच्याऐवजी पाइपलाइन ब्रूअरीजच्या यादीला सामान्यीकृत करू या. आतापर्यंत आम्ही सामान्य घटक वेगळे करण्याचे चांगले काम केले आहे. आम्ही अधिक चांगले करू शकतो! सर्व कॉन्फिगरेशन क्लाऊडवर हलवू आणि पाईपलाईन सामान्यीकरण करूया.

बांधकाम

आम्ही सर्व कॉन्फिगरेशन तपशील ठेवण्यासाठी एमएलएबचे विनामूल्य टियर वापरू. प्रथम आम्ही "बिअरवेरीएंट प्रोग्रामिंग" नावाचा डेटाबेस तयार करतो आणि कॉन्फिगरेशन संग्रह जोडतो. ही ब fair्यापैकी सोपी प्रक्रिया असावी. एमएलएबी यूजर इंटरफेस विलक्षण आहे! आपल्याला काही समस्या असल्यास कृपया माझ्याशी संपर्क साधा.

कॉन्फिगरेशन संग्रहात प्रारंभी आमच्या ट्वालिओ तपशीलांसह दस्तऐवज असणे आवश्यक आहे. जर आपल्याला येथे अधिक फील्ड जोडायची असतील तर आम्ही नंतर निर्णय घेऊ शकतो.

एकदा देखरेख केल्यानंतर, कॉन्फिगरेशन संग्रह यासारखे काहीतरी दिसते:

_ "_I will": {$ oid: 5976bcc1734d1d6202aa1556}, "MyPhoneNumber": "आपला फोन नंबर", "अकाउंटएसआयडी": "आपला ट्वालिओ अकाऊंट सिड", "ऑथटोकन": "आपले ट्विव्हिओ ऑथ टोकन", "सेंडिंगफोन नंबर" "" टेलिव्हिओ फोन नंबर पाठवत आहे "}

डेटाबेसशी संप्रेषण

पुढे आम्ही पॅककेजे मार्गे मुंगोकशर्प ड्रायव्हर आणि मोंगोडीबी.एफएस.शार्प संदर्भ जोडा. हे कसे करायचे याबद्दल आपल्याला खात्री नसल्यास, कृपया मागील पोस्ट वाचा, ज्यात पॅकेज वापरण्याविषयी माहिती आहे, आणि अवलंबन यशस्वीरित्या संदर्भित आहेत का ते तपासा.

एरर मॉड्यूलच्या आधी, आम्ही "कॉमन.एफएस" फाईलमधे "डीबी" नावाचे नवीन मॉड्यूल बनवितो, ज्यात आमची सर्व डेटाबेस-संबंधित फंक्शन्स असतात. याव्यतिरिक्त, जेसीओएन फाईलच्या डीझेरिअलायझेशन / सिरिअलायझेशनसाठी सर्व कोड, ज्यावर आपण आधी तुलना मॉड्यूलमध्ये कार्य केले, ते हटविले गेले.

हार्ड-कोड केलेले एकमात्र शाब्दिक कनेक्शन कनेक्शनचे आहे. [आपण सर्जनशील होऊ इच्छित असल्यास, आपण ते एफशार्प.कॉन्फिगरेशन लायब्ररी वापरुन कॉन्फिगरेशन फाइलमध्ये ठेवू शकता.]

सर्व काही करून, डीबी मॉड्यूल असे दिसते:

मॉन्गो + एफ # सीआरयूडीवरील अधिक तपशील माझ्या मागील ब्लॉग पोस्टमध्ये आढळू शकतात, जे आपण येथे शोधू शकता. आणि कॉन्फिगरेशनसह सुधारित अलार्म मॉड्यूल आता यासारखे दिसते:

सामान्यीकरण

ब्रूअरी-विशिष्ट कोड केवळ ब्रूअरी-विशिष्ट पार्सरमध्ये आणि मुख्य फंक्शन फाइलमध्ये आहे ज्यामध्ये ब्रूअरीसाठी पाइपलाइन असते. ब्रेव्हरच्या नावावर आधारित जेसन फाइल तयार करण्यासाठी आम्हाला तुलना मॉड्यूल बदलण्याची आवश्यकता आहे.

बदललेले बीअरवे ओरिएंटेड प्रोग्रॅमिंग मॉड्यूल आता यासारखे दिसते:

आणि तुलना मॉड्यूलमधील बदललेली तुलना फंक्शन आता असे दिसते:

नियोजक

पुढील चरण म्हणजे टाइमरवर ब्रूअरी पाइपलाइन चालविण्यासाठी शेड्यूलर सेट करणे. यासाठी आम्ही पॅकेजद्वारे नियोजन करण्यासाठी क्वार्ट्ज.नेट डाउनलोड करतो.

या एफ स्निपेटनंतर आम्ही सर्व ब्रूअरीमध्ये जाण्यासाठी सहजपणे नियोजित प्रक्रिया सेट करू शकतो आणि दर 2 सेकंदासाठी तपशीलांचे विश्लेषण कायमचे करू शकतो.

आम्ही आमच्या बिअरच्या खरेदीवर संतोष देत नाही, परंतु कंपनीच्या स्तरावर बिअरला बाजूका मिळेल अशी प्रक्रिया करा.

सतत स्क्रॅच

अखेरीस, “बिअरवे-ओरिएंटेड प्रोग्रामिंग” च्या सहाय्याने आमच्या स्क्रॅप्स त्याच मोंगोडीबी डेटाबेसमध्ये सेव्ह करण्याची शक्यता जोडा.

त्याच कारणास्तव आम्ही आमची प्रक्रिया सामान्य करतो जेणेकरुन इतर मद्यपान करणारे पार्सर्स सहजपणे जोडले जाऊ शकतात, आम्ही जेएसओएन सीरियलायझेशन काढून टाकल्यानंतर आणि फाईलच्या बाहेर आणि डीसेरियलायझेशन काढून ब्रेव्हरच्या नावावर आधारित डेटाबेसच्या संग्रहांना नाव देऊ. आहे.

प्रथम, बीरइन्फो रेकॉर्ड प्रकार पुनर्प्राप्त करून आणि चिरॉन आधारित स्थिर घटक काढल्यानंतर बीसनऑब्जेक्टआयडी मोंगोडीबी आयडी जोडून सर्व जुने जेएसओएन सीरियलायझेशन आणि डीसेरायझेशन घटक काढा.

नवीन बीअरफो मॉड्यूल असे दिसते:

आपण लक्षात घेतल्यास, आम्ही # बीअर्स प्रकार "एफ वन" तयार केलेल्या सी # मोंगोडीबी ड्रायव्हरशी जुळण्यासाठी एफशार्प सूचीमधून "वन" मध्ये "सिस्टीम. जेनेरिक.कलेक्शन" केले.

आम्हाला आता गरज नसल्याने चिरॉनचा संदर्भ काढून टाकू. हे करण्यासाठी, कमांड पॅलेट [सीएमडी + शिफ्ट + पी] उघडा आणि fsproj फाईल उघडल्यानंतर, खाली पाकेटच्या काढण्याच्या संदर्भात जा.

एकदा चिरॉनचा संदर्भ काढून टाकल्यानंतर आम्ही आमच्या डीबी मॉड्यूलमध्ये काही पद्धती जोडू जे नवीन आयडी तयार करण्यासाठी आणि मागील स्क्रॅप मिळविण्यासाठी संबंधित आहेत.

ब्रुअरीच्या नावाने संग्रह मिळवण्याचा प्रयत्न करताना एखादा अपवाद आढळल्यास त्यास ब्लॉकसह पुन्हा तयार करण्याचा प्रयत्न केला जातो.

आम्ही शेवटची स्क्रॅप हस्तगत करून स्क्रॅप्स तुलना मॉड्यूलपासून डीबी मॉड्यूलपर्यंत ठेवण्याची जटिलता कमी केली आहे. आम्ही शेवटचे स्क्रॅप शून्य असल्याचे तपासून टाकतो [आपण फर्स्टऑरडॉफॉल्ट () वापरत असल्यामुळे त्यातील शून्यता तपासण्यासाठी ऑब्जेक्टमध्ये रुपांतरित केल्यावर].

आमचे अद्यतनित केलेले थकलेले हॅन्डस्क्रॅपर.स्क्रॅप कार्य आता असे दिसते:

GetBeerNamesFromTiredHands फंक्शन असे दिसते:

याव्यतिरिक्त, आमचे तुलना मॉड्यूल लक्षणीय सुलभ केले आहे:

आमचे स्क्रॅप कायमच आहे, थकलेले हँड्स संग्रहातील आमची कागदपत्रे तपासून याची पुष्टी केली जाऊ शकते हे चांगले आहे:

निष्कर्ष

आम्ही कॉन्फिगरेशन जोडून, ​​सामान्यीकरण करून, नियोजन करून आणि देखरेखीद्वारे निश्चितच खूप पुढे आलो आहोत. आधीच नमूद केल्याप्रमाणे, या मालिकेच्या पुढच्या आणि शेवटच्या पोस्टमध्ये या एकदाच्या साध्या अनुप्रयोगास पूर्णपणे विकसित केलेल्यामध्ये रुपांतरित करण्यासाठी काही चाचण्या आणि लॉगिंग आहेत.

तुमचा अभिप्राय मिळाल्यामुळे मला नेहमीच आनंद होतो!