我正在寻找最佳实践或一般方法,使常规非程序员可以修改服务器端应用程序。它不需要热修改;它可以重新编译和重新部署。
假设系统位于EJB或Spring容器中。系统是消息驱动的(可能是EJB3.1)。有许多POJO从客户端应用程序(RCP或RIA)接收消息,对这些消息做出反应,并向同一个和其他客户端应用程序发送更多消息。使系统易于修改的最佳方法是什么?如果我正确地分离了服务器的逻辑组件,那么哪种技术或设计方法可以让逻辑POJO与新的POJO交换掉,从而改变应用程序的行为?
我认为我所描述的是战略模式。这些POJO可以从一组人类可读和可编辑的规则生成吗?像Drools这样的规则引擎是解决此问题的正确方法吗?
这是否可以与状态机生成器结合使用,以便每个状态都有一个输入消息列表和对每个状态的响应,转换规则等等?
玩具示例:
等
现在我就这样写出来了,看起来脚本语言和编程几乎一样......
我正在寻找正确方向的指针。或者可能是我过于复杂的事情。也许我应该尽可能地将业务逻辑尽可能地分开并在代码中进行更改?
为清晰起见于2012年2月22日编辑
答案 0 :(得分:1)
我同意JB Nizet关于手术刀的评论。
无论如何:对你的问题的一些答案:
Spring,Griffon,嵌入式Jetty,Servlet,EJB(或POJO?还是......?) 到目前为止这个平台是一个好方法吗?
EJB不会以这种方式工作,它们需要像Glassfish或Websphere Application Server这样的EJB容器。但是如果你使用Spring,那么你就不需要EJB(你有Spring Beans)。如果你使用Spring,那么你大多数都有一个Spring Servlet,所有的web东西都是由Spring MVC Framework处理的 - 这是来自classis Servelt编程的潜水员(没有框架)
动态更改某些代码的一种方法是使用脚本语言。因此,您可以使用例如Rino在JVM中运行java脚本代码。
但实际上,当我需要完成你的工作时,我会尝试为服务器和客户端实现一些框架,这样可以很容易地用java编写游戏。因此,您的学生可以使用普通的IDE,也可以使用maven来部署完整的应用程序。