PHP+Java

1.php开发网站的优势

         PHP是一种强大的CGI脚本语言,语法混合了C、Java、Perl和PHP式的新语法,执行网页速度比CGI、Perl和ASP更快,而且内嵌Zend加速引擎,性能稳定快速,占用系统资源少,代码执行速度快。

 PHP不受平台束缚,可以在UNIX、Linux等众多不同的操作系统中架设基于PHP的Web服务器。

采用Linux+Apache+PHP+MySQL这种开源免费的框架结构可以为网站经营者节省很大一笔开支,特别是在一些商业模式初期,PHP众多的开源系统与高效的开发速度,可以很快的进行商业模型的试错,是创业与新项目实践的最高效的手段。

        有朋友可能在这里会提到Nodejs等比PHP更有开发效率的开发语言,但是Nodejs绝对没有像PHP这么多的开源软件系统,比如PHP的内容管理有著名的wordpress(基于插件的设计模式非常棒),ECShop国内已经用烂了的开源商城,discuz只要是论坛就会有它的身影,还有很多很多的这样的系统可以在他们的基础上进行二次开发快速的实现业务。

2.php的致命缺陷

      PHP虽然有开发效率高等的优点,但是一旦你的系统进入发展期那么PHP就会成为你业务业务发展的巨大瓶颈,因为PHP的语法是非常混乱的对于超过10人的团队进行协同开发如果没有优质的注释和文档,会陷入一个开发混乱的瓶颈期反而效率大减(也许有人会反对会说他们的团队不会这样),我喜欢举例来说名,大家开一看一些国内开源的代码比如ECShop,你会发现里面代码的风格非常的混乱,甚至有多种方式去访问数据库的代码出现,这对于大型系统集成开发那就是灾难,不可否认其他语言也会出现这种问题,但是其它语言比如JAVA你会很好的去规范代码的规则与使用的工具。

      其次就是中间件的问题,对于大型业务系统线程与中间件是必不可少的东西,消息队列多线程异步协同处理,PHP很难去做到这一点因为PHP没有多线程这种概念,就算有相应的库单那只是表面,并不是真正的去实现了底层的多核多进程调用,也许以后会有真正支持的库出来,但是在多线程多进程这种要求同步性,线程安全性上面PHP也会成为灾难,PHP的tcp/ip库是一个非常恐怖的东西效率极低甚至还不如老式的VB,至于消息中间件企业总线这些东西甚至来工作流都没有成熟可以真正的工业化的应用。

3.JAVA当前大型网络系统的基础

     我曾经说过C语言是所有系统开发的基础,JAVA就是互联网时代的C语言,全球的大型网络协作系统基本上都是基于JAVA语言和JAVAEE的架构来实现的,我可以这么说现代互联网系统企业级应用,你不管是用什么架构什么技术可以说JAVAEE的体系就是这些系统模仿的鼻祖,其完善的体系结构通过以EJB为核心的业务实现完美的构造了第二代网络系统架构的标准与基础,甚至可以说是大数据的起源。很多人用过一些开源的消息中间件来实现异步数据同步收集,其实这些中间件都是基于JMS的实现,在最原始的JAVA系统中你就可以看到如何用消息BEAN来实现多业务系统异步调用这块的东西。

4.PHP与JAVA本质的区别

 

5.接口与模块化设计实现

        以接口模块的话的方式进行系统的模块的开发,然后将每个模块以服务的方式提供接口(这个服务的方式并非只是指Web Service,而是任何可以实现系统集成的接口,比如TCP/IP,http,消息中间件,甚至是RPC),我以前在一个业务系统中是使用过消息中间件和HTTP的方式来集成几套不同的系统实现部分业务的共享。当然对这些接口要有统计的管理调度业务路由系统,比如像企业总线还有一些公司自己实现的业务总线,淘宝的dubbo框架等都可以实现基于服务的接口通过不同的协议进行调度管理。对于小型业务系统可以直接使用SPRING自己来编写一套业务调度管理的系统。

