【发布时间】:2019-03-16 11:51:43
【问题描述】:
我有一个简单的 Web API,只有一个 GET 控制器。 GET 控制器读取 XML 数据并以 JSON 格式返回。
GET API 应该每分钟都超过一次,但如果超过 1 分钟没有 GET 请求,那么我需要开始备份数据(只是 XML 格式..没什么花哨的)。
我的 GET 接口
//GET api/
public IHttpActionResult Get()
{
try
{
//Read XML
XDocument xDoc = XDocument.Load(@"D:\myfile.xml");
//Convert XML data into JSON string
string jsonStr = JsonConvert.SerializeXNode(xDoc);
JObject json = JObject.Parse(jsonStr);
return Ok(json);
}
catch (Exception ex)
{
return NotFound();
}
}
示例 XML:
<CurrentStatus>
<Time Stamp= "20181011133631244">
<price>12</price>
<amount>100</amount>
</Time>
</CurrentStatus>
XML 中的示例备份:
<CurrentStatus>
<Time Stamp= "20181011133631244">
<price>12</price>
<amount>100</amount>
</Time>
<Time Stamp= "20181011133633354">
<price>11</price>
<amount>120</amount>
</Time>
<Time Stamp= "20181011133633204">
<price>15</price>
<amount>90</amount>
</Time>
</CurrentStatus>
我的计划逻辑:我计划声明一个static 变量_lastAccessedTimestamp,它将由一个单独的线程监控。如果currentTime - _lastAccessedTimestamp > 1 min 则开始备份数据。
问题:在这种情况下在 Web API 中实现线程的良好做法(或任何其他更好的选择)?
PS: Web Service 将在 localhost IIS 服务器上运行。
【问题讨论】:
-
你将如何主持这个?在 Windows 服务中?
-
@nvoigt:抱歉,我忘了提供该信息。在我的问题中更新。
标签: c# multithreading rest asp.net-web-api