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

» JWorld@TW » Software Design  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded 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
作者 Re:設計的困惑 [Re:asdmonster]
jini

SoftLeader Taiwan

版主

發文: 1266
積分: 23
於 2005-04-08 21:28 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
先說抱歉.....
你的敘述讓我的感覺是你們對於 ww2, struts, spring, hibernate 都不太熟

可能是不知道你到底想敘述些什麼吧, 你既然要抽出一個 interface 做為所有的 Action 基礎, 視為所有程式的基礎環境, 那麼乾脆把 JDBC 可能會發生的 DB access 設計下去吧. 不要用任何 OR Mapping 封裝, 免得麻煩. 最後, 我還是覺得你們乾脆寫 Model I , pure jsp, 應該可以比較滿足你們的狀態.

如果你覺得你正在重新造輪, 那麼你們的行為真的是在重新造輪 !

最後, 我的忠告是, 好好地把 ww2, springframework 及 hibernate 唸過一次
市面上 spring in action & hibernate in action 都有了, 另外, 把 J2EE design Pattern + Blueprints 看過一遍, 再回頭想想你現在這篇問題, 可能就會了解你自己的盲點在哪裡了.


reply to postreply to post
作者 Re:設計的困惑 [Re:asdmonster]
asdmonster





發文: 20
積分: 0
於 2005-04-08 21:56 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
谢谢jini的回复。

应该说这个team开发web,无论是利用现有的web框架,还是自己写框架,都有过一定的经验,也不是完全一无所知。

其实如果照着Model I也没有什么不可以。甚而至于我个人更倾向于一个新的team利用最简洁的技术最开的开发出一个产品,这样更利于团队的融合。

但是毕竟现在面对的是一个产品,更准确地说是一系列产品。每个系列的产品在大平台的环境下怎么样整合,怎么样拥有一个一致外观是一个不能不考虑的问题--无论这个外观对于开发人员还是最终的用户。
举个类似,但是也许不很恰当的例子:
现在,我们先着手开发出一套面向财务的软件,从持久层,业务层到表现层。用Model1也好,用ww2,struts也好。这个软件pass了。
等到下一个阶段,要开发一套面向物流行业的软件,那么这个时候,我们该怎么开发,现有的框架,在财务中成型成功的框架,对我们的物流软件有没有什么帮助?跟进一步,如果某个用户需要这两块的内容,那么我们的财务和物流,一前一后开发的两块,有什么样的关联点?

我曾经在一家公司工作的时候,公司曾经有一个框架,和一堆Velocity的模版,新的产品线其实就是一个ant的代码生成。然后少量的定制化。这样开发效率真的很高。
我的期望,我现在面对的这个平台最好能成为这个样子。但是由于二者的差别很大,对我现在的设计借鉴意义倒不是特别大。

说到这里,我也晕了。


reply to postreply to post
作者 Re:設計的困惑 [Re:asdmonster]
jini

SoftLeader Taiwan

版主

發文: 1266
積分: 23
於 2005-04-08 22:06 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
我知道你想設計一個通用性的系統, 簡單來說就是減少耦合性, 換句話說就是很容易和其他系統整合.. 但是我嘗試理解你的文句, 是想要設計統一的框架, 未來在其他系統集成的時候, 可以簡單又方便 ? <-- 這是我能想到的

首先, 我建議你根本就把 Business Layer 封裝成為 WebSerive, 這樣應該比較方便未來的整合.. 無論是 XSLT 轉換成為 HTML. 或是其他 ABCxxxML都可以.
另外, Business 與 Business 也可以透過 SOA 的架構加入 Business Process Management 來管理..

或許, 我該建議你, 你想做財務, 做物流, 做其他等等
先了解 Domain know-how 去設計, 不用花太多時間研究 Framework.
因為你鑽研技術只是會讓自己停在原點...
就我所知, 沒有通用性的 framework, 各種情況, 可以利用不同的 framework 來做為你的 solution.

總之, best regards.


reply to postreply to post
» JWorld@TW »  Software Design

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

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8