ASP.NET, Архитектурно-зависимый к Общим/Статичным функциям

Кто-то мог советовать в контексте приложения ASP.NET, общая/статичная функция, характерная для всех пользователей?

Если, например, у Вас есть функция

Public shared function GetStockByID(StockID as Guid) as Stock 

Та функция характерна для всех текущих пользователей Вашего приложения? Или действительно ли общая функция только характерна для текущего пользователя и совместно использованная в контексте ТОЛЬКО что текущий пользователь?

Таким образом, более конкретно мой вопрос, это, помимо проблем параллелизма базы данных, таких как блокировка таблицы делает я должен интересоваться поточной обработкой проблем в общих функциях в приложении ASP.NET?

В моей голове; скажем, моим пространством имен приложения является MyTestApplicationNamespace. Каждый раз новый пользователь соединяется с моим сайтом, новый экземпляр MyTestApplicationNamespace создается, и поэтому все общие функции характерны для того экземпляра и пользователя, но НЕ распространены через многочисленных пользователей. Это корректно?

1
задан Maxim Gershkovich 30 April 2010 в 03:55
поделиться

2 ответа

Ни один экземпляр пространства имен никогда не «создается» во время выполнения. Думайте об этом как о способе организации кода, как о каталоге на жестком диске.

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

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

     public class cApp
        {

                static readonly cDB _cDB = 
new cDB(ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString);


                public static cDB DB
                {
                    get
                    {
                        return _cDB;
                    }
                }

        }

Это создает экземпляр одного объекта типа cDB при первом прикосновении к нему в режиме сохранения потока. Он будет называться _cDB, который можно использовать в коде через DB свойств. Например:

cApp.DB.MyMethod();

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

2
ответ дан 3 September 2019 в 00:56
поделиться

Все видно постоянно! классы, статические функции, функции на классах и т.д. единственное, что не постоянно - это загруженные данные.

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

Статические функции, работающие со статическими данными, должны быть осведомлены о проблемах потоков.

0
ответ дан 3 September 2019 в 00:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: