c# - सी#के लिए अभिनेताओं का कोई अच्छा कार्यान्वयन?




.net concurrency (10)

क्या .NET / c # के लिए अभिनेता समवर्ती मॉडल का कोई अच्छा कार्यान्वयन है?

मुझे एसी # दिनचर्या को अनुकूलित करना है और मुझे लगता है कि अभिनेता मॉडल पूरी तरह से मेरी समस्या के समाधान के रूप में फिट बैठता है। दुर्भाग्य से मुझे केवल स्केल कार्यान्वयन के साथ अनुभव है।



FSharp.Actor

एफ # के लिए एक अभिनेता ढांचा।

एक उदाहरण से:

let rec schizoPing =
    (fun (actor:IActor<_>) ->
        let log = (actor :?> Actor.T<_>).Log
        let rec ping() =
            async {
                let! (msg,_) = actor.Receive()
                log.Info(sprintf "(%A): %A ping" actor msg, None)
                return! pong()
            }
        and pong() =
            async {
                let! (msg,_) = actor.Receive()
                log.Info(sprintf "(%A): %A pong" actor msg, None)
                return! ping()
            }
        ping()
    )

'Schizo' अभिनेता को दो संदेश भेजना परिणाम

let schizo = Actor.spawn (Actor.Options.Create("schizo")) schizoPing

!!"schizo" <-- "Hello"
!!"schizo" <-- "Hello"

आउटपुट:

(schizo): "Hello" ping
(schizo): "Hello" pong

इसे github और docs पर ढूंढें


आज माइक्रोसॉफ्ट ने एज़ूर सर्विस फैब्रिक की घोषणा की जो इस तस्वीर के अनुसार, एक अभिनेता प्रोग्रामिंग मॉडल लागू करता है:

घोषणा देखें: http://azure.microsoft.com/blog/2015/04/20/announcing-azure-service-fabric-reducing-complexity-in-a-hyper-scale-world/

अपडेट करें: SDK अब उपलब्ध है और साथ ही एक वीडियो ट्यूटोरियल भी है।


आपको रोबोटिक स्टूडियो का हिस्सा एमएस कंसुरेंसी एंड कोऑर्डिनेशन रनटाइम (सीसीआर) , और विकेंद्रीकृत सॉफ्टवेयर सर्विसेज (डीएसएस) पर एक नज़र रखना चाहिए।

ये ढांचे आपको कमजोर युग्मित सेवाओं को विकसित करने की अनुमति देंगे जो अधिकांश अभिनेता-दृष्टिकोण आवश्यकताओं को पूरा करते हैं।

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

सी # नहीं है लेकिन सी ++ माइक्रोसॉफ्ट के असिंक्रोनस एजेंट्स लाइब्रेरी है जो आपको आवश्यक सभी सुविधाएं देता है।

.NET 4 की समांतर संबंधित विशेषताओं पर एक अच्छा नज़र डालें।

आशा करता हूँ की ये काम करेगा!


कोई भी अभिनेताओं पर प्रोजेक्ट ऑरलियन्स माइक्रोस्कोफ्ट दृष्टिकोण को देख सकता है। (जिसे पिछले हफ्ते जारी किया गया था)

यह प्रोजेक्ट वेबसाइट है: http://research.microsoft.com/en-us/projects/orleans/

निर्माण 2014 के रूप में परिचय के साथ भी एक अच्छी बात है

Azure में हेलो 4 की वितरित क्लाउड सर्विसेज बनाने के लिए ऑरलियन्स का उपयोग करना http://channel9.msdn.com/Events/Build/2014/3-641

कृपया ध्यान दें कि आज पोस्ट किए गए डाउनलोड के लिए बिट्स सीटीपी हैं।

ऑरलियन्स का परिचय: http://felixnotes.com/orleans-microsofts-take-on-the-actor-pattern-in-net/

और हाँ, यह भी खुले खुले थे: https://github.com/dotnet/orleans


क्या आपने टी के मेलबॉक्सप्रोसेसर को एफ # के साथ प्रदान किया है?


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


मुझे सी # के लिए किसी भी कार्यान्वयन की जानकारी नहीं है, लेकिन माइक्रोसॉफ्ट द्वारा अभिनेता मॉडल के आधार पर एक पूरी नई प्रोग्रामिंग भाषा है। इसे Axum कहा जाता है:

Axum (पहले कोडनामयुक्त Maestro ) एक डोमेन विशिष्ट समवर्ती प्रोग्रामिंग भाषा है, जो कि अभिनेता मॉडल के आधार पर माइक्रोसॉफ्ट द्वारा विकसित किया जा रहा है। यह एक ऑब्जेक्ट-ओरिएंटेड भाषा है जो .NET कॉमन लैंग्वेज रनटाइम पर आधारित है, सी-जैसे सिंटैक्स का उपयोग करके, जो डोमेन-विशिष्ट भाषा होने के नाते, एक सॉफ़्टवेयर एप्लिकेशन के हिस्सों के विकास के लिए है जो समेकन के लिए उपयुक्त है। लेकिन इसमें पर्याप्त सामान्य उद्देश्य संरचनाएं शामिल हैं जिन्हें समवर्ती घटकों के क्रमिक भागों के लिए किसी सामान्य उद्देश्य प्रोग्रामिंग भाषा (जैसे सी #) पर स्विच करने की आवश्यकता नहीं है।


NAct .NET के लिए एक अभिनेता ढांचा है जो वास्तव में उपयोग में आसान दृष्टिकोण लेता है। (अस्वीकरण: मैंने इसे लिखा)

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

यह आपकी ऑब्जेक्ट्स को प्रॉक्सी में लपेटकर काम करता है जो थ्रेड स्विचिंग से संबंधित है। सभी सामान्य .NET विशेषताओं, विशेष रूप से घटनाओं को सही ढंग से निपटाया जाता है, ताकि आप सामान्य कोड लिख सकें और थ्रेड मार्शलिंग स्वयं ही हो।

सी # 5 async / प्रतीक्षा के लिए समर्थन के साथ एक शाखा भी है।


Remact.Net मेरी वर्तमान परियोजना है। यह रिमोट एक्टर मैसेजिंग के लिए वेबसाकेट्स और जेसन का उपयोग करता है। इसमें सी # कलाकारों के लिए टाइपफैटी है लेकिन जावा स्क्रिप्ट में लिखे गए ब्राउज़र आधारित अभिनेताओं के लिए गतिशील प्रकारों का भी समर्थन करता है।

मेरी पिछली परियोजना AsyncWcfLib था। यह एक प्रक्रिया में या विभिन्न अनुप्रयोगों के बीच संचार करने वाले कलाकारों के लिए सी # लाइब्रेरी है। दूरस्थ संदेश पास डब्ल्यूसीएफ का उपयोग करता है।
एक अभिनेता कैटलॉग सेवा कई मेजबानों पर अभिनेता की खोज को सक्षम बनाता है। मेजबान विंडोज या लिनक्स चला सकते हैं।





actor