2011-12-21 13 views
8

मेरे पास एक एरलंग/ओटीपी एप्लिकेशन है जो कुछ व्यावसायिक तर्क करता है। यह एरलांग में ज्यादातर गलती सहनशीलता के लिए लिखा गया है, क्योंकि मैं सिस्टम के क्रैश किए गए घटकों में से एक को आसानी से पुनरारंभ कर सकता हूं (उच्च अपटाइम सबसे महत्वपूर्ण आवश्यकता है)। इसके प्रत्येक घटक कुछ विशिष्ट "समानांतर" गणना करता है।वेब अनुप्रयोग के घटक-आधारित आर्किटेक्चर के हिस्से के रूप में ओटीपी/एरलांग का उपयोग

एक कार्य चक्र के परिणामस्वरूप एप्लिकेशन मूल्यों की एक सूची तैयार करता है। आइए इस एर्लांग/ओटीपी एप्लिकेशन को "बैक एंड" कहते हैं।

यह एरलांग/ओटीपी एप्लिकेशन निरंतर भंडारण में परिणामों को संग्रहीत करने के लिए PostgreSQL सर्वर का उपयोग करेगा और इसके गणनाओं के लिए आवश्यक अतिरिक्त मेटा-सूचना संग्रहीत करेगा (अभी तक लागू नहीं किया गया है)।

अगला मैं इस Erlang/OTP आवेदन करने के लिए एक सामने के अंत जोड़ने की जरूरत है - एक सरल वेब आधारित समाधान जो एक वेब उपयोगकर्ता के लिए सेवा कर सकते हैं: उससे संगणना के लिए एक अनुरोध को स्वीकार/उसकी, करने के लिए बैक-एंड पूछना कम्प्यूटेशंस करें और उपयोगकर्ता को बैक एंड से परिणाम दें।

कोई scalability आवश्यकता नहीं है, मुझे लगता है कि प्रतिदिन उपयोगकर्ताओं की अधिकतम संख्या हो सकता है कि कोई और अधिक से अधिक 1000

