簡體   English   中英

如何在.NET Core 2.1 WebApi中存儲數據?

[英]How to store data in a .NET Core 2.1 WebApi?

我正在.NET Core 2.1中開發WebApi,我需要有一個共享的鍵/值存儲,可以通過API收到的任何請求進行讀寫。

存儲應該使用應用程序的堆,而不是外部系統(例如Redis緩存或平面文件解決方案),因為我必須保留無法序列化的C#對象。

如果我沒看錯,您想將數據存儲在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容器到DI容器。

services.AddSingleton<ApplicationCacheManager>();

如果希望此類是線程安全的,則可以將Dictinary更改為ConcurrentDictionary。 這里

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM