我目前開始一個小項目,展現了JS和HTML5的世界。如何在MVC中處理耗時的serverside初始化?
我幾個月前已經試過了,但是我停了下來,因爲我沒有足夠的時間從頭開始創建一個MVC單頁面應用程序。有太多的概念和模式需要理解,我會後悔在日常工作中缺乏所有這些知識。 使用它或失去它!
昨天我剛剛在約翰帕帕的博客上發現了this post,我覺得這將是一個很好的開始。基本上它是一個MVC模板,名爲HotTowel,它實現了很好的概念,如數據綁定,縮小等等。只要我需要,我就會體驗到代碼,只要我需要,就會進一步體驗它。
我想構建一個應用程序來從我的作品現有數據模型項目中獲取數據。在我們的Silverlight應用程序中,我們通過預加載和初始化字典和其他屬性來啓動它,並調用異步Init()
方法(例如,用於下載包含自定義代碼的XML文件並將它們放入字典中)。 MEF用於擺脫不方便的依賴關係。
據我所知,服務器端初始化必須在Global.asax文件中的Application_Start()
方法中完成。我想知道如何在這種方法中等待異步調用?最佳做法是什麼?我在客戶端的查詢很大程度上依賴於這些類進行初始化。有什麼選擇?
我的想法是以下幾點:
Application_Start()
火災和忘記了異步初始化過程。如果我在初始化完成之前執行一個請求(在控制器上,我猜),我不得不等待初始化過程的回調,並在它到達時立即開始查詢。這樣做的好處是,初始化可以運行,而用戶可以通過應用程序進行導航。- 我會實施某種惰性初始化。我會盡快處理初始化請求的初始化。不過,這可能需要很長時間。
- 我會在
Application_Start()
中同步運行初始化過程。我目前看到的主要缺點是,瀏覽器窗口似乎凍結給用戶。如果可以讓用戶跟蹤當前的初始化狀態(某種啓動畫面),我會對此解決方案感到滿意。
雖然我不知道他們中的任何一個人會如何工作,並會很高興如果你們中的任何一位能夠給我一些建議,以告訴我如何以及從哪裏開始。