Кэширование действий с помощью параметра Params
<< Click to Display Table of Contents >> Разработка > Рекомендации по разработке для масштабируемых систем > Обращения к веб-серверу Кэширование действий с помощью параметра Params |
Чтобы уменьшить количество запросов к веб-серверу из клиентского кода, для обработчиков событий и действий типов сущностей можно сохранять результаты в параметр Params и использовать их в клиентской логике. Например, можно сохранить результат вычислений в событии обновления формы:
public override void Refresh(Sungero.Presentation.FormRefreshEventArgs e)
{
...
if (_obj.DocumentKinds.Any() && _obj.State.Properties.DocumentKinds.IsChanged)
{
var condition = Functions.Condition.Remote.CreateCondition();
var possibleConditions = Functions.ConditionBase.GetSupportedConditions(condition);
e.Params.AddOrUpdate(Constants.ApprovalRule.IsSupportConditions, _obj.DocumentKinds.Any(x => possibleConditions.ContainsKey(x.DocumentKind.DocumentType.DocumentTypeGuid)));
}
...
}
Или использовать результат вычислений при определении возможности выполнения действия:
public override bool CanChartAddCondition(Sungero.Domain.Client.CanExecuteActionArgs e)
{
bool isSupportConditions;
if (e.Params.TryGetValue(Sungero.Docflow.Constants.ApprovalRule.IsSupportConditions, out isSupportConditions) && !isSupportConditions)
{
...
}
}
Важно. При нажатии на кнопку Отмена текущих изменений (Cancel) значения всех параметров очищаются. Чтобы этого избежать, воспользуйтесь одним из способов:
•в событии Обновление формы (Refresh) проверьте и восстановите значения параметров с помощью методов e.Params.Contains() и e.Params.AddOrUpdate();
•если параметр сущности был передан извне или требуются длительные вычисления параметра (например, вызов Remote-функций), то перекройте действие Cancel и до вызова базового обработчика (base.Cancel) сохраните значение параметра, а затем восстановите его.
© Компания Directum, 2024 |