【发布时间】:2013-02-05 20:56:52
【问题描述】:
我目前开始了一个小项目,体验 JS 和 HTML5 的世界。
几个月前我已经尝试过了,但我停止了,因为我没有足够的时间从头开始创建 MVC 单页应用程序。有太多的概念和模式,必须理解,如果我在日常工作中缺乏使用,我会后悔失去所有这些知识。 使用它或失去它!
昨天我刚刚在 John Papa 的博客上找到了 this post,我认为这将是一个很好的开始。基本上,它是一个名为 HotTowel 的 MVC 模板,它实现了数据绑定、缩小等已经很不错的概念。我会在我目前需要的范围内体验代码,并会在需要时进一步体验它。
我想构建一个应用程序,用于从我现有的数据模型项目中获取数据。在我们的 Silverlight 应用程序中,我们通过预加载和初始化字典和其他属性并调用 async Init() 方法来引导它(例如,用于下载包含自定义代码的 XML 文件并将它们放入字典中)。 MEF 用于摆脱不方便的依赖关系。
据我了解,服务器端初始化必须在 Global.asax 文件中的 Application_Start() 方法中完成。我想知道如何在这种方法中等待异步调用?最佳做法是什么?我在客户端的查询在很大程度上依赖于这些类的初始化。有哪些选择?
我的想法如下:
-
Application_Start()触发并忘记异步初始化过程。如果我在初始化完成之前执行一个请求(我猜是在控制器上),我必须等待初始化过程的回调并在它到达时立即开始查询。这样做的好处是,初始化运行,而用户已经可以浏览应用程序。 - 我会实现某种惰性初始化。一旦提出第一个请求,我就会处理初始化。不过,第一个请求可能需要很长时间。
- 我会在
Application_Start()中同步运行初始化过程。到目前为止,我看到的主要缺点是浏览器窗口对用户来说似乎是冻结的。如果可以让用户跟踪当前的初始化状态(某种闪屏),我会对这个解决方案感到满意。
虽然我不知道它们中的任何一个会如何具体工作,但如果你们中的任何人能给我一些关于如何以及从哪里开始的建议,我会很高兴。
【问题讨论】:
标签: c# asp.net-mvc server-side single-page-application hottowel