Size: a a a

2020 December 09

IC

Ilya L Che in pro.net
Там просто надо указывать, к чему именно нужно применить атрибут
[property: ...]
[field: ...]
В спеке написано же.
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/records#properties
источник

IC

Ilya L Che in pro.net
На SO ещё про [param: ...], а его в спеке нет. Хм.
источник

D

Dmitry in pro.net
Вот непонятно, если в обычном классе-дтошке заменить слово class на record что изменится? Появится правильная  компарабельность? И всё?
источник

IC

Ilya L Che in pro.net
Dmitry
Вот непонятно, если в обычном классе-дтошке заменить слово class на record что изменится? Появится правильная  компарабельность? И всё?
Меньше кода, иммутабельность, value-семантика.
источник

D

Dmitry in pro.net
уже лучше
источник

AT

Alexey Tkachenko in pro.net
То бишь классы становятся почти не нужны
источник

D

Dmitry in pro.net
Блин еще один минус нашел. У рекордов codelens не показывает зависимости
источник

V

Vabka in pro.net
Ilya L Che
Меньше кода, иммутабельность, value-семантика.
Если просто заменить class на рекорд, то только Equals/GetHashCode/Clone и with будет.
Иммутабельность получаем только за init; и
record X(int a, int b)
источник

V

Vabka in pro.net
Dmitry
Блин еще один минус нашел. У рекордов codelens не показывает зависимости
это временно
источник

D

Dmitry in pro.net
Vabka
это временно
надеюсь
источник

IC

Ilya L Che in pro.net
Vabka
Если просто заменить class на рекорд, то только Equals/GetHashCode/Clone и with будет.
Иммутабельность получаем только за init; и
record X(int a, int b)
А, если настолько буквально заменять class на record, то да. Ну и ToString() ещё.
источник

D

Dmitry in pro.net
источник

IC

Ilya L Che in pro.net
Ilya L Che
На SO ещё про [param: ...], а его в спеке нет. Хм.
Блин, и на гитхабе в спеке нет про [param: ]. И VS подсказок не даёт при попытке набрать param, property или field. Чо за фигня? Может это старая штука?
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-9.0/records.md
источник

IC

Ilya L Che in pro.net
Ilya L Che
Блин, и на гитхабе в спеке нет про [param: ]. И VS подсказок не даёт при попытке набрать param, property или field. Чо за фигня? Может это старая штука?
https://github.com/dotnet/csharplang/blob/master/proposals/csharp-9.0/records.md
Действительно, я уже забыл про такой синтаксис
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/attributes/#attribute-targets
источник

DP

Denis Petukhov in pro.net
Максим Инютин
Коллеги, а в чем принципиальное отличие

using var t = await _context.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted, cts); 
От:
await using var t = _context.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted, cts);
Dispose vs DisposeAsync
источник

SA

Shukurdin Aidarov in pro.net
Всем привет, я опять со своей болью.

Есть сервис который читает сообщения из кафки и отправляет его клиенту по веб-сокету. Недоставленные сообщения сервис хранит у себя в памяти пока действует ttl. Отправленые же сообщения он удаляет после получения потверждения  от клиента (гарантийная доставка).

Дело в том что инстансов этого сервисе очень много и сообщений в кафке много, но одно сообщение предназначено для одного клиента. То есть клиент создает соединение с каким определенным инстансом сервиса, поэтому каждому инстансу приходится читать копию сообщения, чтобы можно было отправить его клиенту. Из-за этого в каждом инстансе становится очень много сообщений, которые доставить невозможно потому что соединение с нужным клиентом только на одном инстансе.
Чтобы сервис не упал из-за нехватки памяти мы сделали ограничение на максимальное количество сообщений в сервисе. Но из-за этого у нас увеличилось время доставки сообщения клиенту (лаг в кафке около 1500 сообщений).

Так вот думаем не хранить сообщения в памяти а хранить в бд - она конечно не реизновая, но в нее гораздо больше влезет. Можем чистить бд раз в день.

Как считаете норм будет или нет?
источник

SA

Shukurdin Aidarov in pro.net
@omgszer, @vanbukin гуру хайлоада плиз хелп ^)
источник

AH

Ayrat Hudaygulov in pro.net
Shukurdin Aidarov
Всем привет, я опять со своей болью.

Есть сервис который читает сообщения из кафки и отправляет его клиенту по веб-сокету. Недоставленные сообщения сервис хранит у себя в памяти пока действует ttl. Отправленые же сообщения он удаляет после получения потверждения  от клиента (гарантийная доставка).

Дело в том что инстансов этого сервисе очень много и сообщений в кафке много, но одно сообщение предназначено для одного клиента. То есть клиент создает соединение с каким определенным инстансом сервиса, поэтому каждому инстансу приходится читать копию сообщения, чтобы можно было отправить его клиенту. Из-за этого в каждом инстансе становится очень много сообщений, которые доставить невозможно потому что соединение с нужным клиентом только на одном инстансе.
Чтобы сервис не упал из-за нехватки памяти мы сделали ограничение на максимальное количество сообщений в сервисе. Но из-за этого у нас увеличилось время доставки сообщения клиенту (лаг в кафке около 1500 сообщений).

Так вот думаем не хранить сообщения в памяти а хранить в бд - она конечно не реизновая, но в нее гораздо больше влезет. Можем чистить бд раз в день.

Как считаете норм будет или нет?
А если сервис упадет, что станет с гарантиями доставки?
источник

SA

Shukurdin Aidarov in pro.net
Ayrat Hudaygulov
А если сервис упадет, что станет с гарантиями доставки?
пипец всем сообщениям(
источник

M

Mikhail in pro.net
Ayrat Hudaygulov
А если сервис упадет, что станет с гарантиями доставки?
Гарантия доставок как у еды в деливери клаб
источник