`
bardo
  • 浏览: 371660 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11594
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:9970
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9326
社区版块
存档分类
最新评论

元数据驱动还是标签引擎?

    博客分类:
  • PHP
阅读更多

 ——OpenBiz Cubi试用随感
PHP的开发框架,是向用户提供元数据驱动还是标签引擎?可能很多人几乎无法回答。因为,此问题太抽象了。
何为元数据驱动?一般情况下:页面几乎没有PHP的程序代码,几乎极少的代码。但是,任一功能,必须要有基于XML/YAML格式的配置文件,来告诉程序,页面处理哪些数据,如何处理。这就是说,元数据驱动本身,有一个通用的处理程序。
元数据驱动最大的好处是其快速开发能力。因为,一切只要配置,甚至,可以写一个向导,生成这些配置文件。对于一些额外的,无法配置的,才用代码来完成。
近日来,发现PHP的框架,基于元数据驱动来势汹猛,特别是OpenBiz Cubi进入中国以后,使人们对元数据驱动完全刮目相看。
何为标签引擎?JAVA中的STRUTS是近乎标准的标签引擎。但PHP的SMARTY,只是抄袭的JAVA。所以,从这一点来说,PHP至今没有一个很好的标签引擎。
其实,无论是元数据驱动还是标签引擎,其目标是能让用户快速开发。并且,从二者的长处来看,并不能偏废任意一个。因为,元数据驱动的界面都是标准界面,它无法处理灵活的布局,不同的STYLE。所以,它是一个比较完美的企业应用解决方案。并不适用于互联网,特别象是WEB2.0一类的网站的开发。
标签引擎,最大的问题,是会让开发者感到,为了MVC而MVC,独立的标签页排板,最终面临的性能上的消耗。但只有标签引擎,才是真正适合网站一类的开发。
今天有幸试用了OpenBiz Cubi,但绝对没想到,一个开发10年之久的这个框架是如此粗糙。现描述我试用遇到的问题:
1、安装时,直接使用WINDOWS的安装包,下载的是3.09最新版。然而,就是到创建快方式时程序不再工作,陷入死循环之中。
经过多次折腾,结果发现,安装包不允许操作系统中有APACHE,MYSQL这些已注册的服务,否则,就会报错。
当然,中国的软件公司,绝大多数都是使用AppServer,这种极为初级的开发环境。在一台机器中配置多套WAMP,这样的公司并不多见。所以,该我倒霉,OpenBiz Cubi3.09一开始就是始终安装不上。
2、OpenBiz Cubi最为吸引人的亮点,那就是它有AppBuilder。这就是说,这个框架可以编程序。初次使用AppBuilder,添加数据库链接,测试链接,正常,但点击下一步,异常错误。数据库就是连不上。
AppBuilder最让人痛苦的是,每一个表,每一个字段都得一一录一遍。这对于使用数据库设计工具的,或己经完成数据分析,表己经生成的,完全是一个脱裤子放屁的事情。
我试着将表导入到库中,这里,吸取前一次的教训,我只用现有的数据库Cubi,导入进去后,选择一个表,创建应用,结果,在完成前一步,出错,报错的内容,居然是要往USER表中插入一条记录失败。
这是一个开发工具,开发中有很多例外的需求,我无法想象,OpenBiz Cubi的QA是如何做的,OpenBiz Cubi的需求分析水平是什么水准?打心理希望OpenBiz Cubi能有一两个真正的架构师。
联想到本人PHP技术历程中,一直不断带领团队在开发PHP的框架。从最简单的,无设计模式的,WEB界面组件库的WOLF v1.0(Web Object Light Framework)(一个程序库式的框架)到WOLF v2.0,(基于元数据驱动的框架),以及Ulex v1.0(Util Librarie Enterprise eXtension)(一个基于标签库,但希望能拥有基于元数据驱动的优点的框架)。这些框架都没有敢开源发布。主要原因有几个方面:一是框架本身不够完善。其次,一个喜好重造轮子的人,让一个企业的团队,进行新技术的研发,特别是,针对基于标签库,但希望能拥有基于元数据驱动的优点的框架,走上的技术上的不归路。本人得到的几乎不是经验,更多的是教训。WOLF v2.0的使用,让我深深了解到元数据驱动的局限性,有时,会大大影响开发的进程。这当然,是一些题外话了。
但当我看到OpenBiz Cubi,或者看到Phalcon框架之时,我仍有一种冲动,因为我发现,我的梦想仍然没有实现。可惜的是,写代码的生涯现并不多算是结束了。
Phalcon的标签引擎相当初级,没有对应的界面组件。这当然与Phalcon本身的定位有关,因为,它是注重于性能的。它只是一个PHP的扩展,无法涉及JS,HTML层面。
PHP相对于JAVA,是不是永远在其初级的层次上转圈子?看看JAVA,除了SSH,还有TAPESTRAY。
OpenBiz Cubi有它与时俱进的一面。它将自己定位是PAAS。它确实可以称为是一个PAAS。而且,虽然经历了漫长的10年的开发,云计算给它带来了新的生机。

分享到:
评论

相关推荐

    集团企业数字化转型:集团企业数据中台解决方案共49页.pptx

    全域数据采集与引入:以需求为驱动,以数据多样性的全域思想为指 导,采集与引入全业务、...统一主题式服务:通过构建服务元数据中心和数据服务查询引擎,面 向业务统一数据出口与数据查询逻辑,屏蔽多数据源与多物理表

    浪潮数据中台解决方案.pdf

    数据中台的概念由阿里巴巴首次提出,它是一个承接技术、引领业务、构建规范定义的、...  统一主题式服务:通过构建服务元数据中心和数据服务查询引擎,面向业务统一数据出口与数据查询逻辑,屏蔽多数据源与多物理表

    peterlyons.com:用于驱动我的个人专业网站的node.jshapi.js Web应用程序

    peterlyons.com网站此仓库... 该站点需要3个git存储库才能正常运行代码(此存储库)(还有照片库元数据) 数据/内容(博客文章) 静态文件(图像,字体等) 数据和静态存储库并不是特别有趣。 所有有趣的代码都在此存储

    Recuva 1.37.0.488汉化版

    - 没有名字的文件扫描过程中发现深现在使用元数据命名。 工程下列文件类型:支持MP3,WMA,格式,RTF格式,链接,文档, 将XLS,ppt文件,室间隔缺损,TIFF格式,JPG和PNG。 - 增加了一个2048字节的扇区大小的USB...

    java开发常用jar包

    Hibernate使用dom4j解析XML配置文件和XML映射元文件。必需的。 ehcache-1.2.jar Hibernate可以使用不同cache缓存工具作为二级缓存。EHCache是缺省的cache缓存工具。如果没有其它的可选缓存工具,则为必需的。 ...

    java 面试题 总结

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect...

    超级有影响力霸气的Java面试题大全文档

     forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...

    SERP预览工具「SERP Preview Tool」-crx插件

    如果您打开了多个Chrome窗口(不是标签),则会显示打开的较新窗口的数据。 “重置字段”应该返回到页面的标题/描述,而不是完全删除 * 04-10-11: 调整CSS去增加更多集成和原生的外观。 将CSS调整为当前SERP的颜色...

    ASP.NET的网页代码模型及生命周期

    q 视图状态虽然安全性较高,但是还是有风险,如果直接查看页面代码,可以看到相应代码。 4.4.2 控件状态 ASP.NET中还提供了控件状态属性作为在服务器往返过程中存储自定义控件中的数据的方法。在页面控件中,如果有...

    易语言程序免安装版下载

    升级加密狗驱动程序,增加了对 Windows 7, Vista 等操作系统的支持。 5. 操作系统界面功能支持库(shell.fne)中的“执行()”命令增加一个参数“窗口显示方式”,作用与核心库“运行()”命令的同名参数一致。 6. ...

    javaSE代码实例

    第2章 基本数据类型——构建Java 大厦的基础 12 2.1 源代码注释 12 2.1.1 单行注释 12 2.1.2 区域注释 12 2.1.3 文档注释 13 2.2 基本数据类型 14 2.2.1 整型 15 2.2.2 浮点型 17 2.2.3 char型 17...

    Tcl_TK编程权威指南pdf

    命令行变元 预定义变量 第3章 cgi应用程序--顾客留言簿 html简介 使用cgi创建动态页面 guestbook.cgi脚本程序 定义表单以及处理表单数据 cgi.tcl软件包 接下去的几步 第4章 tcl中的字符串处理 string...

Global site tag (gtag.js) - Google Analytics