Я просто хочу использовать «простой» внепроцессный кэш для основного приложения. Net. Вернувшись в «старую» Asp. Net Framework, у каждого был встроенный способ использовать Asp. Net State Service (aspnet_state.exe) с простым изменением конфигурации на web.config. Но я не могу найти какую-либо реализацию IDistributedCache
, которая работает с этим сервисом.
Кажется, что-то, что Microsoft могла бы довольно быстро всколыхнуть; Windows Сервис уже построен и поддерживается. Они уже знают, как с ним интегрироваться.
Tangent (Внедрение / Интеграция)
Я добавляю эту часть не потому, что я пассивно-агрессивно надеюсь, что кто-то еще ее реализует. Но потребовалось некоторое время, чтобы добраться до этой точки, и я чувствую, что если бы кто-то еще захотел поиграть с этим, это сэкономило бы им время.
На первый взгляд кажется, что это было бы действительно просто кто-нибудь, чтобы написать некоторый клиентский код для интеграции с ним Государственная служба Asp. Net имеет официальный протокол .
Я собирался. Однако, поэкспериментировав с этим, в ответе обнаруживается значительное, задокументированное отклонение от HTTP, из-за чего его нельзя использовать обычные / обычные библиотеки HTTP (например, HttpClient, curl (Insomnia) и др. c.). Мне пришлось использовать Wireshark, чтобы увидеть, что происходит. Как вы можете видеть ниже, если бы они просто возвращали «HTTP / 1.1» перед кодом состояния, вам не пришлось бы писать свой собственный специальный код HTTP-клиента.
Примеры
Вот быстрый Set / Get пример, если он кому-то помогает. Все они были для конечной точки по умолчанию для службы, когда она работает локально: "localhost: 42424"
Установить некоторые данные
Запрос
PUT /MyAppId(MyDomainId)/MySessionId HTTP/1.1
Host: localhost:42424
User-Agent: insomnia/7.1.1
Accept: */*
Content-Length: 29
This is a test.
I like tests.
Ответ
200 OK
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Length: 0
Получить некоторые данные
Запрос
GET /MyAppId(MyDomainId)/MySessionId HTTP/1.1
Host: localhost:42424
User-Agent: insomnia/7.1.1
Accept: */*
Content-Length: 0
Ответ
200 OK
X-AspNet-Version: 4.0.30319
Timeout: 20
Cache-Control: private
Content-Length: 29
This is a test.
I like tests.