Кэшируем данные в приложениях OneScript

25.03.18

Разработка - OneScript

В статье описана библиотека, позволяющая кэшировать данные в памяти, в ваших приложениях OneScript.

Скачать файлы

Наименование Файл Версия Размер
Библиотека кэширования данных:
.zip 4,66Kb
2
.zip 4,66Kb 2 Скачать

Введение

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

Описание

Основой библиотеки является статическое свойство Default , класса MemoryCache , которое доступно в любом приложении .NET. 

Доступные типы

КэшПамятиПоУмолчанию
Основной тип, реализующий работу с кэшем.

Конструкторы:
По умолчанию.

Методы:
Добавить(Ключ, Объект, ПолитикаКэширования)
Описание:
Добавляет объект в кэш с определенной политикой кэширования.
Параметры:
Ключ - идентификатор объекта, имеет тип Строка.
Объект - объект, который помещается в кэш, может иметь любой тип.
ПолитикаКэширования - объект типа ПолитикаКэшированияЭлемента, который определяет условия нахождения объекта в кэше.
Возвращаемое значение:
Тип boolean. Истина - если вставка прошла успешно, Ложь - если объект с таким ключем уже находится в кэше.

 

Удалить(Ключ)
Описание:
Удаляет объект, соответствующий идентификатору Ключ из кэша.
Параметры:
Ключ - идентификатор удаляемого объекта, имеет тип Строка.
Возвращаемое значение:
Возвращает удаляемый объект или Неопределено, если объект отсутствует в кэше.

 

Получить(Ключ)
Описание:
Получает объект из кэша по идентификатору.
Параметры:
Ключ - идентификатор объекта в кэше, имеет тип Строка.
Возвращаемое значение:
Возвращает сохраненный объект или Неопределено, если объект отсутствует в кэше.

ПолитикаКэшированияЭлемента
Используется для задания условий нахождения объекта в кэше, а также его удаления.

Конструкторы:
По умолчанию.

Методы:
Нет.

Свойства:
ДатаИстечения
Описание:
Определяет дату и время, по достижению которой, объект будет удален из кэша. Имеет тип Дата. Невозможно совместное использования этого свойства и свойства ПериодНеИспользования.

ПериодНеИспользования
Если не происходит обращения к объекту в кэше, в течение периода в секундах, определяемого этим свойством, объект будет автоматически удален из кэша. Имеет тип - Число. Невозможно совместное использования этого свойства и свойства ДатаИстечения.  

МониторыИзменения
Массив элементов, типа МониторИзмененияФайловНаКомпьютере. При изменении файлов, отслеживаемых мониторами, объект будет автоматически удален из кэша. 

МониторИзмененияФайловНаКомпьютере
Используется для мониторинга изменения/удаления файлов на компьютере.

Конструкторы:
МониторИзмененияФайловНаКомпьютере(СписокФайлов)
Описание:
Создает монитор изменений файлов на компьютере.
Параметры:
СписокФайлов - Массив элементов типа Строка, содержащих физический путь к файлам, изменение которых требуется отслеживать.

Методы:
Нет.

Свойства:
Файлы
Содержит массив элементов типа Строка, которые содержат физический путь к файлам, изменения которых отслеживаются данным монитором.

БылиИзменения
Имеет значение Истина - если были изменения и Ложь, в противном случае.

Установка

OneScript
Установка осуществляется простым копированием файлов dll в какую-нибудь папку.

HTTP-сервисы OneScript
Установка осуществляется копированием файлов dll в папку Bin веб-приложения.
Затем, необходимо подключить библиотеку, добавив нижеследующую строку в секцию appSettings, файла web.config:

<add key="DefaultMemoryCache" value="attachAssembly" />


Использование

Подключение библиотеки

OneScript

ПодключитьВнешнююКомпоненту("ПутьКПапкеГдеРасположеныDll\DefaultMemoryCache.dll");

HTTP-сервисы OneScript
Поскольку dll библиотеки подключается автоматически при старте web-приложения - никаких дополнительных действий не требуется.

Пример использования

OneScript

Результат = Неопределено;

// Создаем объект кэша
Кэш =  Новый КэшПамятиПоУмолчанию;

// Пытаемся получить объект по идентификатору
Результат = Кэш.Получить("c:\1\1\source.txt");

Если Результат = Неопределено Тогда

	// Объекта нет в кэше
	// Создаем объект
	Результат = Новый ТекстовыйДокумент;
	Результат.Прочитать("c:\1\1\source.txt");

	// Создаем политику кэширования, которая будет удалять объект из кэша при изменениии файла
	Политика = Новый ПолитикаКэшированияЭлемента;
	
	МассивФайлов = Новый Массив;
	МассивФайлов.Добавить("c:\1\1\source.txt");
	МассивМониторов = Новый Массив;
	МассивМониторов.Добавить(Новый МониторИзмененияФайловНаКомпьютере(МассивФайлов));
	Политика.МониторыИзменения = МассивМониторов;
	
	// Также, можем ограничить нахождение объекта в кэше определенной датой
	Политика.ДатаИстечения = ТекущаяДата() + 60;
	// Или удаляем объект, если он не использовался определенное количество секунд
	// Совместное использование ПериодНеИспользования и ДатаИстечения невозможно
	//Политика.ПериодНеИспользования = 10;
	
	// Помещаем его в кэш. Первый параметр - идентификатор объекта
	Кэш.Добавить("c:\1\1\source.txt", Результат, Политика);

КонецЕсли;

1С:Предприятие (Каркасная конфигурация)
Ниже приведен пример кода, иллюстрирующий использования библиотеки в Ваших web-приложениях, создаваемых на основе каркасной конфигурации .  

