|
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
|
||||||||||||||||
Правильно ли использую типизированный HttpClient?03.08.2023, 07:22. Показов 988. Ответов 8
Метки нет (Все метки)
Windows Forms - .NET Framework 4.8 - C# 7.3Установил NuGet пакеты: Microsoft.Extension.DependencyInjection, Microsoft.Extension.HttpКод на оценку:
NLog. Как мне его передать в TrueServiceClient?До перехода на типизированных клиентов была реализация через singleton и конструктор выглядел следующим образом:
TrueServiceClient, а у него 1 конструктор для ловли объектов типа HttpClient, возникает вопрос, как это сделать? Пока надумал что-то такое:
Или стоит их вынести в Main программы, добавить там типизированных клиентов, а в класс передавать провайдера?!
0
|
||||||||||||||||
| 03.08.2023, 07:22 | |
|
Ответы с готовыми решениями:
8
Правильно ли использую openMP
Правильно ли я использую предикаты в List.FindAll |
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,227
|
||||||||
| 03.08.2023, 09:14 | ||||||||
|
Речь об этом:
Просто в целевом приложении стройте свой DI-container ( ServiceCollection) и получайте свой TrueServiceClient.
1
|
||||||||
|
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
|
||||||||||||
| 03.08.2023, 10:11 [ТС] | ||||||||||||
token в объекте TrueServiceClient и время, когда он истекает, чтобы при запросе токена, он смог обновиться?Мне же по сути фабрика возвращает каждый раз новый объект типа TrueServiceClient??? лишь разница в том, что HttpClientHandler в HttpClient, который хранит инфу о сокете будет неизменным, до случая, пока не истечет указанное время (которое я потом включу в Main, для борьбы с проблемами HttpClient и DNS)?А так, я сейчас храню токен в TrueServiceControl, и при вызове метода, который его требует мне не придется его указывать, т.к. это скрыто:
Добавлено через 3 минуты Я пытаюсь что-то искать, какие-то решения, примеры под .Net Framework, но всё попадается для ASP.NET, а там другой подход к проектированию Добавлено через 5 минут А изначально вообще всё на HttpWebRequest было, проект в ужасном состоянии, никакой архитектуры, паттернов, куча дубликатов, просто кучи огромных функций и там же запросы к БД... А надо на новую API переезжать, и щас кучу кода перебирать... Я почитал и в основном все разговоры о том, что "HttpWebRequest - прошлый век, HttpClient проще, HttpClient удобней..." и вот разгребаю проект
0
|
||||||||||||
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,227
|
||||||||
| 03.08.2023, 10:44 | ||||||||
Класс должен проектироваться так, чтобы его можно было очень легко использовать правильно, и очень сложно использовать неправильно. А сейчас у вас какая то нерациональная suboptimal каша. Имхо. Добавлено через 2 минуты TrueServiceControl тип вообще не нужен тут. Добавлено через 11 минут Проверка элементарная: Хочешь сделать запрос? - выполняй примерные шаги: 1. Проверь пустой ли токен, если пустой - запроси новый. 2. Непустой - делай запрос. 3. Запрос упал по 401 - значит токен истек, запроси новый. 4. Делай запрос. И так в каждом методе вашего клиента. Можно усложнить: 1. Через композицию в базовый Rest-клиент пробросить ITokenProvider (который синглетон, и который будет иметь IMemoryCache для хранения токенов) 2. При получении токена добавлять его в этот кэш со временем жизни, до Expiration Date самого токена. 3. И перед каждой операцией запрашивать по ключу этот токен. Ну это уже мои фантазии, сам по себе запрос токена в ITokenProvider с кэшем может походить на легкий overhead по сравнению с простым хранением токена в поле класса. Тут уже вам решать.
1
|
||||||||
|
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
|
|||||||||||||
| 03.08.2023, 10:52 [ТС] | |||||||||||||
|
IamRain,
TrueServiceClient? Но он разве будет сохраняться в объекте, если объект буду получать так: serviceProvider.GetRequiredService<TrueServiceClient>()?И мне в каждом методе где нужно выполнить запрос придется получать сервис через GetRequiredService?Я сейчас могу сделать так:
TrueServiceControl.Url = "example.ru") и ConnectionId для объекта True.И где нужно просто прописать:
Это "Честный знак". True APIДобавлено через 3 минуты А через Json за раз может передаваться много информации о продукции. А завод на месте не стоит, и мне кажется такая идея с ожиданием и повторной отправкой не подошла бы. Пока ещё это всё честный знак обработает....
0
|
|||||||||||||
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,227
|
||||
| 03.08.2023, 10:57 | ||||
|
Добавлено через 1 минуту Добавлено через 1 минуту
1
|
||||
|
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
|
|||
| 03.08.2023, 11:02 [ТС] | |||
|
Но клиент то по сути 1 и тот же, объекты только разные через GetClient приходят.И когда решу проблему с DNS, выставлю например время на 2 минуты, то Handler по сути будет изменяться каждые две минуты? и запрашивать у DNS актуальный IP. Добавлено через 2 минуты Мне ж не нужно каждый раз новый токен получать, если у меня ещё прошлый не истек Добавлено через 1 минуту
0
|
|||
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,227
|
|
| 03.08.2023, 11:04 | |
|
1
|
|
|
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
|
|||||||||||||||||||||
| 03.08.2023, 11:57 [ТС] | |||||||||||||||||||||
|
По сути у меня сейчас следующая зависимость:
ServiceManager.True в класс работающий с другой API и принимающий объекты унаследованные от ITokenProvide . И той API нужно знать токен от TrueAPI и она просто будет дергать GetTokenAsync и получать уже определенный токен в системе и если нужно TrueAPI предоставит новый актуальный токен и он изменится во всей системе у меня. Как бы так.Добавлено через 35 минут IamRain, не знаете почему может не регистрировать клиентов?
Добавлено через 13 минут Всё, разобрался, добавил после _services.AddHttpClient:
0
|
|||||||||||||||||||||
| 03.08.2023, 11:57 | |
|
Помогаю со студенческими работами здесь
9
Подскажите пожалуйста, правильно ли я использую операцию разыменования? Как правильно создать типизированный вложенный класс через дженерики? Использую jsoup, пытаюсь парсить использую "select" Дан типизированный файл целых чисел. Переписать содержимое файла в новый типизированный файл как в с++ создается типизированный файл? и как вообще понять типизированный? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|