PHP开发人员寻找与Java EE体系结构等效的解决方案

时间:2010-08-14 11:30:59

标签: php architecture java-ee equivalent

我是一名PHP开发人员,我读过有关Java EE技术的文章,我想用PHP实现这些技术(n层,EJB,JPA ......)以及所有的东西(MySQL,Apache ......)。

2 个答案:

答案 0 :(得分:10)

别。

PHP不是Java。像编写Java代码一样编写PHP代码愚蠢并适得其反。这很可能会使代码的未来维护者想要伤害你。

需要坚持一个物体吗? Use an ORM

需要多层架构吗?如果你设计的代码有适当的关注点分离,那么你已经有了9/10的路径。

的EJB?每次我阅读维基百科文章时,都会有不同的描述。可重复使用的组件?什么是分布式应用程序和数据持久性的标准化接口?有用,是的,但那不是PHP。 ORM和a good message/work queue将完成工作。

底线:对于绝大多数PHP脚本,您不需要任何“企业技术”。如果您这样做,那么您做错了:要么您已经过多了应用程序,或者您选择了错误的平台。

首先选择a modern PHP framework,然后从那里构建应用程序。如果你来自Java,那么Zend Framework似乎是最不受欢迎的。 Kohana,Symfony和CodeIgniter都值得。现在避免蛋糕。

保持简单,你就不会出错。

答案 1 :(得分:1)

你的问题很有见地。这是因为随着您的企业变得更加成功,它必须向上扩展以支持更多流量的负载。因此,您必须将PHP代码分离为在单独的上运行的(单独的服务器或单独的虚拟机,如Xen。)

例如,我在去年设计了一个用10个Linux OpenSUSE服务器实现的系统,运行大约25个Xen虚拟机(VM)。有些VM是负载平衡器,有些是前端层,有些是中间层,有些是是后端层,有些包含MySQL数据库,我们有几个专用服务器,它们是用于存储用户文件的RAID阵列。我们根据需要创建了NFS安装来保存/读取RAID阵列中的文件。

我们将这些级别分为三个相关组,因此我们可以为QA,分段(用户验收)和生产提供独立的测试站点。

所以我们的PHP软件被分成松散耦合的层,如下所示:

FRONT-END TIER(VMs)

  • 应用层(端口80) - 包括AJAX响应,验证 代码,导航等。
  • 管理层(端口443) - 包括Admin Dashboard 访问系统指标和单元测试工具
  • 服务提供商(端口443) - 安全 RESTful Web服务API(带令牌) 为合作伙伴提供服务 使用该系统的其他人 “平台”。

MIDDLE TIER(VMs)

  • 业务逻辑层 - 计算 特定于系统或业务, 或者角色和权限 各种用例
  • 互操作层 - 社交的授权和帖子 网络或合作伙伴应用, 等

后端级别(VM)

  • 数据访问层 - 处理SQL 查询,插入,更新,删除 数据库(实施为准备 声明)可以是一种方式 在数据库更改时适应 另一种......例如:来自 PostgreSQL到MySQL,反之亦然。 包括用于备份和的PHP代码 恢复数据库。

另一位受访者提出使用企业软件框架的想法对我来说似乎很愚蠢。如果您在单个服务器上开发学生项目或“概念证明”,并且您已熟悉框架,则可能会将其用于快速原型设计。

但正如您从上面所看到的,当您编写分布在多个层级的生产质量代码时,您不需要使用框架。

您将框架链接到代码中的所有位置?在每一层?馊主意。框架包括您可能需要的许多页面,您可能不需要。因此,它们会降低性能,尤其是在乘以必须安装它们的每个层时。

同样低效的是创建一个“层”只是为了包含每个其他层必须调用的框架。软件层的好处是松散耦合并独立于其他层,因此当一层发生变化时,它们不需要在另一层中进行更改。

此外,编写生产质量代码的开发人员不需要依赖框架所代表的“瑞士军刀”。这样的开发人员能够编写有针对性的高效代码,并在必要时重用他们可能为以前的项目开发的库中的类。