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的架构来实现的,很多人说JAVA里面的EJB笨重你真正的去了解过JAVAEE的体系吗,我可以这么说现代互联网系统企业级应用,你不管是用什么架构什么技术可以说JAVAEE的体系就是这些系统模仿的鼻祖,其完善的体系结构通过以EJB为核心的业务实现完美的构造了第二代网络系统架构的标准与基础,甚至可以说是大数据的起源。很多人用过一些开源的消息中间件来实现异步数据同步收集,其实这些中间件都是基于JMS的实现,在最原始的JAVA系统中你就可以看到如何用消息BEAN来实现多业务系统异步调用这块的东西。

    现在很多从事JAVA开发的号称精通SPRING框架,说可以这么说如果你都没有去研究和了解过或者进行过EJB开发,你根本就无法真正的去理解SPRING框架的内涵是什么,也无法真正的使用好SPRING框架。


4.PHP与JAVA本质的区别

    凡是了解PHP的程序员都清楚,PHP本身只是一个基于PHP执行器的脚本而已,怎么来理解这个东西了,大家搞过LINUX的shell编程都知道,shell本身并不是一个独立编译的语言知识基于linux命令的一种集合,通过命令的调用来实现对系统的控制和调度,PHP就是这种模式他只是依赖于执行脚本的执行器,上面的函数调用语言流程最后都是调用C语言的一个接口而已。

    JAVA有些程序员也把他作为一种解释程序,其实这是非常错误的理解,JAVA和PHP这类语言有着本质的区别,比如C语言是通过编译成汇编然后变成二进制语言也就是机器语言来执行程序,机器语言就是最底层的计算机处理方式,而JAVA为了实现跨平台这个方式而在一个JVM也就是俗称的JAVA虚拟机上进行运行,他不能脱离虚拟机,那么JVM到底是什么了,大家长期使用windows来进行开发感觉,JVM只是在windows平台上安装的一个软件壳而已。

     有很多老一代的程序员,做过DOS编程或者学习汇编用开发板来做过编程的人肯定做过虚拟机开发,就是用程序来模拟整个电脑的运行模式,比如怎么实现加电启动电脑,调用硬盘进行引导,调用驱动去加载显卡,JVM其本质就是一台电脑一个电脑平台,就像80年代有各种各样的电脑平台系统一样,JVM是独立与PC模式的,在整个JAVA架构里面有JAVAME,他可以集成到任何的单片机系统实现独立体系,大家家庭常用的机顶盒就是这种模式,那么JAVA编译成字节码他就是一种JVM这种体系的计算机执行的机器语言,只是为了跨平台方便对这种语言进行了二次编译,对于有些JVM支持平台会对JAVA字节码进行在编译变成二进制的机器语言,所以JAVA的执行效率是远远高于PHP,并能实现多线程与CPU的多核调用(在JDK 1.4的时候有个开源的工具就是可以把JAVA编译成windows平台的EXE文件,使用反编译工具出来的是汇编语言)

 

两种不同的执行方式

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数据库中,时间空余的时候在来进行同步操作。

   

   

      

更多推荐

网站开发基础PHP+JAVA实现静动分离