資源管理設計——資源查找

軟件系統中常見的資源有內存、文件句柄、數據庫會話、線程、服務等,資源管理是資源使用者對資源進行有效控制的過程。資源管理的設計每每影響軟件的非功能性需求:html

性能:軟件系統中操做每每涉及不少資源,如何保證資源可用、避免浪費、高效獲取。算法

可擴展:如何設計資源管理架構保證向上、向下兼容。數據庫

可預測:如何保證資源操做的時間是能夠預期的。數據結構

靈活性:如何設計保證系統易於定製和配置。架構

穩定性:如何設計保證資源的頻繁操做不會致使系統的不穩定。數據結構和算法

一致性:如何設計保證系統處於一致的狀態。性能

軟件系統的設計每每須要考慮以上多個方面,而某些方面自己是互相矛盾的,好比靈活性和性能自己可能衝突(分層架構設計),針對實際的問題在不一樣的影響之間找到一個合適的平衡是設計的目標。線程

資源查找:

要使用資源可能首先要找到資源,如何查找到資源而且系統靈活、高效是設計的主要目標。架構設計

http://www.cnblogs.com/chencheng/p/3290370.html所示的一個組件系統。平臺爲上層應用提供組件服務,組件自己可能增長、刪除,上層應用須要高效的查找到組件資源而且使用。咱們可能有下面幾種設計方式:設計

1:由組件提供者自身通知上層應用其相關信息,以下圖所示:

  • 每一個組件資源的改變都須要通知全部上層應用,效率低下。
  • 每一個上層應用都須要存儲全部組件信息而且本身管理,增長應用層的負擔。
  • 相對穩定的底層平臺依賴相對變化的上層應用,致使上層難以擴展。

2:平臺提供應用管理模塊供上層應用註冊,以下圖所示:

  • 應用管理模塊提供註冊接口供上層應用註冊,將相關的上層應用信息註冊到平臺中做爲組件資源的觀察者。
  • 組件資源做爲通知者,組件的任何修改經過應用管理模塊通知已經註冊的應用。
  • 每一個上層應用仍是須要存儲了全部組件信息而且本身管理。
  • 組件資源的改變都須要通知全部應用,效率低下。
  • 相對變化的上層應用依賴相對穩定的底層平臺,上層應用能夠自由擴展。

3:平臺提供組件資源管理模塊,以下圖所示:

  • 組件資源管理模塊向組件提供註冊、去註冊服務。
  • 組件資源管理模塊向上層應用提供資源查找、查看資源信息、獲取資源服務等相關服務。
  • 組件資源管理模塊管理資源信息,再也不須要應用層管理。
  • 組件資源管理模塊能夠經過適當的數據結構和算法提供高效的組件訪問服務。
  • 組件資源的任何變化只和組件資源管理模塊交互,上層應用在須要使用組件的時候才向組件資源管理模塊查詢,提高效率。
  • 組件資源管理模塊相對穩定,組件和上層應用均可以自由擴展。

  咱們能夠看到設計三相似一箇中介者模式,在現實生活中就類型一個房屋中介結構,房主在中介登記,有人須要租房直接到中介那裏去查詢房屋信息。若是沒有中介機構挨家挨戶的去詢問將是多麼痛苦的事情。

轉載請註明原始出處:http://www.cnblogs.com/chencheng/p/3502785.html

相關文章
相關標籤/搜索