首页 > 主页 > tongfuapi
日志:17 评论:0
北京, 东城
TFAPI框架在MVC设计模式的体现

一、我们先了解一下标准MVC设计模式

首先我们先看看标准的MVC设计模式的概念

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

然后我们再具体看看MVC是怎么协同工作的

视图
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和像XHTML,XML/XSL,WML等一些标识语言和Web services.
MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

好了!现在我们说说TFAPI框架在MVC设计理念上的一些体现。


二、TFAPI框架的设计理念

TFAPI框架是把web开发分开为两个大部分,一个是数据部分 Data,一个是显示部分 View。

1)数据 Data

数据就是包含数据库,文件,内存等等各种存储媒介当中存储的数据,这些数据会通过一系列的“加工”变成可以给用户展示的数据。其“加工”过程包括数据库的操作,缓存池的操作,以及各种应用的转换。经过“加工”后的数据我们称之为“准数据”就是这些数据将来会放到显示区展示出来。

2)显示 View

显示就是通过各种技术建立各种可以展示数据的载体模型,这些载体包括了数据表格 table、数据表单 form、数据列表 list、数据详情 detail等等,这些载体模型可以拥有一些功能,这些功能包括表单提交 submit、页面跳转 redirect、数据验证 validation等等。

然后我们的数据部分 Data 的“加工”分为四个层次,这四个层次分别为:原始数据 Original、加工数据 Processed、缓存数据 Cached、准数据 Done。

a)原始数据 Original:通过 tf_common_action 对象进行存取,我们这里所说的原始数据指的就是数据库数据。

b)加工数据 Processed:通过 tf_webservice_process 对象扩展的用户对象里面的各种方法进行反复加工。

c)缓存数据 Cached:通过 tf_cache_source_data 对象设置的缓存数据源将加工过的数据进行缓存。

d)准数据 Done:准数据会被送到前端显示区直接展示给用户。


三、TFAPI框架在MVC设计模式中的对应

1、首先我们简单地对照着MVC看看它们分别对应着TFAPI框架的什么部分。

视图:就是包含smarty模板的php页面,它包含表单,AJAX等等。

模型:就是我所说的action部分,负责存取数据。它们拥有着共性的功能,例如:add, modify, delete等等。

控制器:在TFAPI框架里没有独立的处理,按官方的解释控制器更像是将action的处理结果和用户界面连接到一起的管理对象。

2、我们的理解MVC模型就是。

1)首先我们有一些对象,这些对象被定制为一些数据模型,它们有着共性和特性。这个层面被称之为 M 层。

2)然后我们准备了很多界面,包括列表、表单、详情等等的各种视图,它们需要数据支撑。这个层面被称之为 V 层。

3)最后我们有一些规则管理这些数据如何在这些视图里显示出来,或者如何从视图收集数据更新到模型里。这个层面被称之为 C 层。

3、MVC在TFAPI框架中的体现

1)那么实际上 C 层的东西是无非就是接收 GET 输入或者 POST 输入进而做出各种“反应”的过程。

从这一点上看,我们的“表单五件套“和 pageObj 就涵盖了所有 Controllers 所做的事情。

2)进而来说 V 层的东西是很难规范化模块化的,它只能是一个概念性的东西。即便设计出来一个可以装载数据的html结构,这个结构可以”读“json数据显示给用户,它也是一个个性的东西,无法标准化。

所以我们的 $stdTable $actFormS 就属于这种视图的一种。

3)最后我再说说 M 层的东西,实际上数据模型就是一个可以将数据表的数据灵活存取的一个”盒子“,这个盒子可以进行标准的增、删、改、查操作,也可以进行一些特殊的操作(如:更新用户状态)。

那么这里的数据模型和我们的 action 确实是同一个东西。


总结:

1、MVC设计模式的优势就是逻辑,视图和数据模型分开。团队可以轻松地协同工作,数据专家可以专门搞数据模型(M),设计师可以专心做用户界面(V),应用工程师可以清晰地完成复杂的业务逻辑并通过控制器将他们对接用户界面(C)。

2、那么使用TFAPI框架做功能开发,数据专家可以专门完成 action 部分并且使用 webservice 进行数据加工(M),设计师可以专门模板部分以及各种表单、列表等内容(V),应用工程师将 webservice 返回的数据在视图当中进行对接显示出来(C)。

最后要说明的是TFAPI框架是把数据和业务逻辑放到一起 Data,把展示性的内容单独放到一起 View,起目的有三个。

1、在我看来传统的MVC模式的 V 层和 C 层没有分开的必要,这是一个连贯的动作,视图的数据来源必然通过控制器提供,就好像每一部汽车都会有发动机一样,单独的视图没有什么实际意义。

2、传统的MVC模式里面的 M 层所对指的内容实际上就是数据 Data,无论它如何加工、如何转换或者通过怎样的业务逻辑处理最终还是一组用于显示给前端的数据。

3、大型系统平台的数据和界面都是分开的,最简单的搭配也是数据库服务器 MySql 和应用服务器 Apache 分开,那么一个标准平台至少是要需要数据库、缓存池、应用服务以及用户界面四个部分组成的。