2010-05-24 12 views
27

मैं Nitrogen Project देख रहा हूं जो एरलांग के लिए सबसे परिपक्व वेब विकास ढांचा माना जाता है।एरलांग पर नाइट्रोजन के साथ आपका अनुभव क्या है?

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

अन्य मुख्यधारा वेब फ्रेमवर्क जैसे Django या Rails के विपरीत इसके साथ आपका अनुभव क्या है?

+3

यदि वेनिला एरलांग वाक्यविन्यास आपको परेशान करता है तो दो वैकल्पिक विकल्प जो आपको वैकल्पिक वाक्यविन्यास के साथ एरलांग देते हैं: एलएफई (लिस्प स्वादयुक्त एरलांग) जो आपको एक पूर्ण लिस्प वाक्यविन्यास देता है और http://github.com/rvirding/lfe पर मिलता है ; इफेन जो आपको सिंटैक्स की तरह एक और जावास्क्रिप्ट/पायथन देता है और http://marianoguerra.com.ar/efene – rvirding

उत्तर

31

मैंने अब तक नाइट्रोजन के साथ बहुत कम किया है, लेकिन मैं महीनों के लिए मेलिंग सूची की निगरानी कर रहा हूं, इसलिए मुझे लगता है कि इसके बारे में कुछ कहना उपयोगी है।

एरलांग और नाइट्रोजन ढांचे के सिंटैक्स के बारे में आपकी चिंता के लिए, मैं जवाब दूंगा कि यह अनावश्यकता के बजाय अपरिचितता के शुद्ध मामले की तरह लगता है। उद्देश्य से, एचटीएमएल एक सुंदर भाषा नहीं है, और इसमें बहुत सारे क्विर्क हैं। अब आप इसका इस्तेमाल कर रहे हैं, इसलिए यह इतना बुरा प्रतीत नहीं होता है। नाइट्रोजन/एर्लांग को एक मौका दें और आप पाएंगे कि आप जल्द ही इसका उपयोग भी कर सकते हैं।

अन्य भाषाओं और ढांचे की तुलना के बारे में आपके प्रश्न के लिए, मैं कहूंगा कि सबसे बड़ा अंतर यह है कि नाइट्रोजन के साथ, पूरी वेबसाइट सीधे एर्लांग रनटाइम द्वारा परोसा जा रहा है। रेल पर रूबी का एक तरीका है, लेकिन यह केवल परीक्षण के लिए है। कई अन्य ढांचे में एक लंबे समय तक चलने वाली प्रक्रिया के भीतर सबकुछ चलाने का विकल्प भी नहीं मिलता है।

पूरे वेब अनुप्रयोग और उसके अंतर्निहित बुनियादी ढांचे एक भी लंबी चलने वाली प्रक्रिया के भीतर चल रहा है कैसे साइट चलाता है पर महत्वपूर्ण प्रभाव पड़ता है:

  • अपाचे के साथ

    , प्रत्येक बच्चे को हर एन कनेक्शन को मार डाला जाता है, जहां N = 500 या तो, और आप यह नहीं कह सकते कि कोई दिया गया बच्चा हमेशा किसी दिए गए ग्राहक के अनुरोधों को संभाल लेगा या नहीं। चूंकि HTTP स्टेटलेस है लेकिन वेब ऐप्स को लगभग हमेशा कुछ क्लाइंट स्टेटस की आवश्यकता होती है, इसलिए एक अपाचे बच्चे को नए कनेक्शन को संभालने के हिस्से के रूप में ग्राहक स्थिति के अपने दृश्य को पुनर्निर्माण करना होगा। डिफ़ॉल्ट रूप से, इसका मतलब उस क्लाइंट के बारे में संग्रहीत लगातार डेटा के लिए डिस्क पर वापस जाना है। memcached जैसे विकल्प हैं, लेकिन इन्हें LAMP प्रकार के ढेर के मूल में नहीं बनाया गया है। एरलांग के साथ, समय-समय पर कुछ भी नहीं मारा जाता है, और एरलांग मानक सुविधाओं जैसे मेनेसिया प्रदान करता है जो डिस्क-बैक इन-मेमोरी डीबी प्रदान करता है।

    संयोग से, यदि आप nginx से परिचित हैं, तो यह एरलांग के समान सिद्धांतों पर बनाया गया है, और यह उसी कारण से तेज़ है। एक वेब सर्वर चलाने वाले nginx और एक Erlang उदाहरण के बीच मुख्य अंतर यह है कि nginx प्रोग्रामिंग वातावरण नहीं है, इसलिए इसे अभी भी बाहरी कोड में बहुत सारी प्रोसेसिंग का प्रतिनिधि होना है। इसका मतलब है कि यह एक ही आईपीसी और लगातार राज्य की समस्याओं को अपाचे के रूप में साझा करता है।

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

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

    एरलांग एक अशुद्ध कार्यात्मक भाषा है, जिसका तात्पर्य है लेकिन डेटा शुद्धता की आवश्यकता नहीं है; यह मल्टीप्रोसेसिंग के साथ भी बनाया गया है, जो रनटाइम डिज़ाइन के मूल तक स्पष्ट हो जाता है। इन दो तथ्यों का मतलब है कि आप किसी अन्य ढांचे में से एक पर बने एक ईरलींग आधारित सर्वर में ताले पर प्रतीक्षा करने में समय बिताने की संभावना कम हैं। अन्य प्रणालियों में लॉक देरी को दूर करना निश्चित रूप से संभव है, लेकिन क्या वास्तव में आप क्या करना चाहते हैं? क्या आप हजारों टीम में रहना चाहते हैं, जो सीखना है कि सेवा लोकप्रिय होने के बाद अपने वेब स्टैक को अनुकूलित कैसे करें, या आप इसे टूलिंग तक छोड़ देंगे, ताकि आप अपना समय कुछ और कर सकें जो किसी और ने अभी तक नहीं किया है ?

