6

我是一名 PHP 开发人员,我阅读了有关 Java EE 技术的信息,我想用 PHP 和所有附带的东西(MySQL、Apache ...)来实现这些技术(n-tier、EJB、JPA ...)。

4

2 回答 2

11

不。

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

需要持久化一个对象吗? 使用 ORM

需要多层架构?如果您在设计代码时使用了适当的关注点分离,那么您已经完成了 9/10。

EJB?每次我阅读 Wikipedia 文章时,都会对它们进行不同的描述。可重复使用的组件?使用标准化接口,分布式应用程序和数据持久性是什么?有用,是的,但这不是 PHP。ORM 和一个好的消息/工作队列将完成工作。

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

首先选择一个现代 PHP 框架,然后从那里构建您的应用程序。如果您来自 Java,那么 Zend Framework 似乎是最不陌生的。Kohana、Symfony 和 CodeIgniter 都值得。暂时避免使用蛋糕。

保持简单,你不会出错。

于 2010-08-15T16:17:46.767 回答
1

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

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

我们将这些层分为三个相关组,因此我们可以为 QA、Staging(用户接受)和生产提供独立的测试站点。

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

前端层 (VM)

  • 应用层(端口 80)——包括 AJAX 响应、验证码、导航等。
  • 管理层(端口 443)——包括可以访问系统指标和单元测试工具的管理仪表板
  • 服务提供者(端口 443)——安全的 RESTful Web 服务 API(带有令牌)为合作伙伴和其他将系统用作“平台”的人提供服务。

中间层(虚拟机)

  • 业务逻辑层——特定于系统或业务的计算,或各种用例的角色和权限
  • 互操作层——授权和发布到社交网络或合作伙伴应用程序等。

后端层 (VM)

  • 数据访问层——处理对数据库的 SQL 查询、插入、更新、删除(实现为准备好的语句),当数据库更改为不同类型时可以适应...例如:从 PostgreSQL 到 MySQL,反之亦然. 包括用于备份和恢复数据库的 PHP 代码。

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

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

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

同样低效的是创建一个“层”只是为了包含一个其他层都必须调用的框架。软件层的好处是松耦合,独立于其他层,这样当一层发生变化时,不需要另一层发生变化。

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

于 2011-04-22T02:08:46.687 回答