簡體   English   中英

Web API 2 的靜態對象

[英]Static objects for Web API 2

我有一個 web api 2 項目,客戶端將請求一些 xml 格式的數據。 該 XML 永遠不會改變,我想知道如何將它保存在 ram 中,以便它不會在每次需要來自該文件的數據時反序列化 xml。

在啟動時反序列化它然后將它保存在靜態變量中是最好的方法,因為它只會用於讀取?

 [HttpPost]
 [Route("api/dosomething")]
 public string DoSomething() {

     var myData = XmlSerializer(MyDataStruct).Deserialize(something);
     return myDate;
 }

這里 xml 僅用於向客戶端傳達值。 我怎樣才能做到這一點,以便我可以反序列化一次,然后直接返回它。 使用靜態成員會啟用此功能嗎?

帶有靜態字段的簡單緩存方法可能是一個公平的選擇:

private static MyDataStruct _myData;

[HttpPost]
[Route("api/dosomething")]
public string DoSomething() {
    if(_myData == null)
    {
        _myData = new XmlSerializer(typeof(MyDataStruct)).Deserialize(something);
    }

    return _myData;
}

如果您想要更好的性能並完全跳過從 XML 的反序列化和將響應正文序列化為 JSON/XML,那么我強烈建議您使用 HTTP 輸出緩存方法,使用這樣的庫: AspNetWebApi-OutputCache

暫無
暫無

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

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