Действительно ли статические экземпляры класса уникальны для запроса или сервера в ASP.NET?

matplotlib не отображает уравнения; он отображает ряд точек. Вы можете использовать инструмент, подобный scipy​.optimize, для численного расчета y точек из значений x (или наоборот) неявных уравнений в численном выражении или любого количества других инструментов, если это необходимо.


Например, здесь пример, где я рисую неявное уравнение x ** 2 + x * y + y ** 2 = 10 в определенной области.

from functools import partial

import numpy
import scipy.optimize
import matplotlib.pyplot as pp

def z(x, y):
    return x ** 2 + x * y + y ** 2 - 10

x_window = 0, 5
y_window = 0, 5

xs = []
ys = []
for x in numpy.linspace(*x_window, num=200):
    try:
        # A more efficient technique would use the last-found-y-value as a 
        # starting point
        y = scipy.optimize.brentq(partial(z, x), *y_window)
    except ValueError:
        # Should we not be able to find a solution in this window.
        pass
    else:
        xs.append(x)
        ys.append(y)

pp.plot(xs, ys)
pp.xlim(*x_window)
pp.ylim(*y_window)
pp.show()
178
задан Dan Herbert 12 October 2008 в 15:52
поделиться

4 ответа

Ваши статические классы и статические поля экземпляра совместно используются всеми запросами к приложению, и имеет то же время жизни как домен приложения. Поэтому необходимо быть осторожными при использовании статических экземпляров, так как у Вас могли бы быть проблемы синхронизации и т.п.. Также примите во внимание, что статические экземпляры не будут GC'ed, прежде чем пул приложений будет переработан, и поэтому все, на что ссылается статический экземпляр, не будет GC'ed. Это может привести к проблемам использования памяти.

, Если бы Вам нужен экземпляр с тем же временем жизни как запрос, я предложил бы использовать HttpContext.Current.Items набор. Это дизайном, предназначенным, чтобы быть местом для хранения материала, в котором Вы нуждаетесь всюду по запросу. Для более хорошего дизайна и удобочитаемости, можно использовать Шаблон "одиночка", чтобы помочь Вам управлять этими объектами. Просто создайте Singleton-класс, который хранит его экземпляр в HttpContext.Current.Items. (В моей общей библиотеке для ASP.NET у меня есть универсальный класс SingletonRequest с этой целью).

142
ответ дан Dan Herbert 4 November 2019 в 15:56
поделиться

Так как типы содержатся в домене приложения, я ожидал бы, что статические классы будут присутствовать, пока домен приложения не переработан, или если запрос подается различным доменом приложения.

я могу думать о нескольких способах сделать объекты характерными для конкретного запроса, зависит от того, что Вы хотите сделать, для, например, Вы могли инстанцировать объекта в Приложении. BeginRequest и затем хранят его в объекте HttpRequest так, чтобы к этому могли получить доступ все объекты в конвейере обработки запросов.

11
ответ дан Sijin 4 November 2019 в 15:56
поделиться

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

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

можно использовать HttpContext.Current.Items для установки материала для одного запроса, или HttpContext.Current.Session для установки материала для одного пользователя (через запросы).

В целом, хотя, если Вы не должны использовать вещи как Server.Transfer, лучший способ в основном создает вещи однажды и затем передает их явно через вызов метода.

0
ответ дан Sklivvz 4 November 2019 в 15:56
поделиться

, Если они не уникальны для каждого запроса, там способ позволить им быть?

Нет. Статические участники принадлежат процессу ASP.NET и совместно используются весь пользователи веб-приложения. Необходимо будет обратиться к другим методам управления сеансами, таким как переменные сеанса.

4
ответ дан rp. 4 November 2019 в 15:56
поделиться
Другие вопросы по тегам:

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