Как хранить данные в .NET Core 2.1 WebApi? - PullRequest
0 голосов
/ 28 февраля 2019

Я разрабатываю WebApi в .NET Core 2.1, и мне нужно иметь общее хранилище ключей / значений, которое можно записывать и читать по любому запросу, полученному API.

Хранилище должно использоватькуча приложения, а не внешние системы (например, кэш Redis или решение с плоскими файлами), поскольку мне приходится хранить объекты C #, которые я не могу сериализовать.

1 Ответ

0 голосов
/ 28 февраля 2019

Если я не ошибаюсь, вы хотите сохранить ваши данные в C #, например, кэш-память.Вы можете использовать класс ниже.

 public class ApplicationCacheManager
        {
            private Dictionary<string, object> Data { get; set; }

            public ApplicationCacheManager()
            {
                Data = new Dictionary<string, object>();
            }

            public bool IsSet(string key)
            {
                return Data.TryGetValue(key, out var data) && data != null;
            }

            public T Get<T>(string key)
            {
                if (Data.TryGetValue(key, out var data))
                    return (T)data;

                return default(T);
            }

            public void Set<T>(string key, T data)
            {
                Data[key] = data;
            }

            public void Remove(string key)
            {
                Data.Remove(key);
            }

            public void Dispose()
            {
                if (Data != null)
                    Data = null;
            }
        }

Этот класс должен быть одноэлементным, чтобы хранить все данные в течение времени жизни приложения.зарегистрируйте его в контейнере DI как singleton.

services.AddSingleton<ApplicationCacheManager>();

Если вы хотите, чтобы этот класс был потокобезопасным, вы можете изменить Dictinary на ConcurrentDictionary. здесь

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...