免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5791 | 回复: 6
打印 上一主题 下一主题

PFC 3.0 Core Preview 发布 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-25 03:46 |只看该作者 |倒序浏览
因为机器损坏,所以这次发布的 PFC 3.0 Core Preview 没有文档,等到以后发布新版本时再提供了。不过源代码中都包含了详细的注释,相信看明白也不是难事。

PFC 3.0 Core Preview 包括下列内容
  • Front Controller
    实现单一入口的应用程序,初始化 Session 支持和 Module Principal。
  • Session Handler
    对 Session 处理的封装,目前只提供了一个 PHP 自带 Session 功能封装的实现。
  • Module Principal
    处理 Front Controller 传来的 module name 和 action name。包括权限检查、指定 module 和 action 的有效性检查、载入 module 配置文件等。
  • Membership 和 SqlMembershipProvider
    Memerbship 提供了一个操作用户信息的一般接口,而 MembershipProvider 则提供了用 SQL 数据库作为用户信息存储容器的操作实现。
  • Roles 和 SqlRoleProvider
    Roles 提供了操作角色信息的一般接口,而 SqlRoleProvider 则是具体实现。
  • 一个基本的公共函数库
    一些有用的全局函数。


与 PFC 2.0 的重大区别
之所以要抛弃 PFC 2.0,而重写全新的 PFC 3.0,除了提供一个更灵活的用户权限体系外。最重要的原因是我觉得对于目前的 PHP 来说,一个完全 OO 化的框架是不实用的。因为 PHP 和 Java / .NET 相比最重大的区别就是 PHP 是解释执行的,而且 PHP 并不是一个运行环境,而只是一个解释器。也就是说服务器(Apache / IIS)每次接受 HTTP 请求时,整个 PHP 程序的运行环境都会重建。因此一些重要的信息无法在两次 HTTP 请求之间共享。虽然可以通过 Session 保存这些信息,但 PHP 程序运行时还要从 Session 中取出保存的数据,并重新构造为对象。这对性能的影响是不可忽略的,有时候也是不可接受的。关于这方面完整的内容,我想不是短短几句话说得清楚的。

因此,PFC 3.0 采用了一种混合模式。打开 FrontController.class.php 文件就会发现,这里根本没有定义什么 class,就只是一段过程式代码。同样的,虽然 SqlMembershipProvider 和 SqlRoleProvider 是定位为对象,但是为了降低性能影响,所以没有采用多重继承。Session Provider 甚至没有构造函数,所有的方法都是静态的。

和 PFC 2.0 相比,更重大的区别在于每个 action 的实现!
PFC 2.0 中,Front Controller (在 PFC 2.0 中是 Application 对象)执行一个 action 时,会通过 action_mapping.php 文件查到该 action 对应的 Action class 名称,然后构造这个 Action class,再调用其方法。这种做法的弊端是有时候一个很简单的 action 就要构造一个非常复杂的 Action class。
所以在 PFC 3.0 里面,我干脆去掉了 action 映射和 Action class。每一个 action 都对应一个 .php 文件。在这个文件里面,你可以采用过程式编程方法实现 action 的业务逻辑。例如 index.php?module=welcome&action=welcome,就会调用 /modules/welcome/welcome.php。我只需要在 welcome.php 中编写显示欢迎页面的代码即可。毫无疑问,这样绝对比先查询 action_mapping.php 文件,再构造 Action class,最后再调用方法来得快得多。

顺便说说我的性能测试结果。构造一个对象比构造一个数组慢4倍以上,如果对象很复杂,那么更慢。这还不包括载入对象定义文件并解释的时间。其次,调用一个对象的方法也比调用一个简单函数要慢一点点。最后,如果是多重继承,那么对象的构造时间就多倍增长。

废话两句,我认为将需要频繁读取的配置信息保存为 XML 文件绝对是个巨大的错误!例如 php.MVC 将整个 Web 应用程序的配置信息和 action 的映射信息都保存到一个 XML 中。可以想象当 action 数量增多以后,初始化 XML 解析引擎以及从 XML 文件提取数据的动作会消耗掉多少系统资源。

补充
目前释放的 PFC 3.0 Core Preview 只是一个雏形,在以后的发展中会有很大的变动(例如我在另一个项目中采用了 PFC 3.0 的一部分,也做了不少的改进,但还没有合并到目前发布的版本中)。

下载
http://www.dualface.com/downloads/pfc3_20040725_170957.rar
全部文件已经转换为 GB2312 编码,并增加了遗漏的数据库结构文件。

论坛徽章:
0
2 [报告]
发表于 2004-07-25 09:15 |只看该作者

PFC 3.0 Core Preview 发布

等了好久,这次可以好好看看了。

论坛徽章:
0
3 [报告]
发表于 2004-07-25 10:17 |只看该作者

PFC 3.0 Core Preview 发布

所以在 PFC 3.0 里面,我干脆去掉了 action 映射和 Action class。每一个 action 都对应一个 .php 文件。在这个文件里面,你可以采用过程式编程方法实现 action 的业务逻辑。例如 index.php?module=welcome&action=welcome,就会调用 /modules/welcome/welcome.php。我只需要在 welcome.php 中编写显示欢迎页面的代码即可。毫无疑问,这样绝对比先查询 action_mapping.php 文件,再构造 Action class,最后再调用方法来得快得多。


这也是mojavi的聪明之处!

论坛徽章:
0
4 [报告]
发表于 2004-07-25 15:14 |只看该作者

PFC 3.0 Core Preview 发布

为什么编码使用utf-8的啊?不是gb2312?
longnetpro 该用户已被删除
5 [报告]
发表于 2004-07-25 21:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2004-07-26 01:37 |只看该作者

PFC 3.0 Core Preview 发布

晕,真是公说公有理,婆说婆有理啊。

论坛徽章:
0
7 [报告]
发表于 2004-07-30 00:33 |只看该作者

PFC 3.0 Core Preview 发布

不明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP