Держите тот же SPWEB & SPSITE через весь жизненный цикл приложения?
-
27-10-2019 - |
Вопрос
У нас есть несколько проектов со многими DAL. Многие списки SharePoint, такие как клиенты, продают, поставщики, которые отражаются в классах C#. Мы заставляем каждый объект реализовать Idisposable через абстрактный класс матери. И каждый раз, когда мы создаем создание объекта, чтобы получить клиента из списка, например, код вызывающего абонента должен вызвать customer.dispose () для избавления от SPWEB и SPSITE, используемого для создания объекта:
public Customer(int spListItemID):base(LIST_URL)
{
try
{
spli = Liste.GetItemById(spListItemID);
}
catch(ArgumentException)
{
spli = null;
}
}
А в базовом классе конструктора существуют глобальные переменные SPSITE и SPWEB, созданные экземпляры, и есть и функция распоряжения.
Мне было интересно: как насчет того же использования того же SPWEB и SPSITE для всего приложения SharePoint? Все наши проекты знают проект, который мог бы создать эти SPSite и SpWeb после синглтонского образца. И мы бы использовали этот SPSite и Spweb «навсегда», мы никогда не закроем бы их обоих и использовали бы один для каждого объекта, сохраняя процесс открытия закрытия каждый раз, когда мы создаем экземпляр объекта!
Как вы думаете, это сумасшедшая идея, которая будет иметь последствия? Я имею в виду использование одного и того же SPWEB в течение очень долгого времени, то есть время, когда сервер включен ... это такая плохая идея? Вместо того, чтобы открывать закрытие тысячи времени в день в день для каждого экземпляра? Есть ли у Spweb ограниченный период живого? (Это большое приложение SharePoint с большим количеством разработки)
Решение
Наибольший риск состоит в том, что SPWEB может стать устаревшим. В многопользовательской среде свойства SPWEB, которые извлекаются в первом обратном пути (например, веб -заголовок), могут быть изменены другим пользователем, но вы продолжаете иметь старые значения, поскольку вы не испытываете экземпляры заново. Вы можете создать несколько экземпляров SPWEB и SPSITE, если вы правильно их распорядите.