首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP开发人员寻找与Java EE体系结构等效的解决方案

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

Stack Overflow用户
提问于 2010-08-14 19:30:59
回答 2查看 6K关注 0票数 6

我是一名PHP开发人员,我读到了Java EE技术,我想实现这些技术( n-tier、EJB、JPA……)用PHP和所有随之而来的东西(MySQL,Apache...)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-16 00:17:47

别。

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都值得一试。暂时避免使用Cake。

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

票数 11
EN

Stack Overflow用户

发布于 2011-04-22 10:08:47

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

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

我们将这些层分成了三个相关的组,这样我们就可以拥有独立的测试站点,用于QA、试运行(用户验收)和生产。

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

前端层(VM)

  • 应用层(端口80) --包括AJAX响应、验证代码、导航等。
  • 管理层(端口443) --包括可访问系统度量和单元测试应用编程接口提供程序(端口443)的管理仪表板--安全的RESTful网络服务harnesses
  • Service (带令牌),为合作伙伴和其他将系统用作“平台”的人提供服务。

中间层(虚拟机)

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

后端层(VM)

SQL Layer --处理对数据库的查询、插入、更新和删除(作为准备好的语句实现),当数据库更改为不同的kind...example时,可以采用这种方式进行调整:从PostgreSQL到MySQL,反之亦然。包括用于备份和恢复数据库的PHP代码。

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

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

你会把框架放在哪里来链接到你代码中的所有地方呢?在每一层?馊主意。框架包含许多您可能需要和可能不需要的页面。因此,它们会降低性能,特别是在乘以您必须安装它们的每一层时。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3483080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档