1. 程式人生 > >網站開發基礎PHP+JAVA實現靜動分離

網站開發基礎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的架構來實現的,很多人說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實現分離

1.php開發網站的優勢          PHP是一種強大的CGI指令碼語言,語法混合了C、Java、Perl和PHP式的新語法,執行網頁速度比CGI、Perl和ASP更快,而且內嵌Zend加速引擎,效能穩定快速,佔用系統資源少,程式碼執行速度快。 PHP不受平臺束縛,可

18道PHP網站開發基礎過關測試題

1、獲得例項化物件所屬類名字的函式( )  A.get_class()  B.get_object_vars()  C.get_class_methods()  D.get_classname() 2、以下說法錯誤的是( )  A.在外部訪問靜態成員屬性時使用

最詳細的JavaWeb開發基礎java環境搭建(Windows版)

images 第一步 tools -s inf cde 空格 window 打開 閱讀文本大概需要 3 分鐘。 首先歡迎大家來學習JavaWeb,在這裏會給你比較詳細的教程,從最基本的開始,循序漸進的深入。會讓初學者的你少踩很多坑(大實話),如果你已經掌握了Jav

最詳細的JavaWeb開發基礎java環境搭建(Mac版)

windows UC 環境變量設置 喜歡 linux 系統 設置 限制 download 了解 閱讀文本大概需要 5 分鐘。 我之前分享過在 Windows 下面配置 Java 環境,這次給大家帶來的是 Mac 下面安裝配置 Java 環境。首先 Mac 系統已經帶有

93G通過項目學PHP+Ajax+jQuery網站開發技術 PHP+Ajax+jQuery項目實戰課程

錯誤處理 釋放 開發環境 tar 異常處理 年齡 常用事件 分頁 語法 ===============課程目錄===============<項目一:PHP網站搭建>├1.認識PHP.mp4├2.常用編輯工具.mp4├3.開發環境搭建.mp4├4.配置虛擬主機.

網站開發之MyEclipse簡單實現JSP網頁表單提交及傳遞值

本文主要是作者《中小型網站開發與設計》課程的內容,非常基礎的文章,主要是指導學生學會用MyEclipse實現JSP網頁表單提交及傳遞引數。希望大家喜歡這篇文章,基礎文章,不喜勿噴~ 一. MyEclipse實現網頁動態表單提交 1.新建Web Service工程,名稱為te

視訊網站開發:Ajax非同步實現搜尋輸入框的提示功能

        在我們實際專案的開發中,有時候一個小小的功能,可能都需要考慮很長的時間,因為必須把這個小功儘可能的做好做到極致。我的視訊網站從2018年年初做到現在,已經歷經了多半年的時光。由開始的功能單一,只能實現海量視訊的展示及免廣告播放功能;到現在的花樣

視訊網站開發:Ajax非同步實現已登入使用者收藏視訊的功能

        已登入使用者收藏視訊的功能是各大影視網站都具備的一項功能,也叫做加入看單或加入我喜歡。這一項功能主要是為了方便已經登入的使用者可以收藏自己喜歡的視訊,在想看的時候可以直接到自己的個人介面中觀看這些自己收藏過的視訊,極大地避免了使用者因忘記視訊名

Android安全/開發基礎--8--Java本地介面(JNI)

8-1、JNI概述 JNI的本意是Java Native Interface(Java本地介面),是為了方便Java和C/C++等原生代碼所封裝的一層介面,使用JNI技術可以對Java層遮蔽不同作業系統平臺之間的差異,從而實現Java本身的平臺無關特性。JNI和

Corba開發之基於Java實現Service與Client

1      概述 CORBA(Common Object Request Broker Architecture,公共物件請求代理體系結構)是由OMG組織制訂的一種標準的面向物件應用程 序體系規範。或者說 CORBA體系結構是OMG為解決分散式處理環境(DCE)中,硬

php,java實現裝飾者模式

當需要為現有的類增加新的功能,或則需要包裝現有類時,適合使用該模式 類圖: java實現 抽象產品類 public abstract class Subject { publi

Selenium 網頁爬蟲開發基礎Java

Overview Selenium是一個多平臺的Web應用程式測試的工具,支援包括IE、Mozilla Firefox、Google Chrome等。他可以模擬人的操作,如點選,輸入,鍵盤操作等。適合於抓取由JavaScript生成的頁面或其他需要互動的頁

Java實現讀寫分離

一前言                     在網際網路專案中,隨著業務的增加,訪問的增長,對系統性能,擴充套件性,伸縮性提出更高的同時,資料庫的壓力也陡然增加。越來越多的系統採用分散式系統架構,在資料方面,也採用資料庫叢集,與此同時,基於系統訪問,資料的查詢較多,增刪改

java實現PBOC的TL分V分彩網站開發格式解析,超簡單的解析

ica 取值 網站 pack 復合 tags default \n fault 簡介下TLV:分V分彩網站開發 haozbbs.com Q1446595067 PBOC基本信息數據采用TLV(tag-length-value)的表示方式,即每項由tag標簽(T),長度(L)

【 專欄 】- PHP基礎知識及網站開發

作者:楊秀璋 學歷:本科-北京理工大學            碩士-北京理工大學 現任教於貴財財經大學資訊學院 http://www.eastmountyxz.com 簡介:自幼受貴州大山的薰陶,養成了誠實質樸的性格。經過寒窗苦讀,考入BIT,為完成自己的教師夢,放棄IT、航天等工

[WAMP網站開發] PHP連線MySQL資料庫基礎知識

這篇文章主要是最近教學生使用WAMP(Windows+Apache+MySQL+PHP)開發網站,HTML佈局首頁,PHP連線資料庫以及XAMPP操作資料庫的基礎文章,更是一篇教學文章。文章比較基礎,希望對能給PHP網站開發的學生做個入門介紹。一. HTML簡單佈局首頁首先是

凱撒密碼加密解密--JAVA實現(基礎)

soft ring java實現 sta 想是 clas pub sof print 凱撒密碼一種代換密碼,據說凱撒是率先使用加密函的古代將領之一,因此這種加密方法被稱為愷撒密碼。凱撒密碼的基本思想是:通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向

PHP,JAVA,NET 開發比較

維護成本 生命力 html中 mys 實現 歸納 滿足 很多 web應用開發 裝載出處:http://www.cnblogs.com/sinlang5778/archive/2011/08/10/2133190.html 一、語言: PHP:PHP產生與1994年,其語法混

java實現微信公眾號房卡牛牛六人平臺開發搭建文章采集接口程序

package ecs util 系統 public address 用戶id 狀態 get 日誌實體類,用戶記錄用戶登錄登出 LogRec.javapackage q.dms.test; import java.util.Date; /** 實體類 包含用戶登錄的id,