天天看點

SAP Commerce Accelerator和SAP Spartacus的技術對比

Accelerator是Spartacus釋出之前,SAP Commerce Cloud使用的Storefront實作。Accelerator是一個開箱即用的web實作模闆,是Commerce平台的一部分,以源代碼的方式傳遞給客戶。客戶通過一個叫做module generator的工具,基于Accelerator 模闆代碼生成自己的Storefront實作。Accelerator這種同Commerce平台的緊耦合關系,以及基于源代碼級别的二次開發方式,給Commerce項目實施的可更新性帶來很大的挑戰。例如,當客戶發現新版本的Accelerator能滿足自己新的業務需求時,希望更新Accelerator. 然而由于Accelerator是Commerce平台的一部分,是以必須先更新整個Commerce,再使用module generator基于高版本的Accelerator代碼生成自定義實作,再把基于低版本Accelerator模闆而進行的二次開發,逐一手動遷移到高版本Accelerator生成的自定義實作中去。當Commerce的二次開發達到一定規模量時,這種手動更新的方式很挑戰。

SAP Commerce Accelerator和SAP Spartacus的技術對比

Accelerator具有的這些缺陷,在Spartacus問世之後都迎刃而解。

Accelerator通過源代碼的方式提供了一個Storefront的開發模闆,而Spartacus則以庫的方式,提供了一個輕型的Storefront開發架構。我們建立一個Angular應用,導入對Spartacus庫的依賴,當我們需要更新Spartacus時,隻需要更新Angular應用的package.json裡Spartacus庫檔案的版本号即可,是以從Spartacus從可更新性上來說是一個巨大的飛躍。

Spartacus采用API的方式同Commerce互動,這使得Spartacus可以同Commerce分開部署,分别進行更新,比如目前已經釋出的Spartacus 3.0,支援從Commerce 1808開始及其之後的所有版本。

Spartacus采用Angular開發,編譯之後生成JavaScript作為其運作時語言,這樣一來,使用Spartacus的二次開發人員,不再需要過去開發Accelerator那樣具備前端JSP和後端Java的全棧開發技術棧。

Accelerator的可擴充性,是通過犧牲可更新性為代價換來的。同Accelerator隻有源代碼級别的修改這一單一的擴充方式相比,Spartacus實作擴充性的手段更加多元化

(1) Spartacus的子產品之一,ConfigModule,将業務邏輯和頁面布局以及樣式,通過配置的方式暴露出來,二次開發人員通過調整配置,可以更改Spartacus預設的行為和頁面布局以及樣式。

(2) Spartacus的頁面布局由不同的Angular Component組成,這些Angular Component同Commerce的CMS Component具有一一對應關系。Spartacus允許二次開發人員增強甚至開發新的Angular Component,去替換Spartacus釋出時使用的預設Component,以次來實作客戶的頁面定制化需求。

(3) 借助Angular強大的依賴注入機制,Spartacus允許開發人員像Commerce背景開發人員使用Java Spring架構那樣,開發自己的service實作,通過Angular的Dependency Injection機制,注入自開發的service,進而達到定制化Spartacus的運作流程和邏輯的需求。

SAP Commerce Accelerator和SAP Spartacus的技術對比