// Это пример использования библиотеки в каркасной конфигурации
// для создания web-приложений

Результат = Неопределено;

// Выполняется только в OneScript. 
// В 1С:Предприятие, код между //<OneScript> и //<!OneScript>, должен быть закомментирован

//<OneScript>
//// Создаем объект кэша
//Кэш =  Новый КэшПамятиПоУмолчанию;
//
//// Пытаемся получить объект по идентификатору
//Результат = Кэш.Получить("c:\1\1\source.txt");
//<!OneScript>

Если Результат = Неопределено Тогда

	// Объекта нет в кэше
	// Создаем объект
	Результат = Новый ТекстовыйДокумент;
	Результат.Прочитать("c:\1\1\source.txt");

	// Выполняется только в OneScript. 
	// В 1С:Предприятие код, между //<OneScript> и //<!OneScript> должен быть закомментирован
	//<OneScript>
	//// Создаем политику кэширования, которая будет удалять объект из кэша при изменениии файла
	//Политика = Новый ПолитикаКэшированияЭлемента;
	
	//МассивФайлов = Новый Массив;
	//МассивФайлов.Добавить("c:\1\1\source.txt");
	//МассивМониторов = Новый Массив;
	//МассивМониторов.Добавить(Новый МониторИзмененияФайловНаКомпьютере(МассивФайлов));
	//Политика.МониторыИзменения = МассивМониторов;
	
	//// Также, можем ограничить нахождение объекта в кэше определенной датой
	//Политика.ДатаИстечения = ТекущаяДата() + 60;
	//// Или удаляем объект, если он не использовался определенное количество секунд
	//// Совместное использование ПериодНеИспользования и ДатаИстечения невозможно
	////Политика.ПериодНеИспользования = 10;
	//
	//// Помещаем его в кэш. Первый параметр - идентификатор объекта
	//Кэш.Добавить("c:\1\1\source.txt", Результат, Политика);
	//<!OneScript>

КонецЕсли;

Заключение

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

P.S.

Саму библиотеку можно загрузить, скачав архив из файлов для скачивания.

Исходный код библиотеки можно посмотреть по ссылке: https://github.com/jdeshin/OneScript-MemoryCache

HTTP-сервисы web OneScript кеш кэш

См. также

Особенности национального Workflow: Github Actions и OneScript

Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1178    bayselonarrend    3    

35

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    2772    kamisov    17    

57

Что такое ОСень? Или как лучшие практики из мира Java прижились в экосистеме OneScript

OneScript Бесплатно (free)

Думаете, на OneScript неудобно создавать сложные инфраструктурные приложения? Ошибаетесь. Благодаря фреймворку ОСень за последний год экосистема библиотек, упрощающих написание собственных приложений, существенно выросла. Расскажем о самых передовых технологиях OneScript. Спойлер: будет много рефлексии, мета-аннотаций, желудей, напильников и дубов с завязями.

21.11.2023    3111    NikitaIvanchenko    16    

46

Библиотека создания клиент-серверных приложений для сценарного языка OneScript

Инструментарий разработчика Работа с интерфейсом OneScript Россия Бесплатно (free)

Представленная библиотека позволяет создать многопоточный TCP сервер, к которому может одновременно подключиться множество TCP клиентов с удаленных компьютеров. Эти клиенты могут вызывать методы скриптов как на сервере, так и на других клиентах. Методы будут выполнены в контексте скрипта на удаленной машине. Возможна передача параметров в метод и получение результата. Для TCP клиента можно создать графический интерфейс с большим набором элементов управления, модальными диалоговыми окнами и с обработкой событий.

31.07.2023    2016    ahyahy    8    

32

Получаем статистику по git-репозиторию в разрезе разработчиков

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Итак! Представим, что наступил момент, когда разработка через исходный код реализована на предприятии в полном объеме. Мы разрабатываем в EDT или конфигураторе (но выгружаем конфигурацию в исходный код), версионируем внешние отчеты и обработки и расширения, собираем релизы, проверяем код статическим анализом, в разработке царит гармония и мир. Красота! Но менеджерам этого мало, всегда хочется чего-то еще, и вот мне прилетает задача - дай статистику по вкладу в код каждого разработчика.

13.03.2023    3621    ardn    3    

27

Прокси хранилища 1С (IIS, OneScript)

Групповая разработка (Git, хранилище) OneScript DevOps и автоматизация разработки Платформа 1С v8.3 Россия Бесплатно (free)

Избавляемся от версионной зависимости, проверяем комментарии, вызываем веб-хуки, делаем красивые пути. И все это на привычном IIS и понятном OneScript.

08.12.2022    8036    kamisov    57    

95

OneScript на страже порядка на сервере тестовых баз данных

Администрирование СУБД OneScript Бесплатно (free)

Наводим порядок на сервере тестовых баз с помощью любимого инструмента - OneScript. Находим заброшенные базы на сервере MS SQL, определяем кандидатов на удаление.

14.06.2022    4255    ardn    23    

37

Идем в Serverless с кодом 1С

Облачные сервисы, хостинг OneScript Россия Абонемент ($m)

Запускаем код OneScript в Serverless Container Яндекса.

1 стартмани

29.04.2022    3696    1    papami    2    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7136 25.03.18 18:15 Сейчас в теме
В имени типа "МониторИзмененияФайловНаКомпьютере" опечатка.
2. blackhole321 1303 25.03.18 18:34 Сейчас в теме
(1)Спасибо Вам огромное!
Все поправил, пересобрал и перевыложил.
И ведь все тестовые скрипты работали :) Вот, что значит Ctrl+C, Ctrl+V
Оставьте свое сообщение