2011-01-04 8 views
10

मैंने स्नैप और यसोड जैसे हास्केल वेब ढांचे को देखा। ज्यादातर रूबी ऑन रेल जैसे वेब ढांचे के बारे में मुझे याद दिलाने वाले एमवीसी-आईश दृष्टिकोण को लागू करने लगते हैं। हां, एमवीसी एफपी के साथ हासिल किया जा सकता है, लेकिन आईएमएचओ यह एफपी दृष्टिकोण के महान फायदे नहीं दिखाता है। चूंकि HTTP एक स्टेटलेस प्रोटोकॉल है, इसलिए मुझे उम्मीद थी कि एक हास्केल फ्रेमवर्क हो सकता है जो अधिक मूल, अधिक शुद्ध कार्यात्मक दृष्टिकोण लेता है। क्या वहां पर कोई?क्या कोई और मूल, अधिक कार्यात्मक हास्केल वेब-फ्रेमवर्क हैं?

+9

HTTP स्टेटलेस हो सकता है, लेकिन वेब ऐप्स निश्चित रूप से नहीं हैं। –

+1

ठीक है, वेब ऐप्स सत्र स्थिति जैसे चीजों के अनुरोध के बीच स्थिति की नकल करते हैं, लेकिन राज्य के पास बहुत ही आंतरिक कारण है। यह सिर्फ इतना है कि डेवलपर्स को इस तरह हल करने के लिए उपयोग किया जाता है (सर्वर-साइड सत्रों का उपयोग करने की तरह) –

+1

@ वार्डबी: सर्वर-साइड सत्र सुरक्षा/बैंडविड्थ बचत प्रदान करते हैं जो हासिल करना कठिन होगा यदि डेटा के प्रत्येक टुकड़े को ऑफ़लोड किया गया हो ग्राहक और प्रत्येक अनुरोध पर वापस प्रसारित किया जाना था। बेशक, एचटीएमएल 5 आने के साथ, क्लाइंट साइड पर सत्र डेटा संग्रहीत करना एम्बेडेड एसक्लाइट डीबी के लिए आसान हो सकता है; यह निश्चित रूप से सुरक्षा प्रश्न को हल नहीं करता है। अभी भी एक दिलचस्प सवाल :) –

उत्तर

9

मुझे यकीन नहीं है कि एफपी में कौन सी विशेषताएं आप उपयोग करने के लिए एक ढांचा चाहते हैं, लेकिन मुझे लगता है कि यसोड कुछ लाभों का लाभ उठाता है। (Happstack रूप में अच्छी तरह करता है, लेकिन मैं सिर्फ इसके साथ के रूप में परिचित नहीं हूँ।)

  • टाइप सुरक्षित यूआरएल टाइपो-उत्पन्न कीड़े की एक पूरी कक्षा को खत्म करने, प्लस स्वचालित रूप से इनपुट सत्यापन के साथ सौदा।

  • उचित टाइपिंग वास्तव में एक्सएसएस हमलों को समाप्त करती है।

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

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

+0

आपके उत्तर के लिए धन्यवाद। निरंतरता की मेरी समझ यह है कि यह वास्तव में राज्य के बारे में बहुत अधिक है। वेब-विकास में मॉडल का उपयोग एक अनुरूपित राज्यव्यापी वातावरण प्राप्त करने की कोशिश करता है। –

+0

अब तक का सबसे अच्छा जवाब। –

2

यह निर्भर करता है कि आप क्या हासिल करने की कोशिश कर रहे हैं। यदि स्टेटलेस द्वारा आप वास्तव में स्टेटलेस का मतलब रखते हैं, तो मैं स्थैतिक पृष्ठों को उत्पन्न करने के लिए टेम्पलेटिंग फ्रेमवर्क Hakyll का उपयोग करता हूं। निर्भरताओं और फ़ाइल अपडेट से निपटने के लिए इसमें एक दिलचस्प संरचना है।

+0

मेरा मतलब स्थिर पृष्ठों का नहीं था। अनुरोध/प्रतिक्रिया या दुष्प्रभावों के बीच बस कोई साझा स्थिति –

+0

यदि कोई साझा स्थिति नहीं है, और कोई दुष्प्रभाव नहीं है ... आप क्या कर सकते हैं कि स्थिर पृष्ठ नहीं कर सकते हैं? – Carl

+0

@ करल: पेज सामग्री गतिशील रूप से उत्पन्न हो सकती है (अनुरोध पैरामीटर के आधार पर)। –

1

मैं वही ढूंढ रहा था लेकिन वास्तव में इसे नहीं मिला है। विशेष रूप से मैं एक निरंतरता दृष्टिकोण की तलाश में था जो पारंपरिक HTTP सत्रों को अनावश्यक प्रदान करता है। इस तरह के ढांचे योजना में काफी लोकप्रिय हैं।

https://gist.github.com/260052

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

मुझे यह भी विश्वास है कि WASH ने भी इस दृष्टिकोण को लिया लेकिन ऐसा लगता है कि ऐसा हो गया है। मैं अपनी आशाओं को पंसद कर रहा हूं क्योंकि मेरा मानना ​​है कि एक निरंतर आधारित सत्र सुविधा भी देख रहा है जो रोमांचक होगा क्योंकि मैं बाकी स्नैप की गुणवत्ता और इसके पीछे की गति से बहुत प्रभावित हूं।

2

मुझे लगता है कि वार्डबी फैंसी प्रकारों के बारे में नहीं पूछ रहा था, बल्कि आईओ और एसटीएम जैसी चीजों के अनिवार्य/नॉनडेनेटोटिव (और अक्सर नोडेटर्मेनिस्टिक) अर्थशास्त्र के विपरीत एफपी के निंदात्मक/स्टेटलेस अर्थशास्त्र के बारे में नहीं पूछ रहा था। यह यह संकेतक पहलू है जो सटीक & ट्रैक्टेबल तर्क का समर्थन करता है। शब्द "कार्यात्मक" को अनिवार्य/नॉनडेनोटेटिव प्रोग्रामिंग को गले लगाने के लिए भी बढ़ाया गया है, जो अक्सर भ्रम की ओर जाता है। Peter Landin recommended "कार्यात्मक" को "denotative" के साथ बदलकर इस तरह के भ्रम को ठीक करने में मदद करने के लिए।

मुझे किसी भी denotative (nonimperative) Haskell वेब ढांचे के बारे में पता नहीं है। वहां पहुंचने के लिए शायद कुछ लंबे समय तक चलने वाली अनिवार्य मानसिक आदतों को तोड़ने की आवश्यकता होगी। जो कहना है: दिलचस्प काम!

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