StiMobileDesigner - ASP.NET компонент для создания и редактирования отчетов в браузере. В этой статье мы расскажем об использовании данного компонента на облачной платформе Azure.
В первую очередь стоит заметить, что компонент StiMobileDesigner основан на технологии клиент-сервер. На серверной стороне находится кэш, то есть ячейка для хранения информации с быстрым доступом. Из кэша можно в любой момент получить необходимый объект или же наоборот загрузить его в кэш. Но если загрузить дизайнер отчетов на Azure, то сохраняемый вариант объекта может быть сохранён в различных экземплярах сервера. Поэтому при сохранении отчета в различные экземпляры сервера в кэше возникает проблема его хранения. Для корректной работы необходимо, чтобы отчет сохранялся в один и тот же кэш.
Для решения этой проблемы наши разработчики создали класс StiCacheHelper для каждого из следующих компонентов: StiMvcMobileDesigner, StiMvcMobileViewer, StiMobileDesigner, StiMobileViewer и вынесли из дизайнера два внешних метода: SaveObjectToCache и GetObjectFromCache. Внутри этих методов пользователь может описать свое собственное сохранение в кэше и собственное изъятие объекта из кэша. Другими словами, необходимо переопределить метод и сохранять любые объекты в свой собственный кэш, что значительно упрощает и ускоряет работу с отчетами на облачной платформе Azure.
classStiAzureCacheHelper : StiMobileViewer.StiCacheHelper
{
string SlsPath = RoleEnvironment.GetLocalResource("TestStorage").RootPath + "\\";
public override void SaveObjectToCache(object obj, string guid)
{
byte[] cacheData = GetCacheDataFromObject(obj);
System.IO.File.WriteAllBytes(SlsPath + guid, cacheData);
}
public override object GetObjectFromCache(string guid)
{
if (!System.IO.File.Exists(SlsPath + guid)) return null;
byte[] cacheData = System.IO.File.ReadAllBytes(SlsPath + guid);
return GetObjectFromCacheData(cacheData);
}
}
StiMobileViewer1.CacheHelper = new StiAzureCacheHelper();
В первую очередь стоит заметить, что компонент StiMobileDesigner основан на технологии клиент-сервер. На серверной стороне находится кэш, то есть ячейка для хранения информации с быстрым доступом. Из кэша можно в любой момент получить необходимый объект или же наоборот загрузить его в кэш. Но если загрузить дизайнер отчетов на Azure, то сохраняемый вариант объекта может быть сохранён в различных экземплярах сервера. Поэтому при сохранении отчета в различные экземпляры сервера в кэше возникает проблема его хранения. Для корректной работы необходимо, чтобы отчет сохранялся в один и тот же кэш.
Для решения этой проблемы наши разработчики создали класс StiCacheHelper для каждого из следующих компонентов: StiMvcMobileDesigner, StiMvcMobileViewer, StiMobileDesigner, StiMobileViewer и вынесли из дизайнера два внешних метода: SaveObjectToCache и GetObjectFromCache. Внутри этих методов пользователь может описать свое собственное сохранение в кэше и собственное изъятие объекта из кэша. Другими словами, необходимо переопределить метод и сохранять любые объекты в свой собственный кэш, что значительно упрощает и ускоряет работу с отчетами на облачной платформе Azure.
classStiAzureCacheHelper : StiMobileViewer.StiCacheHelper
{
string SlsPath = RoleEnvironment.GetLocalResource("TestStorage").RootPath + "\\";
public override void SaveObjectToCache(object obj, string guid)
{
byte[] cacheData = GetCacheDataFromObject(obj);
System.IO.File.WriteAllBytes(SlsPath + guid, cacheData);
}
public override object GetObjectFromCache(string guid)
{
if (!System.IO.File.Exists(SlsPath + guid)) return null;
byte[] cacheData = System.IO.File.ReadAllBytes(SlsPath + guid);
return GetObjectFromCacheData(cacheData);
}
}
StiMobileViewer1.CacheHelper = new StiAzureCacheHelper();