0

我对 ASP.NET MVC 还很陌生,但我知道对于任何新项目来说,它几乎已经取代了 WebForms。

我有点迷失如何构建我正在设计的 Web 应用程序,它实际上没有任何数据库元素。为简单起见,它类似于在线绘图工具,每个客户端将在画布上动态构建一些东西(这将在服务器上实例化各种对象),然后对该绘图进行一些处理(可能在它自己的线程上)。

在三合会术语中,我的“模型”是由客户端动态构建的,并将作为对象(作为现阶段不重要的各种数据结构)在服务器上持续存在,直到用户退出。我对 ASP.NET MVC 的理解是保持一切无状态,因此强烈建议不要使用会话。

处理这种情况的好方法是什么?

4

1 回答 1

1

关于模式的一切仍然存在,你所改变的只是你如何坚持你的模型。您当然可以将它们持久化到会话或您想要的任何其他位置。只需封装该持久层,应用程序的其余部分就不会知道/关心有什么区别。

例如,假设您有一个Widget模型。并且您希望将其保存到某个持久层(可能是数据库,但不一定是)并从中检索它。您可以在模型上放置一些简单的工厂方法。像这样的东西:

public class Widget
{
    public static Widget Fetch(int id)
    {
        // fetch the Widget from persistence by its ID and return it
    }

    public void Save()
    {
        // write the current Widget to the persistence medium
    }
}

如果您将它们保存到数据库中,您可能有某种存储库,您可以在那里与之交互。实体框架数据上下文通常服务于这项工作。但这不一定是您使用的。

在这种情况下,您可能想要创建一个WidgetRepository抽象持久性介质的类。上述工厂方法将直接使用该类。在该类内部,在这种特殊情况下,您将拥有对System.Web会话状态的持久性的引用和诸如此类的东西。(或者它可以持久化到 XML 文件、应用程序状态、数据库或任何东西。)在该类之外,没有其他人知道发生了什么。所有其他代码只知道Widgets 保存到该存储库并从该存储库中获取。其余代码与任何其他 ASP.NET MVC 应用程序一样继续执行。

于 2013-09-06T16:02:08.697 回答