Мадэль, вызначаная ў выглядзе? (A model defined in a view?)


問題描述

Мадэль, вызначаная ў выглядзе? (A model defined in a view?)

I'm working on a website which will be used all over the world and has to be highly disponible at anytime anywhere on the planet. That's why I try to use all the possible tricks to reduce at maximum the need of recompiling/restarting the website when minor maintenances must occur.

The ability in Asp.Net MVC to edit a view and have it automatically and dynamically recompiled by the framework without service interruption is really great and perfectly fits my needs. But its interest is strongly limited if I cannot edit the underlying model in a similar way and must recompile the whole stuff.

So my question : it is possible in any way (even an awful, hacky one) to define the view model class right inside the view itself in a code block ?

Otherwise, which trails could I explore to achieve a 'hot‑editable' website (I mean : whose parts could be recompiled while the site is still alive, with changes taken into account straight away) ?

Thank you so much in advance ! :‑)

‑‑‑‑‑

參考解法

方法 1:

If you are that concerned about performance and up time, consider using a server farm to host your site. When you need to make updates, you can take each server down separately so that your site is always available. 

However, most deployments only take a few seconds. Your application may need more or less time to spin up (EF view generation may take 10‑20 secs for example), but as long as you update during off peak hours you should be fine.

Also, I would NEVER EVER recommend changing code on a live server. You will break something eventually.

方法 2:

Eventually I managed to achieve the goal with another strategy. All views have the same model called DataSource which globally is a recordset open before the rendering and closed after (if needed, reads are performed by the Razor code inside the view).

The column list of the recordset may change live without making the site crash.

For forms and validation, metadata taken from the database about the underlying stored procedure lead to a code emission which dynamically create a c# type, and that's it. Despite a new type is generated each time the sp is changed, the app pool recycling rate prevents too many obsolete types zombiing in memory.

(by SsithrajrummellSsithra)

參考文件

  1. A model defined in a view? (CC BY‑SA 3.0/4.0)

#View #Model #asp.net-mvc #C#






相關問題

如何控制 addView 到佈局 (How to control addView to a layout)

ruby on rails 友誼以下節目總是我的名字 (ruby on rails friendship following shows always my name)

Мадэль, вызначаная ў выглядзе? (A model defined in a view?)

android view.getId() 返回 -1 (android view.getId() returns -1)

自定義屬性 select_year 助手或使用 javascript 滾動我自己 (custom attribute select_year helper or roll my own with javascript)

如何清理視圖對象? (How to clean view object?)

為什麼windowController是dealloc但子視圖不是dealloc (why the windowController is dealloc but the subview is not dealloc)

在 Waiting/Loading imageview 上禁用我的標籤欄和導航欄 (disable my Tabbar & Navigationbar of the screen on Waiting/Loading imageview)

DRYing rails 視圖:partial vs helper (DRYing rails view: partial vs helper)

在 SQL 中從 3 個視圖創建一個視圖 (Creating a view from 3 views in SQL)

.net core mvc:在區域上添加具有 crud 功能的控制器未正確生成代碼和鏈接 (.net core mvc: adding controller with crud functionality on area didn't generate code and link correctly)

為什麼segues不起作用?無法切換視圖 (Why segues does not work? can not switch view)







留言討論