JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Design  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 設計的困惑
asdmonster





發文: 20
積分: 0
於 2005-04-08 17:25 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟工作中遇到了些許麻煩,還請大家不吝解惑。Blush

小弟剛到了一家小公司,頭一次走上一個主導設計的崗位。
現在公司要開始一個項目,項目的規劃是這樣的:先做一個小模塊,提供某個行業的功能,後續的開發計劃是將齊擴展為一個大平臺,以多個模塊的形式為多個行業提供軟件支持。基本路綫圖就是這樣。

剛開始我的想法是整個框架自己來搭建,只是採用一些OpenSource來輔助,比如我計劃web層使用webwork2的標簽庫,但是不想照搬它的web dispatcher機制,完全自己寫,包括提供的各種方便的攔截器也自己寫。想想這麽做i自己的工作量的確很大,也很傻,但是想想各種OpenSource的升級變遷速度,確實心里害怕,不敢把web框架完全照搬某种實現。
同樣的問題也出現在了業務層和持久層那邊。在業務層,我應用了spring,主要是看重了它的ioc容器的功能和輕量級的事務提供的功能。自己辛苦封裝了一個抽象的業務層引擎。(總是感覺自己是費力不討好。)
持久層使用的是hibernate,看中的是它的o/rm能力。

現在問題出來了,這個設計儸嗦不囉嗦不知道,但是一個現實的問題是:
在業務層沒有足夠的能力抽象客戶的請求和持久層的響應,打個比方説,我現在的做法是抽象出一個Action,
1
2
3
4
5
public interface Action{
   public void push(Object param); //將調用參數壓入棧
   public Object pop(); //從棧中彈出操作結果
   public boolean operate();
}

在處理實體的add,remove,update的時候運行良好,因爲他們幾乎沒有返回值。
在某些特色查詢中,系統中面對的每個實體幾乎都有好幾种查詢方式和返回結果,牽涉到技術細節,我不能用lazy的方式,因爲我不能在view或者controller那邊去關閉hibernate的 session.我也不能再簡單的返回整個Object(或者Object的list),因爲這樣系統消耗的代價太大。
特別是那個hibernate,封裝是件好事,也許是壞事。它的cache,對po的管理也許很好,但是給我的抽象帶來了太多了的不方便。

我現在不知道該怎麽辦了,如果一些自己來做,dispatcher,o/rm的工具都自己寫,好像有點自己造輪子的味道,好不好不說,以我現在的這個team的能力估計夠嗆。
也有一種方案:全盤照抄個framework,也就是沒有任何自己的框架,好處是目前的幾個人的對struts,spring,hibernate都還熟。缺點是好像為以後的開發計劃沒有任何的好處--下一個行業模塊還是從頭開始。也就是沒有設計。

該怎麽辦呀?懇請各位大大執教。


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
2754 設計的困惑 asdmonster 1254 2005-04-08 17:25
2215 Re:設計的困惑 jini 461 2005-04-08 21:28
2296 Re:設計的困惑 asdmonster 1728 2005-04-08 21:56
2443 Re:設計的困惑 jini 472 2005-04-08 22:06
» JWorld@TW »  Software Design

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8