2012-02-20 13 views
70

के साथ अक्का के अभिनेता का क्या अंतर है, मैंने पाया कि वहां एक अक्का अभिनेता मॉडल भी है, इसलिए मुझे आश्चर्य है कि अक्का के अभिनेता और स्कैला के अभिनेता मॉडल के बीच क्या अंतर है?स्कैला के अभिनेता मॉडल

+1

देखें [स्कैला में विभिन्न अभिनेताओं के कार्यान्वयन के बीच क्या अंतर है?] (Http://stackoverflow.com/q/5997018/53013) –

+1

स्कैला कलाकार अब अक्का अभिनेताओं के पक्ष में बहिष्कृत हैं, तो परेशान क्यों हैं? :) http://goo.gl/VaPOu –

उत्तर

54

ठीक है, ऐसा नहीं है। केवल अभिनेता मॉडल है, और अक्का अभिनेता और स्कैला अभिनेता उस मॉडल के दो कार्यान्वयन हैं।

सभी अभिनेता मॉडल का कहना है कि अपने संगामिति पुरातन अभिनेता हैं, जो कर सकते हैं:

  • एक संदेश प्राप्त होता है और संदेश की सामग्री के आधार सहित, आगे क्या करना है तय:

  • भेजने संदेशों को किसी भी अभिनेता के लिए उन्हें पता है के बारे में

  • नए अभिनेताओं

बनाने

  • किसी भी अभिनेता एक बार में केवल एक ही संदेश संभाल लेंगे

  • संदेशों अभिनेता वाई के अभिनेता एक्स द्वारा भेजे गए आदेश बताने वाली में आ जाएगा

    भेजा गया था: 10

    और कुछ की गारंटी देता है, उदाहरण के लिए प्रदान करता है

इस स्तर पर स्कैला और अक्का अभिनेताओं के बीच कोई अंतर नहीं है।

वे क्या कर सकते हैं में अंतर के लिए, Different Scala Actor Implementations Overview देखें। मेरे लिए सबसे बड़ा, यह है कि अक्का पर्यवेक्षकों और अभिनेता रजिस्ट्री का समर्थन करता है।

+5

स्वीकार्य उत्तर से जुड़ी तुलना पीडीएफ अब उपलब्ध नहीं है। यहां अक्का डेवलपर्स में से एक की तुलना है: http://akka.io/docs/misc/Comparison_between_4_actor_frameworks.pdf – Frank

+5

आपका लिंक 404 भी है। यह वर्तमान में काम कर रहा है: http://doc.akka.io/docs/misc/Comparison_between_4_actor_frameworks.pdf –

6

यह "मॉडल" के साथ आपका क्या मतलब है उस पर थोड़ा निर्भर करता है - आप या तो "निष्पादन मॉडल" या "प्रोग्रामिंग मॉडल" (और शायद अन्य मॉडल भी) का संदर्भ ले सकते हैं।

निष्पादन मॉडल के लिए, मूल रूप से दो: थ्रेड-आधारित या ईवेंट-आधारित हैं। स्कैला मानक अभिनेता पुस्तकालय में दोनों शामिल हैं। थ्रेड-आधारित प्रत्येक अभिनेता के लिए एक थ्रेड का उपयोग करता है, जबकि ईवेंट-आधारित थ्रेड-पूल का उपयोग करता है। पूर्व समझने के लिए अधिक सहज है, उत्तरार्द्ध अधिक कुशल है। अक्का घटना-आधारित मॉडल पर बनाया गया है।

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

यदि आप स्केल मानक अभिनेताओं के विभिन्न निष्पादन मॉडल और प्रोग्रामिंग मॉडल में रूचि रखते हैं तो मैंने इस मुद्दे पर afewposts लिखा है।

29

एक ऐतिहासिक उत्तर भी है। स्कैला के रचनाकारों ने सोचा कि एक अभिनेता ढांचा होना चाहिए। जोनास बोनेर ने इसे आजमाया, लेकिन पूरी तरह से संतुष्ट नहीं था इसलिए उसने एक नए काम पर काम करना शुरू किया - जो अक्का में विकसित हुआ।हालांकि, स्कैला लोगों ने सोचा कि यह अपने आप से बेहतर था - इसलिए जेफोकस 2011 में उन्होंने घोषणा की कि अक्का स्काला के मानक अभिनेता ढांचे बनना था। हालांकि, उस प्रवास में कुछ समय लगेगा।

+1

यूप, स्कैला अभिनेता लाइब्रेरी 2.11 में पहले से ही बहिष्कृत है http://docs.scala-lang.org/overviews/core/actors -migration-guide.html – anshumans

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