Sim*_*low 5 c# architecture model-view-controller akka.net
我有一个典型的Web应用程序使用Entity框架与数据库进行交互.这是应用程序的细分.
现在我想在这个应用程序中使用Akka.NET.我创建了一个Engine类,它封装了Akka System actor并创建了一个日志记录actor(Demo.Core).我认为引擎是一个具有send函数的类,可以在系统范围内使用,而且函数决定哪个actor最适合处理消息.
但是,我无法决定如何根据akka管理数据上下文和实体类.
如果我在IIS上运行两个Demo.Web实例,在WebDev上运行一个实例,它们将有2个独立的actor系统或单个actor系统(它们都使用相同的代码库)?
我是Akka.NET的新手,所以在回答时请不要假设
因此,大多数问题的答案往往是“这取决于”,这在很大程度上取决于您的架构和应用程序需求,但我将尝试在这里对其进行分解。
1)这取决于您检索实体的频率。由于参与者一次处理一条消息,如果每个实体有很多请求,那么如果消息队列太长,您最终可能会收到很长的检索数据请求。由于 Akka.Net 是一个用于构建并发应用程序的工具,因此通常会将工作分解为最小的工作单元,以便您可以轻松地分发工作。
2)取决于你的应用程序是否受读或写的约束,以及你对读和写的顺序是否有强烈的要求。消息是串行处理的,因此如果您通过负责读取和写入的参与者向数据库进行大量写入,则读取可能需要一些时间才能处理。类似地,如果您有硬性约束,即特定读取必须在给定写入之前发生,那么您将希望读取和写入存在于同一队列中。
3) Actor 通过 URI 进行寻址,因此可以通过众所周知的 URI 以及在 ActorSystem 实例上使用 ActorSelection 来检索它们。通常不需要创建自定义函数来发送给参与者。相反,创建通用函数来根据 URI 部分检索参与者 URI。
4) 是的,参与者可以存在于多个程序集中,您只需确保它们继承自其中一种参与者类型,通常是 ReceiveActor 或 UntypedActor。
5) 他们有 2 个独立的 Actor 系统,但可以通过 Akka.Remote 或 Akka.Cluster 加入它们。Actor 系统通常是长时间运行的进程,因此经常在专门运行 Actor 系统的服务器和运行 Web 服务器的前端节点上运行,只需加入系统并向其中推送消息或从中提取数据即可。
| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |