我們經常談到復用,在一個企業中,根據不同的場景,復用的形態和方式是不同的,大體可以分為組件復用和服務復用兩種方式。組件是按照一定的標準封裝的軟件實體,可以是為完成某種功能提供的API的集合,也可以是完成某一個技術和業務功能的實體;服務是通過組件暴露出來的供外部調用的接口和協議信息。服務不包括具體功能邏輯實體,靠組件來實現。
企業架構中通常提到的技術復用和業務復用,可以簡單地映射到組件和服務上。技術層面的復用一般是一些API、或者抽象出的框架,比如日志,它可以稱之為組件,但是日志組件提供了記錄日志的API,并沒有包括具體的日志內容,我們在使用的時候是通過日志組件提供的API來記錄相應的日志內容;再比如業界提供的一些框架,它是對應用的高度抽象,自身也不包括具體的應用或業務邏輯,這些需要我們在軟件實施過程中自己灌輸進去。并且技術層面的復用往往是每個系統中都有該組件的相應實體,比如A系統中會有日志組件、B系統中也會有日志組件。業務層面的復用通常采用調用服務的方式,是一種遠程訪問,業務服務通常在一個企業中物理上只有一個實體,其他的系統通過服務來調用,比如銀行目前的渠道有網上銀行、ATM、手機銀行、電話銀行、柜臺等,這些系統中是沒有存取款業務邏輯實體的,存取款的交易都是通過調用主機相應的服務來實現的。
所以 對于組件和服務的管理其實也有不同那個的策略,組件要管理的是軟件實體,服務管理的是服務的接口和協議信息,并且服務有一系列的特征,這個網上也有很多描述,可以根據不同需求調整服務的實現。當前服務的協議通常有WebService、HTTP、EJB等,對應其組件的實現可以采用不同的技術,比如Java、C/C++等等。