2009-08-10 13 views
78

this प्रश्न और हाल ही में affair से प्रेरित, मुझे आश्चर्य है कि हास्केल वेब विकास में क्या शामिल है।हास्केल वेब विकास के लिए पारिस्थितिकी तंत्र क्या है?

  • क्या कोई हैस्केल वेब ढांचे या टेम्पलेट इंजन हैं?
  • हास्केल साइट का काम कैसे होस्ट करेगा, क्या उपयुक्त वेब सर्वर हैं?
  • क्या हास्केल सामान्य विकास के लिए बहुत जटिल है और प्रोटोटाइप आधारित वर्कफ़्लो अक्सर वेब विकास में उपयोग किया जाता है?
  • क्या मौजूदा हास्केल वेब अनुप्रयोगों के उदाहरण हैं?
+11

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

+2

यही कारण है कि मैंने इसे दूसरे प्रश्न से दूर कर दिया, जो मुख्य रूप से अन्य भाषाओं को जानने के लिए सिफारिशों के साथ उत्तर प्राप्त कर रहा था। हास्केल के पारिस्थितिक तंत्र में इस प्रश्न का एक अलग फोकस है, विशेष रूप से वेब केंद्रित परियोजनाएं। : -/ – deceze

+4

सहमत हुए। फिर से खोलने के लिए मतदान। – skaffman

उत्तर

18

सबसे पहले, एक अस्वीकरण: मैंने कभी भी हास्केल वेब विकास नहीं किया है, इसलिए मैं अनुभव से बात नहीं करता हूं।

यदि आप हैकेज पर Web category पर देखते हैं, तो बहुत सारे वेब-संबंधित पैकेज हैं।

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

सबसे प्रमुख हास्केल वेबसर्वर/फ्रेमवर्क/डेटास्टोरेज इंफ्रास्ट्रक्शन Happstack है, जो कई कारणों से दिलचस्प है, सबसे स्पष्ट यह है कि यह अपनी सभी राज्य स्मृति में संग्रहीत करता है और एक संबंधपरक डेटाबेस का उपयोग नहीं करता है।

एक और हालिया वेबसर्वर इंटरफ़ेस hack है, जो मुझे यह नहीं पता कि 1 मिनट का ट्यूटोरियल दिलचस्प दिखता है।

हास्केल में कई और वेबसर्वर/ढांचे हैं, लेकिन ये दोनों ही मेरे सिर के शीर्ष के बारे में जानते हैं।

6

सबसे पहले, अगर वह "मामला" लिंक कभी भी सबसे मजेदार चीजों में से एक नहीं था!

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

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

यदि फास्टसीजी आपकी गति नहीं है ... ठीक है, शायद यॉ या लिफ्ट (क्रमशः एरलांग और स्कैला) एक लायक हैं।

8
  • क्या कोई हैस्केल वेब ढांचे या टेम्पलेट इंजन हैं?

कई वेब ढांचे हैं। वेब श्रेणी में देखो: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web

templating के लिए, HStringTemplate ब्रांड नेता प्रतीत हो रहा है: http://hackage.haskell.org/package/HStringTemplate

  • कैसे एक हास्केल साइट काम की मेजबानी करेगा, वहाँ उपयुक्त वेब सर्वर कर रहे हैं?

स्थैतिक रूप से लिंक अपने स्वयं के वेब सर्वर (जैसे happstack-सर्वर या अन्य हास्केल वेब सर्वर से एक) चल रहा बाइनरी, हास्केल बाइनरी अपाचे से बात कर, ... काफी हर संयोजन के बारे में सोच सकता है।

  • क्या हास्केल सामान्य विकास के लिए बहुत जटिल है और प्रोटोटाइप आधारित वर्कफ़्लो अक्सर वेब विकास में उपयोग किया जाता है?

संख्या और आपको मजबूत गारंटी मिलेगी कि ऐप टाइप सिस्टम के लिए दोषपूर्ण नहीं है।

  • क्या मौजूदा हास्केल वेब अनुप्रयोगों के उदाहरण हैं?

hpaste happstack के लिए एक सरल डेमो है। Tupil.com संपूर्ण व्यवसाय हास्केल वेब ऐप्स है। ड्यूश बैंक ने पिछले साल सीयूएफपी में अपने आंतरिक हास्केल वेब ढांचे (खुशी के आधार पर) पर एक वार्ता दी थी।

+0

खैर, टुपिल भी आईफोन ऐप विकास (उद्देश्य सी में) करता है। वे Haskell वेब ऐप्स _just_ नहीं करते हैं। –

+0

हां, बहुत अच्छा बिंदु, टॉम। –

35

मैंने हास्केल में वास्तविक उत्पादन वेब एप्लिकेशन किए हैं।

  • PostgreSQL डेटाबेस बैकएंड
  • HDBC Postgres यह
  • XHTML से कनेक्ट करने के एचटीएमएल उत्पन्न करने के लिए: यहाँ ढेर मैं प्रयोग किया जाता है। यह एक मजाकिया वाक्यविन्यास का थोड़ा सा है, लेकिन कम से कम आपके पास लैम्ब्डा-अमूर्तता है।
  • Fastcgi बैकएंड को lighttpd पर वेब सेवा करने के लिए कनेक्ट करने के लिए कनेक्ट करने के लिए।

संपूर्ण वेब एप्लिकेशन एक एकल हैकेल प्रोग्राम है, जो मूल कोड ghc से संकलित है। मैंने हाथ से अनुरोध रूटिंग (और रिवर्स रूटिंग) करने के लिए कोड लिखा था।

13

मैंने अपने स्थानीय इंट्रानेट के लिए एक सरल वेबपैप/webservice बनाने के लिए हैप्स्टैक का उपयोग किया है।

  • यह रिकवरी के लिए लेनदेन लॉग (हैप्स्टैक के साथ मानक) के साथ स्मृति में डेटा संग्रहीत करता है। आपको कहीं भी कोड में एसक्यूएल नहीं मिलेगा।
  • कोई टेम्पलेट्स नहीं। आमतौर पर टेम्पलेट्स के साथ क्या करना होगा, मैं जावास्क्रिप्ट में करता हूं। बस जेएसओएन प्रारूप में डेटा प्राप्त करें, और इसे डीओएम में डालें।

हास्केल कोड का सिर्फ 169 लाइनों, Main.hs में सभी, जो सर्वर को परिभाषित कर रहे हैं। बाकी प्रस्तुति के लिए जावास्क्रिप्ट है, और परीक्षण के लिए कुछ पायथन है।

यह खुला स्रोत है, आप इसे GitHub पर देख सकते हैं, और शायद इसे शुरुआती बिंदु के रूप में उपयोग कर सकते हैं।

+1

लाइन 82, आप एक समापन उद्धरण भूल जाते हैं। – Rayne

+10

हास्केल पहचानकर्ताओं में उद्धरण के लिए अनुमति देता है। दुख की बात है कि जिथब का सिंटैक्स हाइलाइटिंग उस पर पड़ता है। – luntain

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