2012-08-24 69 views
8

在SO討論中已經有幾篇文章討論這個架構是一個好主意還是壞主意。由於我們公司內部的許多原因,包括現有的編程人才,我們決定將Java用於後端,PHP用於前端。我們的目標是一樣的東西......使用Java作爲後端,PHP作爲前端

爪哇 - 型號/控制器

PHP - 查看

我們正在努力建立一個原型的Glassfish和Apache之間的相互作用。我們仍在努力的一件事是當用戶訪問http://domain.com/login.html並且他們登錄時,登錄將被髮送到存在某個地方的Glassfish控制器,如/login.java。我們可以做到這一點沒有問題,但麻煩在於讓該視圖在該URL上呈現。

有沒有人用PHP或任何其他技術做到這一點?

+0

就像那個古老的[Lovin'Spoonful](http://www.metrolyrics.com/did-you-ever-have-to-make-up-your-mind-lyrics-lovin-spoonful.html) :「你(應該)拿起一個,把另一個留下!」 ;) – paulsm4

回答

2

我很抱歉地提出這個問題,但它似乎會讓事情變得簡單得多,只要使用其中一種語言即可。如果您正在使用PHP爲您的視圖添加更多邏輯,則可能需要查看Velocity。它允許您訪問和創建變量,遍歷列表,使用條件,定義宏,進行方法調用等。這看起來好像可能使事情變得更加簡潔。但是,儘量保持模板儘可能多的邏輯通常是一個好主意。

如果你想使用PHP,因爲這是必需的我會建議看看使用Web服務進行通信。看看Google Googles GSON庫。將JSON對象映射到模型(反之亦然)是非常好的工具(在Java方面)。

在您的前端,也可能值得看看Backbone。這是一個工具,它可以很容易地模擬你的模型對象並將事件綁定到它們,或者將它們直接綁定到字段等。

+0

請勿使用Velocity。使用類似JSF的東西,甚至是JSP。速度是一種非常古老的模板語言,它也有許多缺點。 JSF在它背後有很好的支持,可以爲你做很多事情。 – seangates

+0

真的嗎?速度與直線JSTL相比有什麼缺點? Velocity並不需要你以任何特定的方式修改/編寫你的代碼。你只要通過它,無論你想要什麼對象,多數民衆贊成它。您可以調用方法,設置變量,從模板中聲明新的等等。並不是說你應該將所有這些邏輯放在模板中。但是Velocity允許你。 –

+0

從大多數情況來看,缺乏開發者支持。我問過許多Java開發者,他們使用了哪些模板,只有一個(過去3年)聽說過。 – seangates

4

你有沒有考慮在java中設置一個soap/rest服務器並讓PHP與之交談?我想這會比你想要達到的要簡單得多。

+0

我在之前的工作中做過這樣的工作,工作得很好。肥皂是一種痛苦,但很好的支持。如果你想冒險,你可以嘗試一下jsonrpc實現。 – Jody

+0

- 這將是IPC或套接字通信實現之一。 – 2012-08-24 19:53:25

+2

我們確實使用Java Rest API(JSON)作爲後端,PHP使用前端。這是一個很棒的體驗,我們也可以爲移動平臺使用相同的後端。 – Gonzalo

1

我已經有兩家公司使用Java的第一手經驗服務層和PHP 客戶端層技術堆棧,雖然它沒有專門使用。爲了清楚地分離這些圖層,建立了一個定義良好的JSON REST API,以便每個圖層都有一個它可以編碼的合同。

Java的層中使用SpringMVC持久層在其之間,以產生具有良好定義的路由(即URL結構)爲了使PHP層GET/PUT/POST/DELETE資源JSON視圖。

關於登錄問題,實際上有兩個Java服務,一個專門用於登錄/註銷,另一個用於常規後端。

當訪問/login,我認爲這將是一個.php文件。將登錄<form>提交給「登錄」服務會導致添加會話Cookie,但也會生成加密的「用戶ID」Cookie。然後可以使用加密的cookie來保護對產品的Java服務層的訪問。從PHP到Java的每個REST請求都可以訪問cookie,然後Java層可以解密「用戶ID」,並在PHP REST調用有效時響應。Java層然後可以訪問真實的用戶ID,以便從持久性存儲返回用戶特定的數據。

+0

雖然大部分服務都很安靜,但似乎登錄不是,另外,登錄依賴於PHP前端,所以我認爲您在某種程度上失去了一些問題*。 – WhyNotHugo

+0

如果您有兩個異構層,則使用Web服務很有意義。如果您使用的是Web服務,那麼使用REST/JSON(而不是WS/SOAP)是有意義的。 ......但是......如果你沒有不必要地在* FIRST *地方堆疊多個不同的層,它將會是* BEST *!恕我直言... – paulsm4

+0

登錄不依賴於PHP。它只是一個涉及登錄的外部Java服務。如何稱之爲產品的產品取決於他們,無論是來自PHP還是Java。一旦成功登錄,就可以通過使用cookie來保護每個_product_資源。請注意,這不是** my **體系結構,我只是詳細介紹了與我合作的技術堆棧的一些信息! – andyb

相關問題