Статические методы с HttpContext и соединениями с базой данных - PullRequest
1 голос
/ 07 декабря 2011

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

Это проект C # с интерфейсом, который отражает некоторые методы javascript. В этом интерфейсе есть много обращений к статическим методам, которые используют HttpContext и получают данные из базы данных (фактически только одна база данных доступа), например так (некоторые методы имеют некоторую логику внутри):

public static string UsrId {
    get{
        try {
            return HttpContext.Current.Session["usrid"].ToString();
        } catch(NullReferenceException) {
            return ServiceVars.GuestId;
        }
    }
}

Итак, мой вопрос:

Это плохая практика? Каковы минусы (и плюсы?) В этом?

Я где-то читал, что статические методы, которые используют соединения с базой данных, плохи для сайтов с высоким трафиком, потому что это поставило бы в очередь запросы. Это правда? Или я не должен беспокоиться о подключении к базе данных в статических методах?

А как насчет HttpContext внутри статических методов, это плохо и почему?

1 Ответ

1 голос
/ 07 декабря 2011

Что здесь плохого, так это улов NullReferenceException.Никогда не делайте этого.

Вместо этого сначала проверьте на null:

public static string UsrId {
    get{
        var userId = HttpContext.Current.Session["usrid"];
        if (userId == null) { return ServiceVars.GuestId;}
        return userId .ToString();
    }
}

Кроме того, проблема, на которую вы можете ссылаться, не связана со статическими методами или1007 *.Это проблема с использованием Session состояния.

...