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();
By using this website, you agree to the use of cookies for analytics and personalized content. Cookies store useful information on your computer to help us improve efficiency and usability. For more information, please read the privacy policy and cookie policy.