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

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

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


多年以前,我剛從是開發這一行,就遭遇了尷尬的事情,當我將軟體
到時,發現使用者的資料服務主機和我中硬編碼的不一致,我
不得不重新修正我的程式碼。我的第一個就是因此而起的。


 .ini
 
 connectString=xxxxxxxxxxxxxxxxxxxxx
 userName=yyyyyyyyy
 pass=zzzzzzzzzzzzz
 
 想必讀者對早期的ini檔案還有記憶,幾年以後,流行起來了,我的配
 置檔案也大都為xml格式。(有關xml參考相關書籍)
 
 db.xml
 
 
  <>xxxxxxxxxxxxxxxxxxx
  yyyyyyyyyyyyyyyyyy
  zzzzzzzzzzzzz
  wwwwwwwww
 

 
 如果說這幾年的開發中對我影響深刻的之一是什麼,回答是:的動態可
 配置,一個動態可配置的系統 是優雅的,易維護,可擴充套件的。
 
 建造高樓大廈,總是先構建,然後再填充牆壁,窗戶等具體構件,用水
 泥將構件與架構結合。想象一下軟體開發,同樣是由許多的構件組成軟體的
 整體,我們往往是將他們堆砌在一起,而不是有序的組織,者往往造成一動
 而牽全身,擴充套件、修改模組都變得不易,也使得系統在需求頻繁變動的真實
 世界中經不起考驗。
 
 對於我而言,可配置檔案就如同建築中的水泥一樣,是構建系統的粘合劑,
 有效的整合大量無序的個體和相關聯絡。
 
 
 檔案還是?
 
 配置方式有兩種:資料庫、檔案。前者透過將資訊儲存到資料庫系統中,執行
 時讀取資訊,後者透過載入檔案方式來獲取資訊。
 
 說實話,是使用檔案還是使用資料庫系統還進行配置,這完全因人而定,不
 過就我個人來說,總是將他們結合使用,凡是涉及到控制相關的資訊,
 我都透過資料庫來配置,以便於整合,此外的資訊則是透過檔案來配置。
 
 無論你選擇那種方式,你因儘可能的權衡利弊,取最適合的方式來用。
 關於許可權相關的配置問題我將在以後的章節講解。
 
 
 檢視分發與器
 
 在企業級應用開發中分發與響應控制是重要的,而使用配置方式來實現他們是
 一種可取得有效方式,在模型--檢視--控制中,透過增加分發器改進為模
 型--檢視--控制--分發使得系統的實現更為合理,配置檔案將以上相關聯起來
 更進一步的松耦合整個系統。
 
 
 
 一個簡單的監聽器控制.
 
 
 A:
  commandClass="removeSaleListener" label="removeSale"/>



B:
 
 
 .........................................
 
  
  saleBrow.
   
 

 ..........................................
 
 
 



C:
 
String name = "xx";
Moduel  module = Module.getDefaultModule(name):
Listener listener = module.getListener();
String nextPage =  listener.getNextPage();



如上所示透過配置檔案很容易得將模型--檢視--控制--分發有效的整合到一起。


 


改進你的查詢檢視


作為一個開發人員,懂是最基本的,與熟練越好,但在開發一個系統的時候,
我常常希望減少程式中sql的出現,甚至開發中不出現sql更好。透過實體關係
對映我消除了curd相關的sql程式碼,可對於複雜的查詢和瀏覽,消除sql是一個不
可完成的任務,既然消除不可能,那是否有一種方法對大多數程式開發人員遮蔽
sql呢?



方法是有的。如下所示。
A:

  BROW_SALES
  * from a  inner join b on a.c=b.c where
  a.d=?1 and b.e=?2
 

  SaleV
 


B:
SqlExce exc = SqlExec.lookUp("BROW_SALES); 
exc.bind(1,"xx");
exc.bind(2,3454);


Collection sales = exc.getResult();


SaleV sale = sales.get(1);


如你所看到的那樣,透過動態配置,我們成功的消除了在程式碼中硬編碼sql,對
大多數開發人員遮蔽了sql,透過集中的管理sql,更容易提前進行測試以驗證sql
的有效性和減少各處編碼導致的出錯,以及方便的修正SQL.


 有關內部賦值的實現,我在以後將詳細講述。
 
 
集中控制你的訊息。


一個龐大的系統中,不可避免的會有許許多多的訊息,校驗訊息、驗證訊息、業
務流程訊息等等,而集中的控制他們,並已同一的方式出現是重要的,不然不同
的開發人員會寫出千奇百怪的訊息來。透過配置訊息使得集中控制成為可能。


a:

 
   你的輸入值大於{0}或小於{1}
 



B:


  MessageRes carResources = null;
  MessageResourceactory factory = (MessageResourcesFactory)
  FactoryFinder.getFactory(
 
  FactoryFinder.MESSAGE_RESOURCES_FACTORY);
  carResources = factory.getMessageResources("INPUT_G_OR_L");


  return (carResources);


 



國際化問題


讓你的軟體適應國際化的要求是好的,如果能夠很簡單的實現何樂而不為呢,透過配
置檔案讓應用支援多語言變得可能。


A:
a_en.properties
Title=bench
Desc=bench 600
BasePrice=150000$
CurrentPrice=150000$


a_cn.properties
Title=賓士
Desc=賓士 600
BasePrice=1500000Y
CurrentPrice=1500000Y


B: 
 
 
 
 
 


 
 
 關於資源的可配置 ,有許許多多的可應用之處,我只是簡單的介紹了幾個典型的應用,
 透過不斷的在開發中積累,相信你可以在適當的地方以適當的方式應用她。


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

相關文章