2012-12-05 35 views
1

我正在研究一個將在全球各地使用的網站,並且必須在地球上任何時間的任何時候都具有很強的響應能力。這就是爲什麼我嘗試使用所有可能的技巧,以最大限度地減少必須重新編譯/重新啓動網站時,必須進行小維護。視圖中定義的模型?

在Asp.Net MVC編輯視圖,並請有無需中斷服務框架自動和動態重新編譯的能力,是真正偉大的,完全符合我的需求。但是如果我不能以類似的方式編輯底層模型並且必須重新編譯整個內容,那麼它的興趣是非常有限的。

所以我的問題:有可能以任何方式(甚至是可怕的,哈克之一)來定義一個代碼塊中的視圖本身內部視圖模型類的吧?否則,我可以探索哪些路徑以實現「熱門可編輯」網站(我的意思是:在網站還活着的時候可以重新編譯它們的部分,並立即考慮更改)?

非常感謝你提前! :-)

+0

假設您可以在視圖中定義模型。如何讓控制器知道這些修改? – cadrell0

+0

像Unity(或IoC/DI容器)在這裏有幫助嗎?所以你不要在視圖中定義模型,只是允許它動態地改變...... –

+0

如果甚至有可能,你所要求的將是一個維護噩夢。 – jrummell

回答

2

如果你是關心性能和正常運行時間,可以考慮使用一個服務器場來承載您的網站。當您需要更新時,您可以分別關閉每臺服務器,以便您的站點始終可用。

但是,大部分部署只需要幾秒鐘。您的應用程序可能需要更多或更少的時間來啓動(例如EF視圖生成可能需要10-20秒),但只要您在非高峯時間更新,您應該沒問題。

而且,我也絕對不會推薦一個活的服務器上更改密碼。你最終會破壞一些東西。

+0

你的回答非常符合邏輯,當然會讓我的問題看起來很瘋狂。然而,有很多實用主義(你會說「不好」)的原因,爲什麼它不能在我的組織中如此簡單地應用。你傾向於採取的良好做法也是一個相當沉重的做法,我擔心我買不起它。然後,我應該想象一些敏捷且更靈活的方式,可以在線快速地進行小型更新。當然,從這樣的角度來看,在我上傳任何變化之前,我都需要進行深入的測試。但是當我們在C#中使用動態類型時,我們已經做了同樣的事情,例如,否? :-) – Ssithra

+0

Azure可能更具成本效益,但我對它一點都不熟悉。當然,經過足夠的測試和謹慎,你提出的建議可能是可行的,但仍然是危險的。 – jrummell

0

最終我設法實現了另一個策略的目標。 所有視圖都具有相同的模型,名爲DataSource,全局是在渲染之前打開的記錄集,並在後面關閉(如果需要,讀取由視圖內的Razor代碼執行)。

記錄集的列列表可能會在不使站點崩潰的情況下實時更改。

對於從約底層存儲過程導致的碼發射,其動態地創建一個C#類型的數據庫採取的形式和驗證,元數據,這就是它。儘管每次更改sp時都會生成新類型,但應用程序池回收率可以防止在內存中使用過多類型的殭屍。

相關問題