最大化数据,最小化代码 - 限制和问题是什么?

时间:2008-11-12 22:20:15

标签: language-agnostic programming-languages

我想设计具有客户端(可能是C#gui)和服务器组件(Java,C ++,Perl)的非常高的可用性(永远不会关闭服务器,推出无需重启的功能等)应用程序。

我从(minimize-code-maximize-data.htmlYegge)得到了一些建议,我想让大多数逻辑从数据库中动态读取,以便所有配置(包括所有GUI配置,文本翻译等,业务规则)以及数据)将驻留在数据库中的服务器上,而不是需要重新启动才能读入可执行内存的代码中。

我希望能够自定义应用程序的任何方面,而无需重新启动客户端或服务器,并且应用程序会以尽可能短的延迟(动态类加载等)反映更改。

设计这种“永不杀人”系统的性能和其他限制是什么?有人设法创建这样的应用程序吗?主要经验教训是什么?什么时候这不符合成本效益,更传统的构建,发布,qa,几个小时的停机时间方法是必需的?

2 个答案:

答案 0 :(得分:3)

我在一个MUD游戏服务器上工作,该服务器对脚本进行动态编译,这样游戏中几乎任何东西都可以在运行时更改和重新编译,而不必断开任何用户的连接。

也许我从该项目中学到的最大教训是当您编写代码时,它可以做任何事情,它实际上什么都不做。

最终,系统用户不再输入数据 - 他们正在编写一种神秘的代码语言,这对我的系统来说是独一无二的。

警惕灵活性 - 增加代码的灵活性就像在手臂中添加肘部一样。有几个关节可以到达你想去的地方,这是很好的,但是如果你有太多的肘部,它就会变得脆弱而难以指挥。

答案 1 :(得分:1)

不能完全考虑的是使用围绕脚本解释器的严重静态和小代码库,如Rhino:

http://www.mozilla.org/rhino/ScriptingJava.html

这样,所有逻辑和数据都可以放入可重新加载的脚本中,程序的唯一核心部分是脚本运行器和类似shell的部分。

这绝对不利于表现,我认为这是给定的。

如果我没记错的话,Yegge在他的博客中发布了类似的内容,所以如果你再次与他交谈,可能会问他这个问题。