首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在asp.net网站上,是否每个登录的用户都有他们自己的运行源代码的实例“副本”?

在asp.net网站上,是否每个登录的用户都有他们自己的运行源代码的实例“副本”?
EN

Stack Overflow用户
提问于 2019-10-07 13:28:21
回答 1查看 65关注 0票数 0

我不确定如何表达这个问题,但我有一个问题,关于asp.net和C#如何处理运行的源代码的“实例”或“副本”,以及当它们被不同的用户使用时,它们之间是否会有任何类型的“交叉授粉”。

总结这个问题,在特定时间使用网站的人A是否可以访问B正在做的事情,如果他们同时也在网站上(这是我想要避免和确认的)。

我理解OOP是如何工作的,这个问题是在OOP之上添加一层,以了解代码是如何隔离的,下面将对此进行描述。

例如,假设有10个用户注册了一个具有单独身份验证的系统(由VS创建)。

你有你写的执行各种功能的源代码。

当用户A使用网站并执行各种操作时,他们是否拥有为自己运行的源代码的“副本”?

如果用户B决定同时使用该网站,他们是否也有自己的源码“副本”,或者他们使用的源码与用户A使用的源码相同?

据我所知,每次你有一个类,你用构造函数来实例化它,你就会有一个新的对象,这个对象会被使用,然后在以后不需要的时候销毁。

再往上一步,使用该系统的用户是否有自己的整个孤立源代码的副本?

例如,有些静态类总是只有一个实例。person A和person B共享同一个静态类,还是每个人都有自己的静态类?

例如,我有一个类,它有全局属性,而不是方法属性。

代码语言:javascript
复制
public partial class HelperMethods
{
    private static string Item1 = "StaticString1";

    private const string Item2 = "constString2";
    private const string Item3 = "constString3";

    public BlockingCollection<Task> Collection1 = new BlockingCollection<Task>();
    public BlockingCollection<Task> Collection2 = new BlockingCollection<Task>();
    public BlockingCollection<Task> Collection3 = new BlockingCollection<Task>();
    public BlockingCollection<Task> Collection4 = new BlockingCollection<Task>();   

    public ApplicationUser CurrentUser { get; set; }

    public HelperMethods(int id) {
        using (var database = new DatabaseEntities()) {
            CurrentUser = //database call here with ID.
        }
    }
}

用户A和用户B是否有自己的所有这些项目的单独副本(例如Collection1),或者这些项目是否在彼此之间共享?

如果用户A向Collection1添加项目,同时用户B向Collection1添加项目,他们是将这些项目添加到同一集合中,还是将它们彼此完全分开?

所以,为了简化和总结我试图理解的东西,当用户A和用户B都登录到网站时,他们是否各自获得了" HelperMethods“的副本(为了简单起见,假设HelperMethods是整个程序)并且彼此隔离,还是C#做了其他事情,实际上只有一个HelperMethods副本,每个使用系统的用户都只是获取构造函数方法,并共享全局参数中的所有其他内容?

下面是一个图像示例:

场景1: Person A(拥有类HelperMethods的副本和其中的所有项。)人员B(拥有类HelperMethods的副本和其中的所有项目。)

场景2:(HelperMethods -公开所有全局参数)人员A(仅具有HelperMethod构造函数的副本。)人员B(只有HelperMethod构造函数的副本。)

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-10-07 13:57:47

HelperMethods类的静态成员将在所有用户之间共享。对于每个请求/用户,它们不会分开。静态成员归ASP.NET工作进程所有,这对所有用户都是通用的。当然,每个用户的实例变量将是分开的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58263926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档