1

我正在开发一个网站,该网站将在世界各地使用,并且必须在地球上的任何时间任何地方都高度负责。这就是为什么我尝试使用所有可能的技巧来最大程度地减少在必须进行小维护时重新编译/重新启动网站的需要。

Asp.Net MVC 中编辑视图并由框架自动动态重新编译而不中断服务的能力非常棒,完全符合我的需求。但是如果我不能以类似的方式编辑底层模型并且必须重新编译整个东西,它的兴趣就会受到很大的限制。

所以我的问题是:有可能以任何方式(甚至是一种糟糕的、骇人听闻的方式)在代码块中的视图本身内部定义视图模型类?

否则,我可以探索哪些路径来实现“可热编辑”网站(我的意思是:在网站仍然存在时可以重新编译哪些部分,并立即考虑更改)?

非常感谢您!:-)

4

2 回答 2

2

如果您担心性能和正常运行时间,请考虑使用服务器场来托管您的站点。当您需要进行更新时,您可以单独关闭每台服务器,以便您的站点始终可用。

但是,大多数部署只需要几秒钟。您的应用程序可能需要或多或少的时间来启动(例如,EF 视图生成可能需要 10-20 秒),但只要您在非高峰时间进行更新就可以了。

此外,我永远不会建议在实时服务器上更改代码。你最终会破坏一些东西。

于 2012-12-05T16:14:37.123 回答
0

最终,我设法通过另一种策略实现了目标。所有视图都具有相同的模型DataSource,称为全局记录集,在渲染之前打开并在渲染之后关闭(如果需要,读取由视图内的 Razor 代码执行)。

记录集的列列表可能会实时更改而不会导致站点崩溃。

对于表单和验证,从数据库中获取的有关底层存储过程的元数据会导致代码发射,从而动态创建 ac# 类型,仅此而已。尽管每次更改 sp 时都会生成一个新类型,但应用程序池回收率可以防止过多的过时类型在内存中僵尸。

于 2014-01-30T10:42:36.853 回答