目前我有一个包含大量项目(在运行时不会更改)的对象,它占用大量内存,并且该对象将在多个会话(每个用户)中使用,并且每个会话都应该相同。
因此,我决定将其用作共享资源,而不是复制大对象或在每个会话中创建一个新实例。这样每个会话都会从对象的列表中读取以获取项目并执行它需要对它们执行的操作。我想节省内存,因为这是一个 Web 应用程序。
但是,列表中的这些项目也有事件,每个会话都需要订阅这些事件。
因此,当一个项目事件被触发时,它会在所有会话中触发它。所以我不得不添加一些逻辑来检查哪个会话触发了这个事件并且只将它用于那个会话。
有一个更好的方法吗?更有效的方法?我担心,如果我有大量的用户会话,那么当这些共享项目上的事件被触发时,这将真正使处理陷入困境。
你怎么认为?另外值得注意的是,在处理这些“项目”时,无法知道每个项目需要多长时间,因此我倾向于使用事件。