तो मेरी वर्तमान कार्य अब मेरी पीठ के अंत Erlang के लिए एक आम सामने के अंत लागू करने के लिए है/ओटीपी आवेदन (सामान्य माध्यमों में मेरे पास एक सामान्य उपयोग केस है: साइट पर जाएं, पंजीकरण करें, लॉग-इन करें, ऐप का उपयोग करें, परिणाम को एक अच्छा AJAX 'वेब पेज, लॉग-आउट देखकर प्राप्त करें)।

एक तरफ, मुझे पता है कि कोड पुन: उपयोग मुझे बहुत समय बचा सकता है: उदाहरण के लिए रूबी पर रूबी के साथ मैं उपयोगकर्ता प्रमाणीकरण, पासवर्ड भंडारण, AJAX इंटरफेस और कई अन्य सामान मुफ्त में प्राप्त कर सकता हूं।

दूसरी तरफ मुझे एक एप्लिकेशन को डिजाइन करने के बारे में कुछ भी नहीं पता है जिसमें एक एरलंग/ओटीपी + पोस्टग्रेएसक्यूएल डीबी सर्वर बैक एंड और वेब-फ्रेमवर्क (आरओआर, डीजेगो, आदि) फ्रंट-एंड के रूप में शामिल है।

मेरे मन में बहुत सारे प्रश्न वसंत हैं: क्या परिणाम साझा करने के लिए एरलांग/ओटीपी और वेब-फ्रेमवर्क उसी पोस्टग्रेएसक्यूएल डेटाबेस का उपयोग करना चाहिए? वेब-फ्रेमवर्क से एरलांग/ओटीपी एप्लिकेशन में गणना अनुरोध भेजने और इसे वापस पाने का सबसे अच्छा तरीका क्या है? मैं PostgreSQL सर्वर की निगरानी कैसे करूं - यह ओटीपी की गलती सहनशीलता से ढंका नहीं है?

आम तौर पर, मेरे पास कुछ विषम सॉफ़्टवेयर घटक हैं और मैं उनसे एक कार्य प्रणाली बनाना चाहता हूं ('मुख्य' घटक एरलांग/ओटीपी अनुप्रयोग है)।


मुझे इस कार्य के साथ कहां से शुरू करना चाहिए? क्या आप मुझे कोई सलाह या संकेत दे सकते हैं जो संसाधनों को पढ़ने के लिए?

पीएस मैंने this पढ़ने की कोशिश की है और लिंक का पालन किया है, लेकिन ज्यादा समझ में नहीं आया।

युपीडी: मुझे पता है कि शिकागो बॉस और अन्य Erlang वेब चौखटे मौजूद हैं, लेकिन मुझे शक है कि उनमें से किसी को इस तरह के एक परिपक्व पर्यावरण, जीवंत समुदाय और विभिन्न प्लग इन और जैसे उदाहरण रूबी के लिए पर लाइब्रेरी के विशाल परिवर्तनशीलता है रेल, Django या किसी भी PHP आधारित एमवीसी ढांचे। सही?

UPD2: शायद मुझे इस गहराई से विस्तार करना होगा: मुझे आगे के अंत तक जितना संभव हो सके बनाए रखने की आवश्यकता है। Erlang में ऐसा करने का मतलब है कि मुझे सही डेवलपर्स को बनाए रखने के लिए समस्याओं का सामना करना पड़ सकता है; RoR, Django, आदि में ऐसा करने का मतलब है कि मैं सामने के अंत को बनाए रखने और इसे विकसित करने के लिए आसानी से कार्य बल ढूंढ सकता हूं।

+0

मैंने अपना जवाब भी संपादित किया है। उत्तर अपडेट देखें। धन्यवाद –

उत्तर

4

सबसे पहले, यहां एक एरलांग पोस्टग्रेएसक्यूएल क्लाइंट है: https://github.com/wg/epgsql। एक और बात आप ZOTONIC की जांच करना चाह सकता है। यह एक सीएमएस एर्लांग में लिखा गया है लेकिन यह एक वेब ढांचा भी है। इसकी विशेषताओं में से एक यह है कि उसने PostGreySQL डेटाबेस को बहुत अच्छी तरह से एकीकृत किया है और इसलिए ज़ोटोन्यूक के पीछे सभी एरलांग अनुप्रयोगों से इसका लाभ होगा। एमवीसी या इवेंट संचालित वेब ऐप्स विकसित करते समय यह बहुत अच्छा है।

इसके अलावा, आप Nitrogen Web Framework और Chicago Boss जो एरलांग वेब ऐप्स के लिए वेब फ्रेमवर्क भी देख सकते हैं। मैंने व्यक्तिगत रूप से नाइट्रोजन, यास और मैनेशिया का उपयोग करके एक पूर्ण सेट के रूप में एरलांग वेब ऐप्स विकसित किए हैं। एक बहुत अच्छा फायदा यह है कि इस तकनीक के ढेर के पीछे आपके कई इरलांग अनुप्रयोग हो सकते हैं। इसके हमारे जावास्क्रिप्ट Appmods और dynamic Content Serving ability (ताकि RESTFUL मैं आपको लगता है कि आश्वस्त कर सकते हैं), यह सशक्त बनाया है इस तरह के अद्भुत सादगी और सुंदरता के साथ दृश्यपटल वेब Apps प्रेरित, कई Erlang अनुप्रयोगों का एक समूह से सेवाएं प्रदान करने के साथ याज वेब सर्वर।

यदि आप तेजी से वेब फ्रंट एंड चाहते हैं, तो अजैक्सी/एचटीएमएल 5 जैसी सुविधाओं के साथ, जल्दी करो, जल्दी करो! और Nitrogen Web Framework अपने स्वयं को पकड़ो। चूंकि आप पहले से ही एक एरलांग प्रोग्रामर हैं, यह आपके लिए इतना तेज़ होगा। Templating के साथ, आप HTML4.X/एचटीएमएल 5 टेम्पलेट्स लिखते हैं, या एक Web page Maker/Studio Software का उपयोग आप के लिए टेम्पलेट (रों) बनाने के लिए कर सकते हैं। फिर बाद में, आप नाइट्रोजन जहां में आने के लिए, उन अच्छा आपके Erlang कोड से उत्पन्न होने वाली डायनेमिक रूप से बनाए JQuery कोड का उपयोग कर पेज के लिए अपने Erlang backends बाध्यकारी दिखाएगा।

आपको दस्तावेज़ीकरण बहुत सरल मिलेगा। नाइट्रोजन सिर्फ एक टैग टैग के लिए खड़े प्रत्येक रिकॉर्ड के साथ, एरलांग रिकॉर्ड्स का संग्रह है। अन्य रिकॉर्ड का उपयोग प्रभाव और घटनाओं को परिभाषित करने के लिए किया जाता है जो आपके एरलांग एप्लिकेशन में वापस पोस्ट किए जाएंगे। नाइट्रोजन में वेब सुंदर इंटरफेस विकसित करना इतना तेज़ है। दरअसल, गतिशील रूप से उत्पन्न JQuery कोड के साथ, आप अपने खुद जावास्क्रिप्ट टेम्पलेट में साथ देने के लिए पूरी कार्यक्षमता का कहना है, लिखने की तरह EXT JS, या MooTools या prototype js एक और JavaScript लाइब्रेरी का इस्तेमाल कर रही कर सकते हैं। टेम्पलेट के भीतर आप कहां इंगित करेंगे कि नाइट्रोजन को गतिशील रूप से जेनरेट किए गए HTML तत्वों के साथ-साथ JQuery प्रस्तुत करना चाहिए जो इन तत्वों पर "AJaxically" कार्य करेगा। इस मामले में एक टेम्पलेट का अर्थ केवल एक HTML पृष्ठ है।


अपनी मेलिंग सूची के एक सदस्य बनने अधिक सहायता पाने के लिए और साथ ही यहाँ StackOverflow पर किसी भी अधिक सवाल पूछ रखने के लिए याद रखें। Erlang वेब विकास की दुनिया में आपका स्वागत है। कुछ कई लिंक आप (,
IEEE Paper on Web Development in Erlang
Erlang Web Framework,
erlydtl - Erlang Django like Templating Implementation,
ErlyWeb Framework
) में रुचि हो सकती सफलता!



संपादित
अब, आप क्या कहते हैं वास्तव में सच है। डेवलपर्स को बनाए रखने के लिए यह एक कार्य होगा। हालांकि, जैसा कि मैंने पहले उल्लेख किया है Zotonic एक पूर्णतः (वेब) CMS है जैसे जूमला या वर्ड प्रेस e.t.c. इसके साथ आप स्वयं साइट/एप्लिकेशन को प्रबंधित/बनाए रख सकते हैं।

हालांकि, अगर आप भी Django, या रूबी का उपयोग कर वेब मोर्चे पर रेल का विकास, लेकिन अपने वेब सामने से Mochiweb को JSON स्वरूपित डेटा का उपयोग कर सुरक्षित सेवा बना सकते हैं। फिर, Mochijson2.erl का उपयोग करके जो मोचीवेब के साथ आता है, आप JSON को पार्स करते हैं और इसे अपने Erlang बैक-एंड में अनुरोधों या विधियों और तर्कों में अनुवाद करते हैं। यह दोनों दिशाओं में किया जाएगा यानी आप अपने Erlang अनुप्रयोगों के लिए अनुरोध करते हैं, लौटा परिणाम प्राप्त करें और उन्हें JSON डेटा के रूप में प्रस्तुत करें।

मोचीवेब एक शक्तिशाली उपकरण है जो सेवा/आरईएसटीफुल मॉडल का उपयोग कर सामने किसी भी वेब तकनीक के साथ किसी भी एर्लांग बैक एंड को इंटरफ़ेस कर सकता है। इसका सरल और हल्का वजन। इसकी तेज़ और इसकी ज़रूरत है कि आप इसे इंगित करें कि कौन से तरीकों को पोस्ट करने, प्राप्त करने, eUT.c HTTP अनुरोधों को संभालने के लिए और यह वापस भेजने के परिणामों की प्रतीक्षा करेगा। Mochiweb का उपयोग बहुत से Erlang सिस्टम में किया गया है उदा। Couch DB (सबसे उन्नत NoSQL डीबीएमएस में से एक जिस तरह से हम वेब और SOA सिस्टम को समझने के बदलते) और उन अन्य सभी प्रणालियों जैसे Membase Single Server, Big Couch/Cloudant, e.t.c. आप किसी को mochiweb को कार्रवाई में देख सकते हैं here, then here और lastly here

रेल फ्रेमवर्क पर डीजेगो, ट्विस्ट, पीएचपी, या रूबी जेएसओएन अनुरोध करते हैं और एमएलओएनबी द्वारा संचालित एरलैंग बैक सिरों से JSON प्रतिक्रियाओं की अपेक्षा करते हैं। एरलांग वेब बैक-सिरों के लिए एक और शानदार रीस्टफुल इंटरफ़ेस Misultin है, जो वेब सॉकेट का भी समर्थन करता है और कभी-कभी सबसे तेज़/या सबसे अधिक प्रतिक्रियाशील एरलांग HTTP लाइब्रेरी होने का डर लगता है :)

