2009-02-20 17 views
21

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

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

क्यों? यह डिजाइन सोच में बदलाव को कम करने में मदद करता है। सरल उदाहरण आसान हैं, लेकिन असली दुनिया में जावा एप्लिकेशन (सिंगल थ्रेडेड) में आप जटिल संबंधों के साथ 1000 सदस्यों के साथ ऑब्जेक्ट ग्राफ़ रख सकते हैं। लेकिन एजेंट आधारित समेकन विकास के साथ यह बड़े सिस्टम को डिजाइन करते समय समझने के लिए विचारों का एक नया सेट प्रस्तुत करता है। अर्थात। एजेंट ग्रैन्युलरिटी - एक एजेंट को कितना राज्य प्रबंधित करना चाहिए - प्रदर्शन आदि पर प्रभाव या एजेंट आधारित सिस्टम में साझा राज्य ऑब्जेक्ट ग्राफ़ मैपिंग के लिए उनके अच्छे पैटर्न हैं। डिजाइन करने के लिए डोमेन मॉडल मैपिंग पर युक्तियाँ। तकनीक पर चर्चा नहीं, लेकिन डिज़ाइन में तकनीक का सर्वोत्तम उपयोग करने के तरीके के बारे में अधिक जानकारी (असली दुनिया "जटिल" उदाहरण बहुत अच्छा होगा)।

उत्तर

1

मैंने एक समान प्रश्न पूछा here जिसमें कुछ उचित उत्तर थे जो मदद कर सकते हैं। मैं तुम्हारा ध्यान से देख रहा हूँ। मुझे अभी तक कुछ ऐसा नहीं मिला है जिसने वास्तव में मेरी मदद की है, लेकिन मैं बहुत सक्रिय रूप से देख रहा हूं।

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

2080 programmers question का मेरा जवाब "समवर्ती" है।

10

भले ही मैं किसी भी वास्तविक वास्तविक दुनिया के उदाहरणों के साथ नहीं आ सकता हूं जो आपको पैटर्न सीधे डिज़ाइन प्रदान करता है, शुरू करने के लिए कुछ स्थान हैं।

सबसे पहले अवधारणाओं के चारों ओर अपने सिर को लपेटा जा रहा है। की सहायता करने वाली एक पुस्तक यह है कि आप Making reliable distributed systems in the presence of software errors एर्लंग गुरु जो आर्मस्ट्रांग द्वारा लिखे गए हैं, जहां एक बहुत ही सुलभ तरीके से कंसुरेंसी ओरिएंटेड प्रोग्रामिंग बताते हैं। यह वास्तव में एक पीएचडी है। थीसिस, लेकिन आपको डराओ मत। सबसे आम पाठ पुस्तकों की तुलना में सौदेबाजी में पढ़ने और सुखद होने के लिए यह बहुत आसान है।

वास्तविक प्रणालियों को देखते हुए आम तौर पर इसका मतलब है कि आपको वास्तविक भाषा के बारे में बहुत कुछ सीखना है, इसके लिए चीजों का मूल्यांकन करने के लिए भी समझदारी है। Erlang के लिए documentation डिजाइन पद्धति और व्यवहार प्रदान करता है (डिजाइन पैटर्न पुस्तकालयों के लिए Erlang भाषण)। यह इस सेटिंग में सबसे अधिक उपयोग किए जाने वाले डिज़ाइन पैटर्न को चित्रित करेगा। और ये बड़े पैमाने पर सिस्टम बनाने में प्रभावी साबित हुए हैं, यानी कोड की लाखों लाइनें (जावा जैसी अन्य भाषाओं के कारक 4 से 10 के बराबर) और मशीनों के वितरित क्लस्टर में एक मशीन पर चल रही समवर्ती प्रक्रियाओं की मिलन। वास्तविक लाइव सिस्टम का एक हालिया उदाहरण Facebook Chat है।

अन्य ढांचे के लिए मैं वास्तव में आपकी मदद नहीं कर सकता मैं डरता हूं।

+0

फेसबुक चैट दिलचस्प लगता है। जब आप चैट/पीबीएक्स डिज़ाइन के मुद्दे को देखते हैं, तो "इंटरैक्शन" ऑब्जेक्ट्स एक अच्छा "एजेंट" बनाते हैं क्योंकि राज्य (पार्टियों, प्रत्येक पार्टी आदि के लिए एफएसएम) के संदर्भ में अधिकांश भाग स्वयं के लिए एक बातचीत होती है। यह देखना अच्छा लगेगा कि उन्होंने डिजाइन के अनुसार क्या किया। – nso1

4

एक "अभिनेता" समवर्ती प्रोग्रामिंग (एक एसिंक्रोनस संदेश कतार और इसके प्रसंस्करण के लिए एक निष्पादन संदर्भ) के लिए एकजुट पैटर्न है, लेकिन कई डिज़ाइन पैटर्न हैं जो एजेंट-आधारित सिस्टम के पहलुओं या तत्वों को निर्दिष्ट करने में सहायता करते हैं। विकिपीडिया के आलेख में Concurrency Patterns पर सबसे आम पाया जा सकता है।कुछ मुख्य बातें:

आप इसे भर में पहले से ही नहीं आए हैं, तो Akka ब्याज की आप के लिए हो सकता है - यह एक है JVM पर चल रहे "पूरी तरह से" घटना संचालित अभिनेता ढांचा।

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