前提
現(xiàn)有商城開發(fā)重構
框架選擇范圍
1. 使用開源框架自定義開發(fā)
- PYTHON 語言的OSCAR商城框架
- GO語言的QOR商城框架
- JAVA語言的OFBIZ商城框架
2. 微服務框架重構現(xiàn)有商城
- playframework
- spring cloud
-
Apache ofbiz
框架簡介
優(yōu)勢
從架構圖中可以看到ofbiz的所有app都構建在framework之上抚垄。framework的核心就是ServiceEngine(服務引擎)柴梆、EntityEngine(實體引擎)毙玻。實體引擎對于數(shù)據(jù)庫的種類支持都非常健全速和。
權限方面,ofbiz采用的是角色+安全組的授權模型颠放。
OFBiz幾乎實現(xiàn)了所有的J2EE核心設計模式,各個模塊之間的耦合比較松散吭敢,用戶能夠比較容易的根據(jù)自己的需要進行拆卸碰凶,非常靈活。
劣勢
根據(jù)官方文檔指導痒留,在本地部署運行了ofbiz蠢沿。
查閱了相關文檔伸头,默認支持soap的webservice服務,沒有開放的restful api文檔舷蟀。
-
QOR - Golang
優(yōu)勢
QOR是首個使用Go語言開發(fā)的電商系統(tǒng)恤磷、CMS的SDK。它是一組用Go編寫的庫扫步,用于抽象業(yè)務應用程序匈子,內容管理系統(tǒng)(CMS)和電子商務系統(tǒng)(EC)所需的通用功能河胎。
Go語言本身具有的特點是:速度快虎敦、高性能、靈活胚迫、開發(fā)快速、安全等访锻,這些都是得到開發(fā)者的廣泛認可的。QOR使用Go語言開發(fā)期犬,能夠將該語言的各方面優(yōu)勢也應用到產(chǎn)品中去避诽。
Admin模塊可以快速生成一個漂亮、可跨平臺運行茎用、可配置的管理后臺。
Publish模塊設置了預演和正式兩種服務器環(huán)境旭斥,可以在正式發(fā)布之前預覽此次更新的內容。
Internationalization(i18n)國際化翻譯工具垂券。
Localization(l10n)本地化智能管理業(yè)務對象。
Transition模塊能夠體現(xiàn)業(yè)務流程和執(zhí)行業(yè)務規(guī)則菇爪。
MediaLibrary模塊支持上傳文件至云端,支持圖像自定義處理熙揍。
劣勢
技術團隊對Go語言無經(jīng)驗,會導致自定義開發(fā)過程中風險不可控氏涩。
-
django-Oscar
暫無
-
playframework
框架簡介
Play Framwork是一個輕快的REST風格的框架。
Play 1.x 使用Java開發(fā)是尖,只支持Java項目,只維護不更新蛔添。
Play 2.x 使用Scala和Java開發(fā)兜辞,同時支持Java和Scala項目。
優(yōu)勢
熱部署
Play 框架自動編譯 Java 源代碼弦疮,然后直接熱加載到 JVM 中而不需要重啟服務器。編輯代碼后咏尝,框架自動重新加載,然后直接就看到修改后的結果编检。
Play2的模板引擎
簡單易上手, 沒有JSP里面繁雜的內置對象和指令, 全部功能都通過方法調用完畢扰才。 支持反向路由。
極少量的配置
綁定一個 URI 模式到 Java 調用只需要在route中定義一行代碼衩匣。
JPA 持久化
Java 持久化接口( Java Persistence API )是一個簡潔的 Java 版的 ORM 框架,不需要任何配置生百,Play 會自動啟動 JPA 實體管理器柄延,并在代碼發(fā)生修改時自動地同步。
全棧的應用框架
- 支持 JDBC 的關系數(shù)據(jù)庫
- 基于 Hibernate ( JPA 接口 ) 的對象-關系映射框架( ORM )
- 集成的緩存支持,易用的分布式緩存系統(tǒng)( memcached )
- 簡單直接的提供 JSON 和 XML 的 Web Service 服務(不是 SOAP)
- 支持使用 OpenID 進行分布式的身份認證
- 可以將 Web 應用部署到任何地方(應用服務器杨凑,GAE 摆昧,云服務,等等)
- 圖像處理 API
劣勢
我之前使用過Play 1.x据忘,雖然支持JPA 持久化搞糕,但是不支持方言。
Play2.x是否有優(yōu)化還需要再查閱資料汉规。
不支持方言就會導致對數(shù)據(jù)庫的操作很不靈活驹吮。
-
spring cloud
Spring Cloud 是一套完整的微服務解決方案,基于 Spring Boot 框架碟狞。
優(yōu)勢
完整的微服務解決方案。
約定優(yōu)于配置族沃,基于注解,沒有配置文件常空。
輕量級組件盖溺,Spring Cloud 整合的組件大多比較輕量級。
開發(fā)簡便烘嘱,Spring Cloud 對各個組件進行了大量的封裝,從而簡化了開發(fā)为狸。
開發(fā)靈活遗契,Spring Cloud 的組件都是解耦的,開發(fā)人員可以靈活按需選擇組件。
劣勢
項目結構復雜泰涂,每一個組件或者每一個服務都需要創(chuàng)建一個項目辐怕。
部署門檻高逼蒙,項目部署需要配合 Docker 等容器技術進行集群部署寄疏。
初步調研結論
由于時間有限,Oscar和spring cloud驳棱、boot沒有寫完整农曲。
但是根據(jù)這些天的初步調研,更傾向于使用微服務框架重構現(xiàn)有商城乳规。
play輕且靈活,spring cloud更重一點笙以。