BCP(Business Controller Page,业务-控制器-页面)是一种新的面向WEB应用的设计模式,它基于AOA架构,继承并扩展了MVC模式。BCP模式整合了模型、视图和控制器并对相互之间的关系进行了清楚的界定。
传统的MVC模式只是提供了一个通用的分层的描述方法,实际在具体定义上是很宽泛的,由于MVC模式最初是在Smalltalk中实现的,而施乐开发 Smalltalk 主要是用来做图形界面编程的,所以对于WEB开发来说,MVC各层次跟WEB架构之间并没有明确的对应关系,原因很简单:MVC模式当初根本就不是为WEB应用而设计的。
当然,MVC模式的思想应用于WEB开发获得了空前的成功,不过问题也接踵而来,其中一个争论的焦点就是:MVC到底该怎么对应到WEB架构的各个层面?BCP模式就是在这个背景下提出来的,模型就是数据这种说法其实并不精确,在BCP模式下,模型对应于业务层,控制器指类或方法的集合,视图则对应于WEB页面,业务层收集数据并以哈希表或集合的方式传递至控制器,同时接受控制器传递的参数以操作数据,控制器整理业务层数据以在页面呈现,同时收集页面数据并以参数形式传递至业务层。