Size: a a a

var chat = new Chat();

2021 July 12

VB

Vladislav Bardin in var chat = new Chat();
Ну тогда 2 вариант предпочтительней, имхо, чем делать  100 - 1000 запросов в БД в сек., чтобы только достать рекламу
источник

В

Ваня in var chat = new Chat();
а что у тебя по железу на сервере ?
источник

VB

Vladislav Bardin in var chat = new Chat();
Я бы максимально старался избегать статических коллекций хотя бы потому, что нужна будет синхронизация
источник

ВE

Виталий EasyMod... in var chat = new Chat();
можно сделать статик конкурентную коллекцию, но при изменении данных в бд нужно обновлять и эту коллекцию
источник

VB

Vladislav Bardin in var chat = new Chat();
Возможно и так, но мне кажется все же лучше чем делать статик коллекцию
источник

VB

Vladislav Bardin in var chat = new Chat();
Ну такой коллекции все равно понадобится синхронизация же?
источник

В

Ваня in var chat = new Chat();
ну бд на самом деле не такая хрупкая штука)
если правильно построить индексы, сделать реплику(хотя и не факт что реплику надо делать), то все будет на самом деле очень неплохо
источник

ВE

Виталий EasyMod... in var chat = new Chat();
если действительно коллекция не сильно большая, в пределах 10-100к записей, то почему нет?
источник

ВE

Виталий EasyMod... in var chat = new Chat();
синхронизация с бд?
источник

VB

Vladislav Bardin in var chat = new Chat();
нет. Речь же шла о синглтон коллекциях, вроде. У тебя же не могут одновременно писать 2 потока в 1 коллекцию, если только это не Concurrent*(List, Dict etc.) но даже в тех коллекцих должен быть какой-то механизм синхронизации( и если я не ошибаюсь в реализации от майок используются snapshot`ы)
источник

ВE

Виталий EasyMod... in var chat = new Chat();
создай задачу в фоне, которая будет раз в сек проверять изменения в бд и обновлять коллекцию, например по полю UpdateDate максимальное значение из коллекции и проверять в бд, поддтягиваешь изменённые данные и обновляешь их в коллекции по ключу (обычно по айди). Это конечно костыльно звучит, но у тебя рассинхрон будет максимум 1 сек и в бд будет всего 1 запрос в сек по этому вопросу а не 100-1000
источник

VB

Vladislav Bardin in var chat = new Chat();
Да, там вручную синхронизацию писать не не нужно.

Но мне кажется, что лучше всего сделать 2 варианта( с коллекцией и с записью в БД напрямую) и сделать бенчмарки. Тогда уже точно можно будет принять решение, как сделать лучше
источник

В

Ваня in var chat = new Chat();
кстати держать в коллекции тонну записей вообще не лучший вариант на самом деле (если их реально много)
источник

ВE

Виталий EasyMod... in var chat = new Chat();
почему всевсевсе? Я же тебе написал сделай поле UpdateDate к примеру и по нему определяй свежие записи/изменения
источник

ВE

Виталий EasyMod... in var chat = new Chat();
у тебя изменений по сути не будет раз в сек, соответственно база будет возвращать 0 строк для изменений
источник

VB

Vladislav Bardin in var chat = new Chat();
Кажется я не совсем понял вопрос(
источник

ВE

Виталий EasyMod... in var chat = new Chat();
как только кто-то внесёт изменения в течении сек(к примеру) подтянуться только свежие записи
источник

ВE

Виталий EasyMod... in var chat = new Chat();
раз в сек это для примера, как часто это ты сам реши, может и раз в минуту будет приемлемо
источник

VL

Vova Lantsov in var chat = new Chat();
Запускаешь одинаково? Или на винде кнопочкой Run, а на убунте через dotnet run? Копирование файла Copy to Output Directory -> Always / If newer стоит?
источник

OM

Oleksiy Moroz in var chat = new Chat();
уже решил, там пути к файлам иначе указать нужно было
источник