Слышал, что документооборот Правительства РФ построен на Tessa. Само собой, там и обьем гиганский и ЭЦП вовсю.
Какстомизация через написание расширений.
Bodden, Так у вас Дизайнтайм ошибка?
Тут либо просто игнорируйте ее, либо пропишите
d:DataContext="{d:DesignInstance Type=viewmodels:Numbers}" для Windows
"увеличивает вероятность получения ошибки сериализации". Так особенность работы изоляции Serialization в том и есть, что если кто-то вне транзакции даже прочитал тоже что и вы, то сохранение не пройдет.
Поэтому нужно предусматривать возможность несколько раз повторить попытку сохранения.
Готовьте заранее все данные, что нужны для сохрания в read commited изоляции. И только для быстрого изменения/создания запускайте транзакцию в Serialization и как можно скорее ее закрывайте.
OwDafuq, Так JWT токен с малым временем жизни это для безопастности. Если она не нужна, то в настройках SSO просто поставьте, что access token живет 5 лет и всего делов.
OwDafuq, Так при обращении сервисам они будут перебрасывать на SSO, который после логина вернет обратно на страницу сервиса, ведь в первоначальном запросе прописывается return url. По возвращенному коду и получит сервис токен. И с этим JWT токеном можно конектится ко всем сервисам.
При переходе от сервиса к сервису можно передать в запросе перехода refresh токен, которыv можно обновить access token.
Роль доступа может храниться на сервисе авторизации, а SSO и User сервис внутри себя имеют прямой доступ к нему.
Как вариант и в SSO можно добавить эндпоинт, что будет при запросе с полученным JWT кокеном отдавать все роли и пермишены сделавшего запрос.
А что мешает разделить SSO и Users сервис? SSO будет отвечать за логин (можно и регистрацию), выдачу/обновление токена. А через Users сервис будете регистрировать, удалять и менять данные пользователей.
isAsync = socket.ReceiveAsync(asyncEventArgs);
Этот вызов не будет асинхронным, если данные уже в буффер пришли и поэтому их требуется обработать прям в текущем потоке. Это происходит в созданном самим Socket потоке
AsyncEventArgsPool - это мой класс для переиспользования обьектов типа SocketAsyncEventArgs, так как за ними нужно внимательно следить, чтобы не было утечек памяти.
Видел системы где на чистку забивали и память текла просто невероятно быстро.