我有一个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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句