powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Где лучше хранить данные для разных потоков
16 сообщений из 16, страница 1 из 1
Где лучше хранить данные для разных потоков
    #38990190
Manonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И снова здравствуйте ))

Подскажите плиз, где можно хранить данные, которые используются разными потоками ? С браузера приходит ajax запрос, нужно считать данные, которые на сервере записал куда то веб сокет клиент к другому серваку. Application не подходит, т.к. веб сокеты фигачатся в отдельном потоке, там вообще нет HttpContext'а.
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990196
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Manonia,

непонятно, какова связь меджду аякс запросом и вебсокетклиентом
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990199
Manonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
смотрите: то, что вебсокет клиент на сервере пишет данные куда-то, которые потом ajax запросом должны считаться, ну или просто реквестом.
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990202
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Manonia,

неясно как конкретный аякс запрос должен ассоциироваться с запросом вебсокетного клиента.
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990203
Manonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то. что приходит по веб сокетам будет ложится в очередь, которую как раз и нужно потом достать для ajax запроса.
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990205
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Manonia,

неясного много,
но очередь вполне можно держать в Application
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990211
Manonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил, можно, но я не могу получить доступ к Application:
HttpContext.Current.Application, Current=null, потому что веб совет ответ фигачится в потоке, которые никакого отношения не имеет к HttpContext. http://stackoverflow.com/questions/19509672/why-httpcontext-current-be-null
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990219
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Manonia,

а кто стартует поток с вебсокет-клиентом?

если из Application_Start() запускать - этот поток получит доступ к Application без проблем
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990323
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эм а в чем проблема? есть потокобезопасные коллекции, сделал одну статическую, или просто кеш или бд на самый худой конец.
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990387
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

...а я бы даже сказал, что БД - не самый худой конец ...
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990483
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Manonia, а есть какие-то количественные характеристики?

Сколько ajax запросов в секунду, какое количество запросов на чтение к "очереди" каждый из них порождает?
Какое количество запросовна запись в секунду приходит от веб сокет клиента?
Веб сокет клиент один, или их может быть два, десять, сто?
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990572
Manonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил, я делаю конекшен в Application_Start. Но HttpContext.Current равно null, как я понимаю из-за того, что websocket_DataRecieved идет в отдельном потоке.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
protected void Application_Start(Object sender, EventArgs e)
{
     RegisterRoutes(RouteTable.Routes);

     WebSocketManager.OpenConnection();
}

public class WebSocketManager
    {
        private static WebSocket _webSocket;
        private static ConcurrentDictionary<long, List<InstanceState>> _statesQueue;

        public static void OpenConnection()
        {
            if (_webSocket != null && _webSocket.State == WebSocketState.Open)
            {
                return;
            }

            initWebSocketConnection();
        }

        private static void initWebSocketConnection()
        {
            _webSocket = new WebSocket("ws://localhost:8181");
            _webSocket.Opened += websocket_Opened;
            _webSocket.Error += websocket_Error;
            _webSocket.Closed += websocket_Closed;
            _webSocket.DataReceived += websocket_DataRecieved;

            _webSocket.Open();
        }

        private static void websocket_DataRecieved(object sender, DataReceivedEventArgs message)
        {
            try
            {                
                if (HttpContext.Current.ApplicationInstance.Application["test"] == null)
                {                   
                    HttpContext.Current.ApplicationInstance.Application["test"] = "";
                }          
            }
            catch (Exception e)
            {
                
            }
        }
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990580
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ManoniaНо HttpContext.Current равно null,
конечно.
А зачем в контексте сохранять данные?

обработчик аякс-запроса пусть обращается к WebSocketManager


или мы все дружно чего-то недопонимаем?
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38990611
Manonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. На старте приложения загружаются данные в Application["HierarchyData"] из БД.
2. Дальше по вебсокетам с другого сервера приходят обновления определннных полей, их нужно
a. обновить в Application["HierarchyData"].
b. положить в очередь, чтобы потом забрал клиент, так как у него уже есть отрисованная HierarchyData.
Проблема получается с a, т.к. не могу доступ к Application получить.
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38991076
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Manonia1. На старте приложения загружаются данные в Application["HierarchyData"] из БД.
2. Дальше по вебсокетам с другого сервера приходят обновления определннных полей, их нужно
a. обновить в Application["HierarchyData"].
b. положить в очередь, чтобы потом забрал клиент, так как у него уже есть отрисованная HierarchyData.
Проблема получается с a, т.к. не могу доступ к Application получить.А в БД при этом не надо обновлять данные что-ли? Странно как-то.

Почему бы не писать в БД + очередь держать в памяти WebSocketManager, как предложил Изопропил?
...
Рейтинг: 0 / 0
Где лучше хранить данные для разных потоков
    #38991131
Manonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, я БД нет этих полей. Я думаю все можно хранить в статических полях.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Где лучше хранить данные для разных потоков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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