मेरे अनुभव में, मैंने PHP गुरु, जावास्क्रिप्ट के साथ काम किया है गुरु आदि लेकिन जब भी हम अपने वेब सर्वर को yaws के रूप में Service Oriented Model के साथ JSON अनुरोधों और दोनों दिशाओं के प्रतिक्रियाओं का उपयोग करते हुए विकास सस्ता पाते हैं। इस मामले में हम एरलांग की उपलब्धता और गलती सहनशीलता पर हार नहीं पाते हैं और वैसे, आप JSONP का उपयोग करके डोमेन के विभिन्न उप नेट्स में छिपे हुए हैं, भले ही वे कई वितरित एरलांग सर्वर को कई अनुरोध कर सकें, जो सभी जावास्क्रिप्ट और/या फ्रंट-वेब ढांचे। मैं दृढ़ता से आपको सलाह देता हूं कि आप अपने एर्लैंग बैकएंड के सामने मोचीवेब या मिसल्टिन डालें और जेएसओएन प्रारूप (या यहां तक ​​कि एक्सएमएल, जो आप erlsom का उपयोग करके पार्स करेंगे, इसे here डाउनलोड करें) का उपयोग करके अनुरोध करने के लिए कभी भी वेब फ्रेमवर्क चुनें। मुझे आशा है कि आप जो सुझाव दे रहे हैं उसे प्राप्त करें। सफलता!!!

+1

धन्यवाद! मैंने अपना प्रश्न थोड़ा सा अपडेट किया है। – skanatek

+0

यह आपके उत्तर का वाकई अच्छा संपादन था! क्या आप कृपया मुझे कुछ स्रोत पर संदर्भित कर सकते हैं जहां मैं "जेसीओएन प्रारूपित डेटा का उपयोग कर सुरक्षित सेवाओं" के बारे में और अधिक पढ़ सकता हूं? मुझे पता है कि मोचीवेब क्या है, लेकिन मैंने कभी मोचीवेब के संबंध में सुरक्षित सेवाओं के बारे में नहीं सुना है। – skanatek

1

आप erlang रूप में अच्छी तरह किसी भी उपलब्ध web framework का उपयोग करने में अपने दृश्यपटल को लागू कर सकते हैं। उनके बीच संचार के लिए erlang आरपीसी का उपयोग कर अलग erlang नोड्स में फ्रंट एंड एंड बैक एंड चलाएं।

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