電商開發架構
㈠ 電子商務的框架是什麼
電子商務套件是電子商務時代,基於ERPII思想的管理軟體,主要強調的是企業在整個產業鏈中的協同商務能力,以物流為基礎,物流、信息流、資金流、商務流四流合一,串起ERP、SCM、CRM、DRP等企業信息化應用的各個部分,是電子商務套件的顯著特徵。目前主流的電子商務套,國外以Oracle11i為代表,國內以博科的Open9000為代表。
本文以國內外主流的電子商務套件為例,講述電子商務套件的框架及設計理念。
一、產品框架
1、什麼是電子商務套件
電子商務套件是旨在增強整個價值鏈競爭優勢,採用基於活動管理的技術來評估各種業務流程,消除重復(即不增值)的活動;強調內部協作和外部協同;以物流管理為基礎,功能涵蓋ERP、CRM、SCM、DRP等企業信息化應用,同時支持企業間的協同商務。通過標准化的咨詢、實施和服務,為企業分階段快速部署行業化解決方案,在開放、集成的平台基礎之上,可以靈活地滿足用戶個性的需求及企業業務不斷變化的要求。
對於需要管理創新的中國企業來說,電子商務套件不單是軟體產品,而是為企業引進一種先進的管理思想,導入一套成熟的經營管理模式、管理方法和手段。
2、電子商務套件應用框架
電子商務套件為企業信息化搭建起一個戰略框架,在這個框架指導下,企業可以根據自身的實際需求迅速構築信息平台,同時可以靈活、動態地、有效地管理,並實現電子化的商業事務處理的能力,使企業可以持續保持在IT投入上的競爭力,在提供的專業、貼身的服務下塑造自己的獨特競爭優勢。在這一靈活彈性的框架下,電子商務套件供應商給出了在供應市場、消費市場、資本市場、知識市場具體應用解決方案,體現了作業層、管理層和決策層等不同層次的應用,真正實現物流、資金流、信息流、商務流四流合一。實現了企業的集成管理,使企業產、供、銷、人、財、物各個環節聯結成一個緊密銜接的有機整體,同時也為進一步實現產業鏈級的協同商務提供了保證。
電子商務套件主要的應用框架特點:
◆ 全面集成、功能完整應用解決方案
◆ 彈性、靈活、可成長
◆ 開放的體系,集成第三方應用
◆ 基於價值鏈,面向電子商務及產業級協同商務
◆ 標准化服務、快速實施
電子商務套件應用框架
3、子商務套件主要特點
電子商務套件針對不同企業的規模,不同企業的類型以及不同管理模式與管理流程,均能夠實現功能可裁剪性、系統可配置性、流程可重構性、平台可移植性。
主要特點:
◆ 基於架構式平台技術,開放、集成,可成長
◆ 跨平台操作,支持多種大型資料庫
◆ 先進的工作流技術,工作流程可自由定義
◆ 國際化應用,多語言、多幣種及多會計制度
◆ 協同商務,實現全程物流管理
◆ OLAP技術,實現多維多點智能分析
◆ 全面的預算管理,完善的KPI績效考核
◆ 支持多種生產管理模式,靈活的計劃應變功能
◆ 全面電子化的實時企業內部審計
◆ 支持移動計算技術,實現移動商務
4、電子商務套件的主要功能部件
國外電子商務套件產品,以Oracle 11i為例,主要的功能部件或者模塊包括:
◆ 市場營銷
◆ 銷售
◆ 服務
◆ 合同
◆ 財務
◆ 人力資源
◆ 供應鏈管理
◆ 定單管理
◆ 項目管理
◆ 采購
◆ 資產管理
◆ 生產製造
國內電子商務套件產品,以博科Open9000為例,主要的功能部件或者模塊包括:
◆ 財務管理
◆ 生產製造
◆ 購銷鏈管理
◆ 客戶關系管理
◆ 物流配送系統
◆ 零售系統
◆ 工作流及知識管理
◆ 企業內審
◆ 集團管理
◆ 商業智能
◆ 企業信息門戶
二、設計理念
電子商務套件的產品核心理念,主要包括:技術平台化,功能套件化,應用協同化。
以博科電子商務套件Open9000為例,產品理念的詳細情況闡述如下:
1、技術平台化
架構式平台技術是企業級應用軟體開發技術的一種趨勢,博科的Open9000平台是基於軟體構件技術,完全集成和開放的「通用對象化內核+客戶端界面」體系架構(構件應用框架),是目前國內在技術上居於領先的,最具規模的大型企業管理平台。構件應用框架,它常是針對特定應用領域的,表示構件復用所需的軟體結構架構,說明構件是如何組裝成應用系統的,以及它們是如何相互交互的,框架既反映了一個應用領域共性的功能和基本的支撐服務,代表更大、更高層次的設計復用模式,另外,它又具備靈活性和可擴充性,允許客戶根據特定應用需要,在一些可變的插入點上,接入所需特定功能的構件,進行客戶化。「通用對象化內核」是一個群件化結構的用於數據處理的構件倉庫,它包含了企業管理中各類基本業務內容和業務邏輯規則。在內核的基礎上,針對不同行業企業處理的特點和需求,抽取不同的構件進行組合。
博科電子商務套件正是基於這一軟體工程思想,基於這一平台技術實現的,並在此基礎上快速孵化出各種行業版本的解決方案。
平台技術的優勢:
◆ 可以使企業方便地、快速地、平滑地增加新的功能,新的構件同原有的構件可以集成在一起可靠地工作
◆ 可以特別靈活地、動態地重新配置,將一個構件替換為升級的新版本不必考慮對其它構件的適配
◆ 允許對給定的任務採用不同的軟體開發供貨商提供的軟體,企業在實現它的解決方案時具有選擇產品的充分自由
◆ 企業可以容易地、靈活地將為企業特別設計的構件與整個系統集成使用,從而實現企業的特殊需求
◆ 基於構件的解決方案能夠為進一步方便地擴展系統功能提供方便,因為定製的構件的介面也可以由用戶特殊構件的使用
2、功能套件化
對於ERP軟體來說,集成是第一位的。由於國內管理軟體起步較晚以及在產品發展規劃方面缺乏遠見,沒有考慮到不同產品的集成,甚至依靠收購的方式來增加完善功能,結果導致用戶在使用過程中形成了一個個信息孤島,無法發揮信息整合的作用。同時用戶可能面臨對於相同的基礎資料要分別維護,數據需要重復輸入之類的問題,一方面帶來無效勞動;另外為了得到想要的數據,不得不做大量的二次開發工作,這不但增加項目實施的難度,還會使預算大大超過計劃。這些都給企業信息化設置了陷阱。
博科是國內第一家倡導套件概念的軟體廠商,博科電子商務套件基於博科Open9000平台實現了大型企業應用程序的全面集成,其十一大功能部件涵蓋了公司的前台和後台辦公系統,不同的功能模塊均能互連互通,還提供了無縫實時的商業智能。
3、應用協同化
企業運作效率越來越依賴於各部門、各類不同應用的協同,而不是單一部門、單一應用的水平。由於電子商務的出現,人們開始從單純關注交易這一節點向關注商務全過程轉移,這將使協作擴大到整個供應鏈上企業業務之間的協作。在企業內部,有各部門之間的業務協同、不同的業務指標和目標之間的協同以及各種資源約束的協同。如協同的生產管理能根據現有可調配的人力、物力和設備能力等資源進行優化排產,以便實現按期交貨。而在企業之間,業務間的協同變得更為重要,也更難實現。在供應鏈上,企業為了滿足客戶和市場的需求,通常需要有三個層次的計劃:需求計劃、供應計劃、滿足需求計劃,通過實施這三個計劃來完成需求與供給的匹配,在相應執行層次上提供支持功能。
只有做好不同層次、不同業務間的協同,才能幫助企業提高其產品和服務的創新能力,優化企業內部的業務流程,合理調配企業及供應鏈上的資源,更好地實現企業的並行運作,提高企業和供應鏈整體的快速響應能力。
㈡ 電商網站開發適合用什麼框架
基礎架構層面。
1. 前端網站和M站,考慮到訪問量和系統的可用性,基本會採用分布式部署。通過代理伺服器進行請求分發。
2. 其他的業務子系統,像商家前台,和管理系統,基本上都是單機或是主從部署。
3. 各個DB ,Redis 服務和 文件和圖片服務,搜索引擎Solr服務等,採用主從部署。
亞寧傳媒在整個系統架構裡面,還有一個比較重要的組成部分,那就是監控系統。例如:流量監控,硬體監控,系統性能監控等,
還有就是對某個頁面進行監控,設置頁面的其中一塊進行監控等。它是提高整個平台可用性的一個重要手段,多平台,多個維度的監控,能夠確保系統的可用性,一旦出現異常,特別在硬體或者性能方面出現異常,監控系統也能立刻發出警告,這樣也好防範於未然。
總而言之,一個好的系統架構應該從擴展性、安全性、性能和可靠性來考慮。羅馬不是一天建成的,架構適合就行,可以先行之而後優。通過漸進演化的過程,逐步是系統越來越完善。
㈢ 電子商務網站一般架構有哪些
大型電子商務網站架構,摘抄 7.同一個網站的多語言該如何處理是好,使用配置文件然後cookie或url來判別?===客戶是自己公司,使用標准方法即可
8.電子商務網站最多的就是 商品的打折方式和積分的贈送了,這里要怎麼設計才好(工廠模式)?===采購成熟的規則引擎
9.如果同一時間並發大量訂單的話,如果確保一個訂單的有效提交呢?
==電子商務一般要使用MQ,推薦IBM MQ;使用MSMQ也可
第一點是資料庫要設計好,要達到什麼級別,你可能需要考慮哪些表需要拆分,哪些表的核心數據需要冗餘,如果是mysql,還要考慮其他的問題,比如存儲引擎。
新聞肯定是要生成純靜態頁,對資料庫壓力就小很多,不過靜態頁也有管理上的不方便,更新刪除添加都要對磁碟文件進行操作
做一個自定義緩存層,對緩存邏輯進行控制,可以採用第三方緩存模塊,如果使用.net來做,可以層層緩存,頁面緩存,數據緩存(memcache,不過在win下效率不高)
電子商務網站特點就是對事務的嚴格,需要資料庫設計的時候要求高性能,也需要合適的索引,支持高並發,經常對產品表用戶表等進行索引檢查,是否有很多索引掃描和表掃描(即使是局部的,也要將逗局部地控制到最小范圍)
mssql語句對不需要事務的查詢要附帶上with(nolock),以利於並發更新。
有些功能模塊不能按照想當然的方式開發,比如產品訪問次數,切不可將這些更新非常頻繁的欄位置於核心表內,明確的做法是將其剝離開來 還有就是切不可經常性將欄位設計成bool類型,這樣會給以後的擴展留出路,即使是男女這種欄位,也建議採用tiny類型
其他還有就是在產品設計的時候充分考慮seo,網站目錄結構清晰可讀,而不是帶著一串串的查詢參數。
對安全要有整體的把握,最好全都是用存儲過程,在項目上線前將資料庫存儲過程全部導出再查找貌似exec的語句,查找是否需要替換成sp_executesql。
另外,如果採用mssql,全文搜索直接用mssql fte就可以,速度和精確度都還是可以的,最重要的是維護和管理開發很簡單。
打折的處理可以按照電信的一次,二次批價功能,如果你做過電信方面的系統。
當然也可以設計得更簡單的一些。 靜態的頁面建議使用CDN加速,以解決網通和電信之間訪問速度的問題;
數據的緩存方面建議考慮用memcache,另外也可以分別在表現層和數據層利用.net中的現存緩存機製作業可;
簡單執行的sql可以不用存儲過程,存儲過程會佔用資料庫伺服器的處理時間,造成死鎖;
mvc建議還是做些CMS的項目上應用,電子商城不是很適合,個人觀點。url上可以做轉義,使url顯示更友好;
資料庫建議建立分布資料庫,這樣可以轉移查詢和大訪問量對資料庫帶來壓力;
圖片可以考慮單獨放在一台伺服器上;1.三層架構
2.使用手寫sql,手寫entity(生成也可),緩存反射綁定(不是緩存數據哦,緩存映射關系),要考慮網站的長期發展還是手寫吧 靈活 性能也好
3.沒有這種問題,商業驅動的,純購物就好了,千萬別搞什麼圈子,wiki
4.純.net的mvc不建議,webform不搞viewstate,不搞服務端控制項(除repeater)再加點mvc的思想已足夠用了
5.不需要緩存數據(除搜索產品部分),要考慮多台伺服器的程序快速部署,config文件會很多,config要序列化緩存
6.當然是先生成好了,參照jd吧,按業務每張圖片對應幾個不同大小的圖
7.據經驗,電子商務網站僅靠中英雙語來達到多語言是不靠譜的(文化 用戶習慣不是簡單的語言切換),如果想真正運營英語的就要重新開發一個版本
8.不搞模式
9.負載均衡(web,db)+ssb非同步處理數據
10.你是業務類型的日誌還是異常日誌? 前台訂單流程上異常日誌不需要了,找個工具錄個腳本不停的跑 保證隨時發現問題發郵件就可以了
11.找第三方搜索組件 類似endeca的
12.負載均衡挺簡單的,初期靠軟體就可以,一切圖片找第三方放cdn,前台網站用到ajax的地方很少,如果用的話jquery 1,一個電子商務網站用戶99.5%的行為時Find
2、對於商品檢索部分,能不用資料庫就不用資料庫(網上切詞等相關的開源平台很多)
3、分布式緩存(Memcached 、Volecity),個人測試volecity 3還是不錯的
4、系統設計時必須要考慮可運營。從這個角度去設計系統
5、對於電子商務網站改動很頻繁,必須考慮架構設計如何適應頻繁的版本更新
6、必須設計一個好的單點登錄系統。
7、建議能不用sqlserver就不用它。
8、對於大型電子商務網站來說,系統的I/O是起決定因素而不是CPU和內存。1.項目劃分是否會有問題,圖中分別是 實體層,數據訪問介面層,數據訪問層,業務邏輯介面層,業務邏輯,網站A,B,C
項目劃分其實不重要,重要的的是你在寫代碼的時候是否能把代碼合理的分到對應的項目里。
2.數據訪問層是要開發效率(NBear,Linq,Nh等),還是訪問效率(直接使用sql等)?是否可以先使用開發效率高的,等日後訪問量大了,再重寫並替換數據訪問層?
開發效率優先,訪問量大了以後,我相信是有錢投到硬體上的,在你程序寫的不是很爛的情況下,升級硬體遠比優化程序節省成本。
3.網站被切割成了多個子網站,有一些控制項(如header,footer)是要共享的,如何跨網站項目共享這些控制項呢?
那就做成自定義控制項啦。
4.ms的mvc 1.0也出來不少時間了,是否已經夠成熟運用到項目中?或者是網站後台使用webform的,前台使用mvc?
推薦使用使用webform的,前台使用mvc,對於前台來說使用mvc能更好的提升性能,更方便的更換頁面表現形式。後台界面相對穩定,用webform可以提高開發效率。
5.網站數據的緩存是自己開發一個hashtable什麼的來維護呢,還是使用Memcached ?
初期建議用hashtable,因為簡單,將來升級到Memcached 。
6.縮略圖的處理,我看有的網站是在上傳圖片的時候直接生成,有的是在httpmodle里處理,訪問的時候生成.
直接生成縮略圖的好處是節約性能。httpmodle相反,每次瀏覽圖片的時候都會生成新的圖片,伺服器壓力大,建議直接生成。
7.同一個網站的多語言該如何處理是好,使用配置文件然後cookie或url來判別?
多語言建議使用asp.net自帶的資源文件的方式實現,當前語言保存在cookie裡面。
8.電子商務網站最多的就是 商品的打折方式和積分的贈送了,這里要怎麼設計才好(工廠模式)?
規則引擎
9.如果同一時間並發大量訂單的話,如果確保一個訂單的有效提交呢?
使用MQ隊列
10.日誌方面,log4net?
log4net只能記錄程序運行日誌,主要目的是用來調試程序的,系統業務操作日誌還你是得自己建一個表來保存。
11.電子商務的全文檢索,這也是個頭疼的問題
lucene,微軟索引服務,sqlserver全文檢索,方案很多的。
12.負載均衡方面,有什麼好的文章推薦碼?
可以看windows 2003 集群方面的文章 1.項目劃分是否會有問題,圖中分別是 實體層,數據訪問介面層,數據訪問層,業務邏輯介面層,業務邏輯,網站A,B,C
目前我也是這樣分的,不過當數據表結構有修改時,會帶動其它層的聯級修改,非常不方便,所以開發之前最好將資料庫設計地完善一點。另外,當網站分成多個以後,其它項目生成的DLL文件要部署到每個網站的bin文件夾里,更新一次都要重新部署,這也是個挺煩人的事,當然可以將DLL部署到GAC里來解決這個問題,不過這樣的話本地調試起來就不太方便了,因為項目一有改動,就要將生成的DLL重新拷貝到GAC里才能看到效果。
2.數據訪問層是要開發效率(NBear,Linq,Nh等),還是訪問效率(直接使用sql等)?是否可以先使用開發效率高的,等日後訪問量大了,再重寫並替換數據訪問層?
這個我也在考慮。目前我還沒有採用ORM框架,都是在DAL里直接訪問DB的。
3.網站被切割成了多個子網站,有一些控制項(如header,footer)是要共享的,如何跨網站項目共享這些控制項呢?
自定義控制項。
4.ms的mvc 1.0也出來不少時間了,是否已經夠成熟運用到項目中?或者是網站後台使用webform的,前台使用mvc?
正在學習這一塊。
5.網站數據的緩存是自己開發一個hashtable什麼的來維護呢,還是使用Memcached ?
現在我用的比較多的是.net自帶的數據緩存。
6.縮略圖的處理,我看有的網站是在上傳圖片的時候直接生成,有的是在httpmodle里處理,訪問的時候生成.
直接生成好,快一點。
7.同一個網站的多語言該如何處理是好,使用配置文件然後cookie或url來判別?
我沒涉及到這一塊,不過我覺得資源文件應該就是用來處理這個問題的。
8.電子商務網站最多的就是 商品的打折方式和積分的贈送了,這里要怎麼設計才好(工廠模式)?
這些都放在邏輯層好了。
9.如果同一時間並發大量訂單的話,如果確保一個訂單的有效提交呢?
MSMQ
10.日誌方面,log4net?
目前我是自已寫代碼存在庫里的。
11.電子商務的全文檢索,這也是個頭疼的問題
用lucene.net分詞建索引,再直接從索引庫里搜索,又快又准。
12.負載均衡方面,有什麼好的文章推薦碼?
不清楚了。 這樣的設計要達到新蛋的效果肯定不可能的,新蛋少說幾百台伺服器,不同資料庫之間的發布訂閱鏈路都有幾千條。有復雜的緩存,負載均衡機制。新蛋所有的通訊都是基於WCF的。另外對於這么大型的網站來說,資料庫一刻都不停止,所以讀寫分離也很重要,因為你也不可能讓資料庫停下來進行備份。總歸要做到新蛋這樣的大型電子商務網站,靠你上面畫的這點好像遠遠不夠。
不過關於公共的header,footer,我不建議做成自定義控制項,這個維護起來不方便,稍有變動就要發布dll,麻煩的。
如果你的header和footer不是很大的話,建議採用js+css的方式。然後加上壓縮和cdn緩存,應該效率上能接受。
㈣ 電子商務網站常用的系統架構哪些
前台系統包括:商品展示,內容展示,訂單確認,支付系統,用戶中心四大模塊
一. 商品展示
站內搜索(搜索提示,搜索規則,搜索成功頁,搜索不成功頁,相似推薦)
導航(頻道導航,其他導航如銷售排行,廣告位,推薦位,文字鏈,also buy等)
商品分類(品牌分類,品類分類,屬性分類如剪裁形式)
登陸頁(商品列表頁,商品詳細頁,商品活動頁)
這里的訪問邏輯是:a /b/c分流消費者去往相對個性化的頁面,由登陸頁體現商家的核心訴求和價值傳遞,完成call-to-action的第一步。
二. 內容展示:內容展示較為簡單,對純購物品牌而言包括:
公告區
幫助中心
論壇(如需商城與論壇發生交互,則需自行開發,否則可集成discuz做同步登陸即可)
三. 訂單確認
訂單確認,就是幫助消費者正確提交訂單信息的環節,看似簡單,實則非常復雜,需要對很多信息邏輯判斷和處理,一般由2個部分組成:
購物車
訂單提交(返回購物車,收貨地址&地址薄,支付方式判斷,配送方式,發票,訂單標記,實付金額計算等等)
四. 支付系統
與一般的想像不同,支付系統其實並不簡單等於第三方支付工具接入:
外部支付系統(支付寶將介面,財付通介面,網銀直聯埠,信用卡分期埠)
內部支付系統(賬戶余額,積分,禮品卡,優惠券)
支付系統的邏輯設計不但需要考慮到各種極端情況的發生(如一張訂單先用禮品卡,再用積分,最後網銀支付),還要預留財務做賬所需的相關欄位,並充分考慮訂單取消之後如何回滾各類內部賬戶。
五. 用戶中心
用戶中心的實質是用戶自助功能的dashboard,一般4個部分組成:
注冊&登陸(快速注冊,完整注冊,注冊有禮,推薦注冊,密碼找回,主站id登陸,open-id登陸如qq,新浪微博等)
訂單中心(歷史訂單狀態,中間狀態訂單修改,物流追蹤)
服務中心(各類自助服務如退款申請,退換貨申請,建議與投訴等)
信息管理(用戶基本信息管理和賬戶信息管理)
後台系統包括:商品&促銷,crm,訂單處理,wms,采購管理,財務管理,報表管理,系統設置,wa系統9大模塊
一. 商品&促銷
商品管理(品類管理,品牌管理,單品管理)
促銷管理(活動管理和自定義活動模板管理)
在上述模塊中,最重要的是2個部分:單品管理中的批量產品生成的自動程序和活動管理中「共享與互斥」管理。前者用於大幅提升上新速度,後者避免促銷活動失控。
二. crm :crm是對b2c核心資源—會員的管理,服務與再營銷系統,包括如下部分:
會員管理(會員信息的增刪改查和到其他系統的鏈接)
用戶關懷(條件觸發和人工觸發相關edm &簡訊& ob)
定向營銷(會員分組和營銷活動管理)
客服管理(內容非常多,集成所有需前台與後台交互的功能,詳情還是看圖吧)
呼叫中心(ivr,坐席管理,統計報表,參數傳遞與窗口嵌入)
值得注意的,edm和簡訊通道市面上已經有成熟的外包服務商,一般都會外包;呼叫中心和在線客服自行開發成本太高,特別是呼叫中心系統,業務初期也都是外包的。
三. 訂單處理:訂單處理是在訂單未正式進入倉儲部門處理之前,對訂單的前置性處理環節。
訂單錄入(電話訂購,網上下單,外部團購訂單,無金額訂單錄入如禮品單)
訂單審核(自動審核和人工審核)
rma處理(rma申請單和rma處理單)
四. wms(warehouse management system倉庫管理系統)
wms的流程很長,功能模塊也很多,大致分為入庫管理,庫存管理,出庫管理和票據管理4個模塊四個模塊
五. 采購管理
供應商管理(供應商信息管理,合同發票管理)
采購單管理(po單管理,負po單管理)
庫存管理(庫存查詢,庫存佔用單,庫存變動log)
六 .財務管理:b2c的財務管理,主要是對供應商,渠道和內部費用支出的成本控制。
供應商結算
渠道結算
配送結算
內部結算
七. 報表管理:報表是b2c業務的宏觀表現,理論上說,每個部門的kpi都應該從中找到。
搜索報表(站內搜索量查詢)
銷售報表(多個維度銷量查詢,優惠券使用情況,報表導出)
財務報表
客服報表(客服日報和坐席報表),前者反映與消費者發生的日常交互(包括正常與異常),後者考核客服的工作績效
倉儲物流報表,這幾塊報表,是業務運作的核心,涉及到公司機密,就不能寫的太細了,見諒。
八. 系統設置:這塊大家都知道是幹嘛的,也就不多說了,分成三塊。
基礎設置(和業務有關的一些欄位值)
許可權設置(不同賬號的操作許可權和操作記錄)
其他設置
九. wa系統(web analytcis)
網站分析系統,幾乎全是外購,很少有能夠自建的,即使自建,最多做幾個簡單的模塊。用於實戰的,要麼是免費的ga(google analytics),要麼是昂貴的omniture。
㈤ 獨立開發一套電商系統,UI用什麼框架
基礎架構層面。
1. 前端網站和M站,考慮到訪問量和系統的可用性,基本會採用分布式部署。通過代理伺服器進行請求分發。
2. 其他的業務子系統,像商家前台,和管理系統,基本上都是單機或是主從部署。
3. 各個DB ,Redis 服務和 文件和圖片服務,搜索引擎Solr服務等,採用主從部署。
亞寧傳媒在整個系統架構裡面,還有一個比較重要的組成部分,那就是監控系統。例如:流量監控,硬體監控,系統性能監控等,
還有就是對某個頁面進行監控,設置頁面的其中一塊進行監控等。它是提高整個平台可用性的一個重要手段,多平台,多個維度的監控,能夠確保系統的可用性,一旦出現異常,特別在硬體或者性能方面出現異常,監控系統也能立刻發出警告,這樣也好防範於未然。
總而言之,一個好的系統架構應該從擴展性、安全性、性能和可靠性來考慮。羅馬不是一天建成的,架構適合就行,可以先行之而後優。通過
㈥ 電商前端架構設計
什麼是前端架構
說到架構,很容易拉出一系列的概念知識點,像系統架構、軟體架構、框架等等,這些不是今天探討的重點,大家可以下去網路來理解。架構的本質是什麼?其實也是一種管理。通常我們所說的管理,都是指對於任務和人員的管理,而架構管的是機器和代碼。比如說,機器的部署屬於運維的物理架構,SOA屬於服務架構,那麼,前端的架構指什麼呢?
長期以來,前端所處的位置是比較偏應用層,很薄的一層,而架構又要求深度和廣度,所以之前在前端裡面做架構,好比在小水塘里游泳,稍微撲騰兩下就到處碰壁。但最近這幾年來,隨著一些列新的技術和概念的出現,前端的范圍被大大拓展了,所以這一層逐漸變得大有可為。
單純從語言的角度來說,html、js、css是最簡單最容易上手的開發語言,不考慮模塊化、工具、壓縮優化,任何人都可以快速上手,完成一兩個功能簡單的頁面。在規模很小的項目中,前端技術要素彼此不會直接產生影響,因此無需架構相關的思考。由於前端語言這種靈活鬆散的特點,使得前端項目規模在達到一定規模後,工程問題凸顯,成為發展瓶頸,原來孤立的技術要素開始彼此產生影響,各種技術要素彼此之間開始出現關聯,要用模塊化開發,就必須對應某個模塊化框架,用這個框架就必須對應某個構建工具,要用這個工具,就必須對應某個包管理工具……這個時候,需要有人從比較高的角度去梳理、尋找適合自己團隊的集成解決方案。而這一系列解決問題的工具和手段就是所謂的前端架構。
架構不等於框架這一點很好理解,相信大家都能夠很深入的說明這里的差別,框架是架構的重要組成部分,架構決定框架的選型,框架決定架構的技術路線。架構圍繞框架進行一系列的流程工具建設,從而形成完善自動的開發體系。
+框架不等於類庫,這里就是很多人困惑的點,你用的什麼框架?jquery、underscore、linq、seajs、requirejs等等,每個人都能夠列舉一大堆。但這個是不準確的,一套編碼框架是有一系列的元素組成:開發模式,我們如何來實現代碼的職責分離。以前整個前端是mvc中v這一層,而現在前端內部也進行了mvc的邏輯細分,Javascript的MVC框架現在很多,有的強化m、有的強化c。每一個框架其實都有其特點的,並且有越來越多的創新改造,比如現在最流行的是mvvm。有angular、react等等。我們是為了引入mvvc才把他們納入到我們的開發體系,而不是因為他是一個好用的類庫。
通訊,模塊化、組件化是前端在推進開發模式過程中的一個過程產物,為了有效的進行組件隔離和獨立,現在有各種各樣的通信模型出來,不過由於實現簡單,代碼少,他往往是合入到某個類庫裡面,但本質也是一個類庫。比較成熟的比如:消息匯流排、事件模擬、緩存中轉、flux模型等等。
模板,我們用什麼樣的方式來集中的處理數據往html的轉換過程,這里就不用多展開,這種類庫現在太多了,光我們公司就有很多套,大家在代碼行、緩存管理、預編譯、運算性能、強大的語法等等各個維度不段追求各種極致。
基礎類庫最後才是傳統類庫,相信現在已經沒有同學會在項目中去約束團隊中的dom操作、常用函數、方法、非同步化等等各種很基礎東西,這個時候我們一般就是引入jq、zepto、underscor這些封裝好的東西就行了。核心就是為了改善編碼生產力。
對於框架的選型要從兩面看,一是看該框架的本領,二是看你們團隊的能耐。從經驗上給幾個點建議:
這里也可以順便展開聊一下現在前端產品的形態分類:
從這些分類裡面,我們這些年派生出了所謂全端和全棧的概念。但本質上怎麼走還是要由所在產品的形態來決定。
內容型Web站點 側重渲染方面的優化,前端邏輯比重小
操作型B/S系統 以數據和邏輯為中心,界面較規整
hybrid內置型,要處理緩存和一些本地介面,包括PC客戶端和移動端。現在的本地應用,基於很多考慮,都變成了混合應用,也就是說,開發這個應用的技術,既包含原生的代碼,也包含了嵌入的HTML5代碼
Web游戲,前端的邏輯非常重,在代碼結構上要求非常高的可管理性和更復雜的設計模式。
桌面應用型,現在有一些PC端的混合應用開發技術,比如node-webkit和hex,前者的典型應用是XDK,後者的典型應用是有道詞典,此外,豌豆莢的PC客戶端也是採用類似技術的,也有一些產品是用的qt-webkit。這類技術可以方便做跨平台,極大減少開發工作量。
大工程應該盡量避開谷歌產品,他的很多技術開源項目都是玩票性質的,GWT、Closure、Darty就是前車之鑒。曾今提出過很多的新技術,到現在還是獨家的,變出太大。包括現在angular,喜歡做斷崖式升級,做做運營後台系統問題不大,如果是線上系統的話,每次升級就是一次人月神話中的典型焦油坑。
關注應用場景,像剛才說到的boss後台是一種;另外我的平台是否有沉重的歷史包袱,需要兼容ie6,還是可以輕裝上陣;產品對於seo是什麼樣的態度?是否需要考慮自適應?或者我的團隊足夠大,能夠各搞一套?;產品特徵是強內容還是強交互或者是游戲性。這些都是選擇不同框架的主要出發點。
沒有最好,只有最適合自己的,基本上,針對每個平台,我們都可以列出一些主流框架,但不意味著你們都能駕馭得住。小馬過馬,老牛沒過膝,松鼠淹個半死,就是這么回事。但無論我們選擇什麼框架或決定自己動手造輪子,都勿忘初心,技術必須讓我們工作生活更為輕松愉快——我們只選擇我們能駕馭住的框架,我們不能保證它在一年後是否會過時落後。
而且按照我個人這么多年的經驗來看,任何框架都會過時,往往不是因為他不夠好,而是因為一定有更好的出來。我們再選擇一個框架或者一個類庫的時候就要想好,未來我如何拋棄他。至少不能成為我們引入新的框架的絆腳石。現實的工作中很多的團隊往往會陷入到年復一年的用今年的新框架去重構去年老框架代碼的歷史循環中去。對於引入框架如何盡量延長他的生命力,我個人的意見是選擇框架時去追求概念,而不是潮流,當我的架構可以接受新的設計概念的時候才去考慮引入新的框架。用設計理念的選擇代替框架的選擇。之所以這么說是因為我觀察到我們部門的後端架構的開發理念跟我進公司的時候是差不多的。更多你可以參考成都網站建設
架構的組成
組件框架