2010-04-30 52 views
3

我已經在這裏問過關於這方面的各種事情的幾個問題,但這更多的是一個整合問題,因爲我想檢查我已經得到了一切的要點。實施一個可擴展的和高性能的網絡應用程序

我正在開發一個社交媒體網絡應用程序,雖然我有很多使用Java和PHP進行編碼的經驗,但我現在嘗試的東西有點不同。我已經模塊化了應用程序的每個組件。因此,例如,應用程序的一個組件允許用戶互相私人消息,並將其拆分爲它自己的私人消息服務。我還創建了一個用戶數據服務,其目的是從數據庫中返回關於用戶的數據,例如他們的姓名,地址,年齡等。他們也是另一項服務,即朋友​​服務,它將使用neo4j數據庫創建社交圖。我之所以這樣做,是爲了讓我在需要時更新獨立模塊 - 所以雖然他們大多數都跑掉了MySQL,但現在我可以稍後將其中一個遷移到Cassandra,如果我認爲它適用的話。

網頁應用程序的實際代碼實際上僅用於最終構建。它背後的模塊並不真正遵循任何嚴格的REST或SOAP協議。基本上我們的API上的每個方法都變成了PHP程序腳本。然後這可能會調用其他往往是OO的後端代碼。 Web應用程序向這些頁面發出CURL請求,並向它們發送POST數據或從它們獲取數據。然後這些頁面返回需要數據的JSON。

我還是有點混淆了我當時如何確定哪個用戶登錄。我只是使用會話嗎?就像我們調用了get-messages.php腳本,該腳本相當於該用戶的getMessages()方法 - 返回該用戶的所有私人消息 - 後端代碼如何知道將哪個用戶發送到用戶ID該腳本將不安全。任何人都可以做到這一點,並獲得所有信息。所以我想我會使用它的會話。我對此是否正確?

任何人都可以發現任何其他問題,我在這裏做什麼?

感謝

回答

0

你正在創建的東西聽起來很像其他REST接口,比如Twitter API。在這種情況下,您可以考慮查看這些API如何處理用戶會話。

通常有一些握手過程爲客戶端提供了一個用戶令牌,並且只要該會話處於活動狀態,客戶端就使用該令牌從API獲取數據。

因此,在這種情況下,您必須開發用於生成用戶令牌的界面,然後讓後端管理這些會話。對於像get-messages.php這樣的各種接口,你可能會把$ userToken當作$ _GET或$ _POST變量,並根據你的活動用戶會話數據庫進行驗證。

0

對於我來說,它看起來像會有很大的開銷在各個部件之間的通信。

製作POST/GET請求,編碼和解碼JSON幾次每頁視圖將是相當昂貴

0

難道我只是使用會話[將在用戶登錄標識]?

是的,通常會將當前用戶ID放入會話中。但是,爲了獲得已登錄用戶的列表,您還需要將當前登錄的用戶存儲在數據庫中,並在人員登錄/退出以及會話銷燬時更新。

任何人都可以發現任何其他問題 與我在這裏做什麼?

只有質疑你爲什麼使用PHP作爲Java後端的包裝?爲什麼不使用Java堆棧的面向Web的位以及JSF?