Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Мониторинг состояния компьютера в реальном времени / 4 сообщений из 4, страница 1 из 1
04.11.2015, 08:31
    #39094240
KvantVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мониторинг состояния компьютера в реальном времени
Здарвствуйте! Хочу сделать веб-интерфейс для отображения состояния серверов в реальном времени: загрузка CPU, ОЗУ, своб.место на лог.дисках. Всё это на ASP.NET WebForms, IIS 7, C#, .net 4.
Хотел сделать на странице график на javascript через Chart.js (кладется <canvas>, и через js-библиотеку рисуется на нем график) и таймер на странице, который будет выполнять код, получающий значения загрузки ЦП, ОЗУ, и прочее (это я думал сделать через счетчики производительности System.Diagnostics.PerformanceCounter, а сам таймер положил в UpdatePanel, чтобы вся страница не перезагружалась).
Проблема в моих недостаточных познаниях в области веб-программирования. Например, была такая идея:

1. сами данные для графика будут вычисляться в asp.net-таймере, и заноситься, допустим, в сессионную переменную
Код: c#
1.
Session["testval"]==x;


2. а при инициализации javascript`овского графика, сразу установить ему обновление графика по интервалу:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
// --- график:
window.testLine = testChart.Line( ... );
// --- ставим интервал для обновления
window.intervalID = setInterval(function() {
    window.testLine.addData([<%=(Session["testval"]==null) ? 0 : (Int32)Session["testval"] %>], "newvalue");
    window.testLine.update();
}, 3000);


Не работает, т.к. функция интервала определяется, и получается, что при определении туда попадает самое первое Session["testval"], и каждые 3 секунды вставляется одно и то же значение (это всё логично).

2-ой вариант:
1. Всё сделать в asp.net`овском таймере: и получение данных, и вызов javascript-скрипта на обновление данных в графике:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
// --- получаем данные
Random rnd = new Random();
int x = rnd.Next(0, 100);
// --- обновляем график
Page.ClientScript.RegisterStartupScript(this.GetType(), "scr_updateTimer", @"
window.testLine.addData([" + x.ToString() + @"],'timervalue');
window.testLine.update();
//alert('Timer');
", true);


Таймер просто не выполняет javascript. А если и выполняет, то где-то там, в своей области данных... (из-за updatePanel, возможно)

3-ий вариант:
Как и второй вариант, но канвас с графиком положить в UpdatePanel рядом с таймером. Тогда график мелькает, прыгает, и исчезает в конце концов.

4-й вариант: создал экземпляр System.Timers.Timer вместо asp.net`овского таймера. Не работает все равно.

Гуглил-перегуглил всё по таймеру и взаимодействию с javascript, он мне выдает всё одно и не то %) и уже всю голову сломал в переборе вариантов.
Как вы посоветуете сделать, или какие-нибудь мысли по обходу этих проблем? Или как вообще такие системы реализуются, если кто сталкивался с написанием оных?
...
Рейтинг: 0 / 0
04.11.2015, 10:31
    #39094286
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мониторинг состояния компьютера в реальном времени
KvantVSЗдарвствуйте! Хочу сделать веб-интерфейс для отображения состояния серверов в реальном времениДля этого уже сделали Zabbix .
...
Рейтинг: 0 / 0
04.11.2015, 10:35
    #39094289
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мониторинг состояния компьютера в реальном времени
KvantVS,
свести к типичной стандартной задаче
клиент:
график
таймер
по таймеру отправляется ajax запрос на сервер о текущем состоянии
когда ответ приходи в ajaxComplete перерисовывается или дорисовывается график
если предыдущие данные нужны - кешируем массив ответов на клиенте..
только надо позаботиться что бы при малых таймерных значениях ответы не еблись между собой.
никаких сессий и уж тем более обновляемых панелей, если без панелей не можете -то завязывай с шарпом
и переходите учить JS, ибо без него, как веб, Вы просто насрано..
...
Рейтинг: 0 / 0
04.11.2015, 10:45
    #39094296
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мониторинг состояния компьютера в реальном времени
KvantVSГуглил-перегуглил всё по таймеру и взаимодействию с javascriptРановато Вы это начали гуглить. Для начала поймите, что такое ASP.NET WebForms и как оно работает. Почитайте книжки, документацию, статьи.
А то ведь по Вашему коду видно, что пытаетесь решить задачу методом "а вот если я напишу такой код, то он наверное будет работать как я себе выдумал".

А если задача учебная, то начните лучше с https://www.asp.net/web-forms
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Мониторинг состояния компьютера в реальном времени / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]