На веб-сайте asp.net каждый зарегистрированный пользователь имеет свою собственную «копию» запускаемого исходного кода? - PullRequest
0 голосов
/ 07 октября 2019

Я не уверен, как сформулировать этот вопрос, но у меня есть вопрос относительно того, как asp.net и C # обрабатывают «экземпляры» или «копии» источника, который работает, и может ли быть какой-либо «перекрестный опыление» междукогда они используются разными пользователями.

Чтобы подвести итог вопроса, может ли человек А, который использует веб-сайт в определенное время, получить доступ к вещам, которые делает человек Б, если они также находятся на веб-сайте в то же время? время (это то, что я хочу избежать и подтвердить).

Я понимаю, как работает ООП, и этот вопрос заключается в добавлении слоя поверх этого, чтобы понять, насколько изолированным становится код, как будет описано ниже.

Например, скажем, есть 10 пользователей, которые зарегистрировались в системе с индивидуальной аутентификацией (созданной VS).

И у вас есть написанный вами исходный код, который выполняет различные функции.

Когда человек А использует веб-сайт и выполняет различные операции, у него есть своя «копия» источника, для которого выполняетсяих?

Если человек Б решает использовать веб-сайт в то же время, у них также есть своя «копия» источника или они используют тот же источник, который также используется для человека А?

Насколько я понимаю, каждый раз, когда у вас есть класс и вы создаете его экземпляр с помощью конструктора, у вас появляется новый объект этого элемента, который затем уничтожается, когда в нем нет необходимости.

Принимаяэта мысль на шаг выше, есть ли у пользователя, использующего систему, собственная копия всего изолированного источника?

Например, существуют статические классы, в которых когда-либо будет только 1 экземпляр всего этоговремя. У человека A один и тот же статический класс, что и у человека B, или у каждого из них есть свой собственный статический класс?

Скажем, например, у меня есть класс, который имеет глобальные свойства вместо свойств метода.

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: Человек A (Имеет копию класса HelperMethods и все элементы в нем.) Человек B (Имеет копию класса HelperMethods и все элементы в нем.)

Сценарий 2: (HelperMethods - предоставляет все глобальные параметры) Персона A (имеет только копию конструктора HelperMethod.) Персона B (имеет копию конструктора HelperMethodтолько.)

Спасибо

1 Ответ

0 голосов
/ 07 октября 2019

Статические члены класса HelperMethods будут доступны всем пользователям. Они не будут отдельными для каждого запроса / пользователя. Статический член принадлежит рабочему процессу ASP.NET, он является общим для всех пользователей. Переменные экземпляра, конечно, будут отдельными для каждого пользователя.

...