6

मैं भी एक बार क्लंकी एरलांग वाक्यविन्यास के बारे में चिंतित था। मैं हर रोज वेब प्रोग्रामिंग के लिए अपने खीज कम करने के लिए उपकरणों की एक जोड़ी का निर्माण किया है, और शायद आप उनमें से एक या दोनों सहायक होगी:

  • ErlyDTL Django टेम्पलेट भाषा के एक Erlang कार्यान्वयन है; इतना है कि यह नाइट्रोजन में उपलब्ध नहीं है, लेकिन यह इस तरह के Zotonic, Erlang वेब, BeepBeep, और शिकागो बॉस

  • Chicago Boss के रूप में अन्य व्यवस्थाएं, में उपलब्ध है एक पूर्ण ढेर Erlang रूपरेखा है कि कोड पीढ़ी के एक बहुत करता है आप कर सकते हैं समारोह के साथ पहुँच डेटा फ़ील्ड Erlang के बजाय वर्बोज़ रिकॉर्ड वाक्य रचना के बजाय कॉल (जैसे Person:name()Person#person.name के बजाय)

ध्यान दें कि नाइट्रोजन एक डेटाबेस परत शामिल नहीं है, तो यह वास्तव में रेल या Django के लिए तुलनीय नहीं है। डेटाबेस चालित चौखटे के लिए एक व्यापक तुलना के लिए, इस StackOverflow सवाल का मेरा उत्तर की जाँच:

https://stackoverflow.com/questions/1822518/current-state-of-erlang-web-development-frameworks-template-languages/2898271#2898271

+1

पर पाया जाता है डेटाबेस डेटाबेस को ज़ोटोनिक से चुना जा सकता है, वे पोस्टग्रेस्क्ल का उपयोग कर रहे हैं। (डीबी-लेयर को एरलांग में अंतहीन समय लागू किया जाता है, इसलिए सबसे अच्छा उपयोग करना बहुत महत्वपूर्ण है। मैं ज़ोटोनिक चुनूंगा) – Flinkman

+0

पुन: "नाइट्रोजन में कोई डीबी नहीं", नास्ट्रोजन के निर्माता और प्राथमिक डेवलपर रस्टी क्लोफॉस, बाशो के लिए काम कर रहे हैं , जो रीक को बाहर रखता है, वेब साइटों का समर्थन करने के लिए वितरित एक वितरित डीबी। (बाशो ने वेबमाचिन को भी एक और जवाब में बताया है।) रस्टी ने वीमियो पर एक प्रस्तुति दी है कि दोनों एक साथ कैसे उपयोग करें: http://vimeo.com/8258045 ऐसा लगता है कि ये तीन प्रौद्योगिकियां सभी जा रही हैं किसी भी तरह से बढ़ो। –

4

मैं अगर मैं तुम थे Webmachine की जाँच होगी। यह काफी सरल, तेज़ है, और आपके लिए इंटरफ़ेस छोड़ देता है।

3

Erlang Web को परिपक्व माना जाना चाहिए। यह एक एमवीसी ढांचा है, जबकि नाइट्रोजन अधिक घटना आधारित है। यह वरीयता का मामला है।

मैंने वेबमाचिन को छोड़कर यहां उल्लिखित अन्य टूल्स का उपयोग नहीं किया है, जो मुझे लगता है कि यह एक अद्भुत टूल है, लेकिन यह दूसरों की तरह एक वेब ढांचा नहीं है। यह HTTP प्रोसेसर के रूप में है, और एक आरामदायक इंटरफेस बनाने के लिए आदर्श है।

मैं यह भी सुझाव दूंगा कि आप एर्लांग सिंटैक्स को मौका दें। Erlang उपयोग करने के लिए मेरी पसंदीदा भाषाओं में से एक है।

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