我有一個Web應用程序數據庫3層服務器設置。 Web從應用程序請求數據,應用程序從數據庫獲取數據,然後處理並將其返回到Web以供顯示。標準。將對象從應用服務器序列化到網絡服務器的方法沒有代碼複製
當前,我從應用程序到網站序列化的所有數據都被放入自定義數據結構中,然後網絡端解析顯示數據結構。換句話說,假設我有一個要檢索併發送到Web的訂單。我不會序列化整個對象,而是在應用程序服務器上使用適當的數據元素構建數組,然後將該數組序列化到Web服務器。
現在,我正在考慮將整個訂單對象序列化到Web服務器。
什麼是你們發現的序列化對象的最佳方法,同時保持appserver和web服務器代碼的分離?我不希望我的web服務器有任何訪問數據庫的代碼,但我希望他們儘可能重用封裝我的訂單和其他數據的類。
爲了進一步優化我的問題(感謝Glenn的回覆),我不希望我的web服務器有任何周圍的業務邏輯說訂單類,只有應用服務器需要知道。這些對象已經在數據庫和/從Web服務器中使用單獨的序列化。
使用順序例如,在應用程序服務器中,順序應該是能夠取消:即
$命令 - >取消();
但在網絡服務器上甚至找不到該方法。它不應該直接代理回(直接)到appserver命令的cancel方法,因爲用戶操作請求應該流經應用程序的授權和權限檢查層。
那麼如何在我的web服務器上獲得一個訂單對象,該對象有一些(但不是全部)我的應用程序服務器上的對象的方法和屬性,幾乎沒有代碼重複。我一直在想的一件事是創建一個有限的屬性和方法的基類。它會使用一個內部類來保存它的屬性,並且我會要求所有數據訪問傳入和傳出getter和setter。這些反過來會在內部類中調用getter和setter。
然後,Web和應用程序服務器可以獨立擴展基類,並使用自定義內部類來保存屬性。然後在應用程序方面,內部類可以是一個ORM類擴展,可以將數據保存到數據庫中,而在Web端,內部類可以是一個簡單的屬性持有者類。
但是,整個內部類的東西似乎有點笨重,所以我仍然在尋找更好的解決方案。
yes,例如,將appserver命令對象強制轉換爲其父類(稱爲Order_Base),然後在Web服務器端重新水化爲Order_Base,然後將其傳遞給Webserver端的子類構造函數以構造子類。儘管這有點笨拙.. – Zak 2008-11-03 21:15:57