企業應用開發架構談(一) (轉)

amyz發表於2007-08-14
企業應用開發架構談(一) (轉)[@more@]

  企業應用開發架構談(一)


即便是在有了企業級平臺的今天,我也常常發覺開發企業級應
用是個難題。無論是還是僅僅使用他們所提供的高階
抽象來開發企業級應用是遠遠不夠的。在我看來一個構建在這些
高階API上的良好的體系結構是開發成功的企業級應用所不可或缺的。
本文要談論的就是如何構建一個良好的、可維護的、可擴充套件、高穩
定性的且能夠開發應用的開發架構。



在我接觸.NET 或J2EE 開發過程中,走了大量的彎路,使得開發的程
序不是不好,就是無法滿足目標和要求,相信同樣的錯誤今天仍
然在不斷的重複出現,這就要求我們吸取教訓,減少創造無用的程式。


儘管有了高階的抽象API,但構架不光是使用API那麼簡單,從更高層
的抽象來說,透過使用構件策略和來建立構架體系,是解決開發中遇
到的一系列問題的關鍵。


如:
會話如何跟蹤?
誰來負責資料檢驗?
層鍵的資料如何傳送?
檢視、模型、控制?
如何分發檢視?
等等。。。。。。。。。。。。



在這篇文章中我不採用例項的方式來講解。因為我發現,儘管透過實
例有很多的優點,但往往讀者無法堅持完成整個例子,同時限於本文
的篇幅,採用例項法也是不可取得。



我將在文章中討論在開發企業架構中我所遇到的一系列問題:


  檢視--模型--實體
  資源定位
  資源的可
  持久化
  出版---訂閱
  資料校驗
  主鍵生成
  資料
  資料傳送
  動態賦值
  控制-分發
  介面
 
 
 
  在談到我將要討論的問題前,我希望你先要了解什麼是模式,我不打算在
  有限的篇幅中討論模式,這是一個很廣的問題。但必須首先宣告的得是,
  你閱讀本文對模式的瞭解是基本要求,企業開發中模式將被大量使用,我
  相信一個優雅,成功的系統模式的使用是不可少的。
 
  關於模式的更多資訊你可以參考 GOF 96 、SUN J2EE DESIGN PATTERNS
  CORE、J2EE DESIGN PATTERNS  等文章。
 
 
  第一部分  資源定位
 
 
  一個有序的世界總是好的。
 
  小時候玩玻璃球和三角,開始的時候總是將嬴來玻璃球放到一個盒子中,漸漸
  的越來越多,於是我將他們分類,有瑕疵的放到一起,普通的放到一起,高階
  的(可以一個換兩到三個)放到一起,同樣的三角也是如此存放,這樣一來我
  能夠很容易的決定每次帶什麼樣的出去玩。
 
  開發架構的時候我碰到同樣的問題,譬如大量的值物件、命令bean、檢視helper
  散落在各處,有序的管理他們勢必成為優先要解決的問題。試想如果有一種目錄
  結構來管理這些類該有多好。
 
  我是一個工廠的狂熱愛好者,我總是透過工廠來管理這些無序的資源,以便於通
  過目錄的方式定位資源,不可避免的造成了系統中出現越來越多的工廠,我把管
  理這些工廠稱為工廠定位器模式。
 
  為了清晰的描述我的想法,我喜歡透過程式碼來說明,這用的問題簡單明瞭。
 
  程式碼如下:
 
 
  /*工廠定位器*/
public interface FactoryFinder{
 
  public final static int ACTION_MAP_FACTORY=1;
 
  public final static int MESSAGE_RES_FACTORY=2;
 
  public final static int VALUE__FACTORY=3;
 
  public final static int FORWARD_MAPPING_FACTORY=4;
 
  public final static int LIFE_CYCLE_FACTORY=5;
 
  public static Factory getFactory(int finderName);
}


 



/*工廠標誌介面*/
public interface Factory { 
}


/*生命週期管理器*/
public interface LifecycleFactory{
 
  public final static int DEFAULT_LIFE_CYCLE=1;
  public Lifecycle getLifecycle(String Key);
}



/*訊息註冊工廠*/
public interface MessageResourceactory extends Factory{ 
 public addMsgResource(String Key ,String resourceName);
}


/*
/*器註冊工廠*/
public interface ActionMappingFactory extends Factory{ 
 public  addActionMapping(String Key,String resourceName);
}


/*值物件註冊工廠*/
public interface BeanMappingFactory extends Factory{ 
 public  adeanMapping(String Key,String resourceName);
}


/*分發檢視註冊工廠*/
public interface FowardMappingFactory extends Factory{ 
 public  addForwardMapping(String Key,String resourceName);
}


/*監聽器工廠*/
public interface ListenerFactory extends Factory{ 
  public final static int ACTION_LISTENER=1;
  public final static int VALUE_CHANGED_LISTENER=2;
  public final static int HERPLINK_LISTENER=3;
 
 public Listener  createListener(String listenerName,int type);
}



/*bean 工廠*/
public interface BeanFactory extends Factory{ 
  public Object  createBean(String beanName);
}


/*Lifecycle  工廠*/
public interface Lifecycle extends Factory{ 
  public void  register();

 
 
 
如你所看到那樣工廠定位器模式其實就是一個工廠模式,但我重新將它命名
為工廠定位器模式,這是因為,它不簡簡單單作為一個設計模式而存在,在
這裡它被賦予新的含義“有效管理架構中資源的一種策略“。透過它的有效組
織資源,你可以方便的定位架構中任何可用資源。



同樣的定位方式,我們可以用來組織服務定位,譬如:查詢,資料連線等。
服務定位器模式就是定位的另一個應用:


程式碼如下:


/*
 實現主鍵獲取、資料連線獲取、home介面獲取
*/
public interface ServiceLocator{ 
  public static ServiceLocator  getInstance();
  public EJBHome getEJBHome(String serverID,String homeName);
  public Connection getConnection();
  public BigDecimal getNextID(String systemCode); 
}



 
 透過服務定位 ,可以有效的減少服務成本,提高系統的效能。
 
 
 正如上面所說的,在一個體系中定位資源是重要,這是組織整個架構的基礎,
 無論什麼樣的事件都是由個體組成,而有序的安排個體總是有序世界的第一
 步。
 


在這一部分裡,簡要的談了資源定位問題,下一部分將討論資源的可配置問題。



 


 
 
 


 



 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956298/,如需轉載,請註明出處,否則將追究法律責任。

相關文章