您可以使用靜態對象實例。例如,假設你有一個User
類:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
,然後有一個靜態的容器爲您的實體:
public static class Container
{
static Container()
{
Users = new ConcurrentBag<User>();
}
public static IEnumerable<User> Users { get; set; }
...
}
然後你就可以在你的代碼隨時隨地訪問該靜態實例。很明顯,因爲ASP.NET MVC是一個多線程環境,所以你需要正確地同步對這些變量的訪問。例如使用ConcurrentBag<User>
而不是List<User>
實現。
,然後在你的控制器,你可以訪問你的內存數據存儲:
public ActionResult Index(int id)
{
var user = Container.Users.FirstOrDefault(x => x.Id == id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
這是一個很好的答案(雖然OP從未提及IIS)。這裏有一個關於存儲遊戲信息的討論 - 這是一種可能不使用數據庫的場景 - 儘管他們建議使用文件進行存儲:http://www.codeproject.com/Questions/486416/Howplustoplussaveplusdataplusinplusc -pluswithout。如果您來自WebForms背景並希望使用ViewState類型機制,請參閱http://stackoverflow.com/questions/2230519/asp-net-c-sharp-mvc-how-do-i-live- without-viewstate – 2014-11-02 03:14:50
對於吞吐量非常高的遊戲,我可能會將所有數據存儲在內存中,因爲無法執行其他操作。這會在部署或補丁時造成麻煩。對於低吞吐量的遊戲,我會使用持久性數據存儲,以避免這些問題發揮作用。 – usr 2014-11-02 08:55:33