تصویر بالا یک خط لوله را با چهار اکتور، نشان میدهد. میتوان اینطور فرض نمود که هر اکتور یک mailbox دارد و اگر پیامی برای آن اکتور بفرستید، آن را پردازش نموده و کار مخصوص به خود را بر روی آن پیام انجام میدهد و سپس آن پیام را برای اکتور بعدی خود ارسال میکند. اکتور دوم نیز به همان ترتیب کار خود را انجام داده و پیام را به اکتور مابعد خود ارسال میکند و به این ترتیب، یک پیام در خط لوله حرکت نموده و فرآیند مربوطه انجام میشود. اگر دقت کنید یک فرق دیگر هم بین خط تولید کارخانه و این خط لوله وجود دارد و آن این است که این خط لوله به صورت گراف میباشد. یعنی اکتورها میتوانند در ارتباط خود یک حلقه را تشکیل دهند و یا یک اکتور با چندین اکتور ارتباط مستقیم داشته باشد (مثل اکتور سمت چپ تصویر که با دو اکتور دیگر در ارتباط است).
خوب حالا که با مفاهیم خط لوله و اکتور آشنا شدیم، یک مسئلهی بسیار ساده را در نظر میگیریم و آن را با این روش حل میکنیم. فرض کنید یک رشته (string) داریم و میخواهیم عملیات زیر را بر روی آن به ترتیب انجام دهیم:
1- فاصلههای اضافی ابتدا و انتهای رشته حذف شود.
2- اگر رشته یک کلمهای است lowerCase شود.
3- اگر رشته بیش از یک کلمه است، تمام کلمات، به جز کلمهی اول، حذف شوند و سپس مرحلهی 2 بر روی آن انجام شود.
4- نتیجهی کار در خروجی نمایش داده شود.
حالا میخواهیم انجام هر یک از عملیات فوق را به یک اکتور سپرده و یک خط لوله را برای حل این مسئله طراحی کنیم. در قسمت بعدی به صورت عملی و با TPL DataFlow مایکروسافت این کار را انجام میدهیم.
Pony is an open-source, object-oriented, actor-model, capabilities-secure, high-performance programming language.
مدل Actor با استفاده از Akka.net
In the same time when first object-oriented languages were emerging, another concept inspired by general relativity and quantum mechanics was taking shape – actor model. In general terms, the Actor model was defined 1973. and was developed on a platform of multiple independent processors in a network. Similar to the object-oriented approach, this essentially mathematical model, revolved around the concept of actors. An actor is the smallest structural unit of Actor model, and just like objects, they encapsulate data and behavior. In difference to objects, however, actors communicate with each other exclusively trough messages. Messages in actors are processed in a serial manner. According to the full definition of actors, they can do three things:
- send a finite number of messages to other actors
- create a finite number of new actors
- designate the behavior to be used for the next message it receives
کتاب Akka.NET مختصر و مفید
Akka.NET is an open-source actor model framework written exclusively for
Microsoft.NET in C# and compatible with .NET Core. It simplifies the
building of scalable, concurrent, high-throughput, and low-latency
systems, making life for software developers a bit easier. Zoran
Maksimovic's Akka.NET Succinctly will show readers what an actor
model is and how to work with actors in Akka.NET, taking them from an
actor's lifecycle through to unit testing.
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
حالا باید چه کار کنم؟ ممنون
پیشنیازهای برنامهنویس شدن
Domain Driven Design: The Good Parts
The greenfield project started out so promising. Instead of devolving into big ball of mud, the team decided to apply domain-driven design principles. Ubiquitous language, proper boundaries, encapsulation, it all made sense.
But along the way, something went completely and utterly wrong. It started with arguments on the proper way of implementing aggregates and entities. Arguments began over project and folder structure. Someone read a blog post that repositories are evil, and ORMs the devil incarnate. Another read that relational databases are last century, we need to store everything as a stream of events. Then came the actor model and frameworks that sounded like someone clearing their throat. Instead of a nice, clean architecture, the team chased the next new approach without ever actually shipping anything.
Beyond the endless technical arguments it causes, domain-driven design can actually produce great software. We have to look past the hype into the true value of DDD, what it can bring to our organizations and how it can enable us to build quality systems. With the advent of microservices, DDD is more important than ever - but only if we can get to the good parts.