Json интеграция с RS

Помечено: 

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Автор
    Сообщения
  • #1852
    Kazam
    Участник

    Добрый день! Продолжая поддерживать проект на RS, решил поделиться некоторыми наработками по интеграции.

    Командой RS разработан модуль экспорта в SQL, который работает отлично на небольшом количестве каналов.
    Однако при увеличении их числа (в моем случае 8 000), MySQL не всегда успевает обрабатывать такое количество INSERT, да и сам сервер RS не всегда за цикл успевает сформировать команду на вставку в базу.
    (да можно настроить MySQL сервер, но тренды не всегда должны быть быстродоступны).

    Предлагаю на суд метод WebService для получения тренда канала в формате JSON для сторонних систем.

    
        /// <summary>
        /// Получить trend по CnlNum и DateTime
        /// </summary>
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public void ReceiveTrend(int cnlNum,  string dt)
        {
            
            MainData MD = new MainData();
            MD.SettingsFileName = "CommSettings.xml";
            MD.RefreshData();
            Trend tr = new Trend(cnlNum);
            MD.ServerComm.ReceiveTrend("Trend", Convert.ToDateTime(dt), tr);
            MD.ServerComm.Close();
          
            this.Context.Response.ContentType = "application/json; charset=utf-8";
            this.Context.Response.Write(new JavaScriptSerializer().Serialize(tr.Points));
        }
    

    В ответ получим:

    [
    {
    DateTime: «/Date(1455130800000)/»,
    Val: 67.77223205566406,
    Stat: 13
    },
    {
    DateTime: «/Date(1455131400000)/»,
    Val: 65.7049331665039,
    Stat: 13
    }
    ]

    /Date(1455131400000)/ — таким образом в .Net сериализация Даты для передачи в JSON, штатными методами.

    В своем проекте читаемую дату я получаю, так :
    function (obj) {
    var date = moment(obj.Date);
    return date.format(«DD.MM.YYYY HH:mm»);
    }
    В примере использую отличный Framework Moment.js

    Надеюсь эта информация сэкономит кому-нибудь время.

    #15974
    Andrey2019
    Участник

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

    #15992
    Mikhail
    Модератор

    Добрый день!
    Спасибо за метод. Насколько я понимаю, потребуется создать своё небольшое веб-приложение на .NET, чтобы положить туда этот метод.

    #15998
    Andrey2019
    Участник

    Если я вас правильно понял то веб-приложение .NET — WCF?

    #15999
    Mikhail
    Модератор

    Код похож на WCF, но лучше пусть автор метода напишет.

    #16000
    Mikhail
    Модератор

    Ещё можно посмотреть в качестве примера GrafanaDataProvider. Здесь используется .NET WebApi на основе MVC, а не WCF.

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Вы должны авторизироваться для ответа в этой теме.