多層結構的業務實體在層間傳遞時常常需要根據層次裁減,或者根據功能選擇某些資訊,特別時在分布式層部署環境中,如果實體包含的資訊太多,勢必增加序列化與傳遞的開銷,然後,如果把實體拆開,傳遞時使用簡單變數,又有可能造成變數過多,或者對需求變化不靈活的麻煩
在這種情況下,使用實體控制層能夠解決這個問題
你可以把實體控制層設想為乙個銜接外部介面和內部功能的橋梁
實體控制層根據具體功能和層次,從傳入的實體中,選擇必要的資訊,以新實體,或者簡單變數,或者直接使用清理過的原實體這集中方式傳遞到具體的內部功能
舉個例子topicdatacenterentry有這樣乙個方法,post(topicinfo,configinfo)傳入乙個帖子和該論壇的配置,而topicdatacenter需要根據配置中的資訊,選取合適的快取策略,比如記憶體快取memcache.post,靜態檔案機制staticfile.post,這些都是分布式的實現,所以傳入的實體必然需要盡量精簡,而configinfo包含了乙個論壇所有的配置資訊,所以傳入的資訊量很大,而使用的只是很少一部分.
看到這裡,有的看官可能會想,那麼topicdatacenterentry的post方法裡面不要傳入configinfo,直接傳入需要使用的資訊不就可以了嗎?
假如所需要的資訊是很確定的,那麼卻是應該這樣做,然而,由於內部需要實現切換機制,不同的機制需要配置檔案的不同資訊,而且一旦修改為簡單變數的傳遞,以後凡是發現某些內容需要配置在配置檔案裡,而不寫死,就必須修改函式簽名,導致上層結構的變化
這個時候實體控制層就派上用場了,topicdatacenterentry裡面加上對應的邏輯,對於記憶體快取,呼叫post(topicinfo,configinfo.lifetime)傳入該帖子的存活時間,而對應靜態帖子,傳入configinfo.templatefilename模版檔名,encoding等等不同的資訊,這樣topicdatacenterentry就成為了實體控制層,保證了對上層的不變與靈活性,而又保證了在分布式結構中的效能
分布式版本控制
git基本概念 git倉庫 儲存所有資料的地方 工作區 從倉庫中提取出來的檔案,放在磁碟上供你使用或修改 暫存區 就是乙個檔案,索引檔案,儲存了下次將提交的檔案列表資訊 版本控制軟體 1 集中式版本控制軟體 cvs svn subversion 2 分布式版本控制軟體 git bitkeeper 收...
分布式 資料訪問層
所有的業務資料都放在乙個資料庫中來管理 資料庫減壓是思路有三個 資料庫拆分可以水平拆分或者垂直拆分 垂直拆分是把乙個資料庫中不同業務單元的資料分到不同的資料庫裡 帶來的影響 水平拆分是根據一定的規則把同一業務單元的資料拆分到多個資料庫中 帶來的影響 1.了解分布式事務 分布式事務是指事務的參與者,支...
分布式智慧型控制 命名
由於參與裝置多 種類也多,所以埠命名也需要乙個整體的規範。由於裝置數量多,所以層次性命名方案是顯然的,乙個控制點的名字應該是如下格式的 網域名稱 智慧型體名 下聯裝置名 埠名 乙個智慧型控制網路中的名字是以 開頭的,也就是說如果乙個名字是以 開頭,則其一定是和自己屬於同乙個控制系統,不是以 開頭,則...