So the answer to most of these questions tends to be โit dependsโ, it pretty much depends on your requirements for architecture and applications, but I will try to break it here.
1) It depends on how often you get objects. Since participants process messages one at a time, if you have a lot of requests for an object, then you can receive long requests for data if the message queue is too long. Since Akka.Net is a tool for creating concurrent applications, it usually breaks up work into the smallest unit of work, so you can easily distribute work.
2) It depends on whether your application is limited to reading or writing, and whether you have strong requirements for reading and writing. Messages are processed sequentially, so if you have many records entering the database through the actor responsible for reading and writing, then reading may take some time to process. Similarly, if you have strict restrictions that a specific read must occur before a given write, you need the read and write to exist in the same queue.
3) Actors are addressed using a URI, so you can get them through a well-known URI and using ActorSelection in an instance of ActorSystem. Usually there is no need to create a custom function to send to the actor. Instead, create generic functions to retrieve custom URIs based on parts of the URI.
4) Yes, actors can exist in several assemblies, you just need to make sure that they inherit from one of the types of actors, usually ReceiveActor or UntypedActor.
5) They will have two separate acting systems, but it is possible to join them through Akka.Remote or Akka.Cluster. The actor of the system, as a rule, is long processes, although they are often left to run on servers designed to run the actor system and the front nodes running on the web server, simply join the system and insert messages into it or pull data from it.
source share