2009年11月18日 星期三

使用DirectJNigne時遇到的問題

然知道Java Open Source有DWR可以使用, 但是Ext.Direct發佈的消息還是讓我相當興奮.
竟DWR只是讓Browser端JS透過RPC的方式與Server端的Java物件互動, 並沒有與ExtJS做到完整的整合.
於當時我時間都花在寫直接整合Hibernate的應用元件池框架(aop, ioc 容器)的Framework, 就只好到官網論壇看看有沒有閒人寫了Java based的Ext.Direct實作, 正好看到這篇文章.
用了上面所列的Java based implementation 後, 選了DirectJNigne1.0(DJN)作為首次使用Ext.Direct正式開發的框架.
經過完整的開發Cycle後, 我覺得DJN有很多問題
  1. 設定過於繁複 : 這點其實還好, 雖然設定不算簡明, 但是文件上的描述至少夠完整.
  2. Batch Request的多執行緒處理有很大的瑕疵 : 這點就很讓人不爽, 用多執行緒來執行Batch Request可能會造成程式執行的順序性錯亂問題, 原本在Ext.Direct的Batch Request可以解決remote function呼叫因為網路關係可能造成的順序性錯亂在這裡就被破壞(雖然常規作法應該是callback後才執行下個指令). 除了順序性外, 也無法利用ThreadLocal方式取得目前的Request, Session, Application等物件內的資訊, 所以每次都不得不把多執行緒的功能都關閉.
  3. 與其他Framework間整合問題 : 由於只支援Non-managed POJO, 所以要整合別的Framework的code變成要寫在Action類別裡面, 而不能直接將其他Framework內的managed component視為Action. (至少我在使用者指引裡面沒看到解決方式)
  4. 性能問題? : 我在開發實蠻常看到OutOfMemory的問題似乎跟YUICompressor有關?關於DJN使用的gson.jar在我看了這篇文章後, 覺得有點失望.
  5. Generic Type使用的問題 : 這點跟gson脫不了關係, 由於gson在處理 Generic Type需要額外的動作, 導致DJN無法支援Generic Type的Json傳遞. (至少1.0版是如此, 之後就不知道了)

沒有留言:

張貼留言