基于会员管理的接口实现

6.php调用业务

     PHP用什么样的方式来实现与业务调度系统的耦合最好了,PHP对这块的支持到现在可能最好的方式就是CURL实现HTTP的方式,当然我用过一款PHP的消息队列来实现异步事件调用实现邮件发送(邮件服务器JAVA开发的支持消息队列),这款消息中间件还是比较好用效率也比较高大家可以去研究一下rabbitmq,使用WebService的方式也是可以的。

7.通信的方式与安全

     不管采用什么方式协议的数据封装与数据安全是最重要的,可以采用HTTPS协议来进行数据的传输通信但是购买证书是需要费用的,大多数时候还还是自己去实现参数加密这一块,这里我推荐使用非对称加密RSA的方式来对数据进行加密,使用google buffer效率会非常高只可惜PHP的支持有限使用非常不方便,所以只能用JSON或者XML的方式,当然自己基于数据特性来写一套传输用数据封装规则也是可以的,反正PHP和JAVA都支持序列化。

8.系统如何架构

     前面已经介绍了通信方式与实现的一些规则,现在说说怎么架构这样的系统,如果你是一套电商平台,PHP专门来实现展现层的业务,比如内容的栏目商品类目的管理,整体网站的模板管理,网站页面静态化都交由PHP来实现,这一块的业务单独的部署到网站服务器中,在用PHP来编写一套后置通信的模块,该模块专门实现与业务系统进行通信,还要部署一套分布式缓存或者是NOSQL数据库,业务区分为异步与同步两块,对于需要及时反馈处理的数据使用同步模块进行调用,那些非实时的是数据可以先写入本地的缓存和NOSQL数据库中,时间空余的时候在来进行同步操作。

9.Java与PHP结合选型

目前已知的PHP与Java在Web间整合技术可分成SOAP(Simple Object Access Protocol)、Quercus、PHP/Java Bridge三种,这些技术可以让PHP与Java在开发Web应用程序时互相使用彼此的程序库。

SOAP

SOAP是IBM、Microsoft等公司开发、W3C推荐,用来实现分布式对象技术的协议。SOAP提供了一套以XML来包装程序调用、参数传递与信息回传的机制,借助XML纯文字的特性,可通过HTTP、HTTPS、SMTP等通信管道穿越企业的防火墙。比起CORBA、Java RMI及DCOM这些以专属binary格式传送数据的分布式对象技术协议,SOAP具有与程序语言、平台和硬件无关的特性。

Quercus

Quercus是一个开源 PHP 5 引擎,它已经拥有了纯 Java 的完整实现。Quercus 在 Resin 应用服务器之上运行,利用了负载平衡、代理缓存等 Resin 特性。

PHP/Java Bridge

开源产品有:Php-java-bridge 与 LAJP

10. 给个栗子

    团队组建完成需要搭建一套存储数据很大的管理系统,要求系统高可用,给的时间很短,而且后期会持续对系统增加和修改功能,这就直接不考虑用java来写了, 初始阶段考虑用php做这套系统,总所周知PHP开发周期是比较短,但是又考虑到系统中用的组件太多,php也找不到好的解决方案。 又考虑到开发时间给的不是太多,php和java都不能同时满足我们的需求(团队后端只有php和java),于是我们采用php和java混搭的方案。后面带来好处太多了。简单的说一下:

        1. php来做前端发布快,不用像java一样修改一次代码就重启一下tomcat,那岂不是太慢了~
        2. java中的jar提供很多组件解决方案而php这种方案在网上很少,有些都行不通的。~~
        3. java只做数据和组件操作,php做了绝大多数的事情,而view层和controller层修改频繁,这样开发效率大大提升
        4. java来做缓存就不用多说了吧~

猜你喜欢

转载自blog.csdn.net/beauty5188/article/details/81456073