阿裡巴巴開源技術 WebX

来源:http://www.cnblogs.com/RunForLove/archive/2016/01/18/5139511.html
-Advertisement-
Play Games

0. WebX項目目前已開源, 項目開源地址:https://github.com/webx/citrus-sample.git 項目參考文檔:http://www.openwebx.org/docs/1. 為什麼不使用SpringMVC,而是使用WebX? 當初阿裡巴巴建站的時候,並沒有現在...


0. WebX項目目前已開源,

  項目開源地址:https://github.com/webx/citrus-sample.git

  項目參考文檔:http://www.openwebx.org/docs/

1. 為什麼不使用SpringMVC,而是使用WebX?

  當初阿裡巴巴建站的時候,並沒有現在這麼成熟的多種框架技術(springMVC等);其次,WebX這些年也已經經受住了諸如‘雙十一’的大訪問,高併發的考驗;但我認為最為重要的一點還是為了安全。對於開源的代碼,沒有人能保證其安全性或對其進行嚴格的滲透測試。因此,漏洞可以通過「導入代碼」的後門入侵到內部系統。造成了企業對這些漏洞一無所知,攻擊者卻對它們瞭如指掌的現狀。[2014年註明的OpenSSL漏洞就是這種情況]。

2. WebX簡介

  WEBX就是把頁面與Service層之間的一些Servlet等公共的東西抽象出來,提供相應的服務以提高開發效率,可以看出,webx和傳統的servlet-action模式的HettpServlet為基礎,對其中的公用的抽象整理後,得到一個輕量級的web開發框架。webx頁面使用了velocity模板,WEB層使用的是WEBX框架裡面的TemplateAction, TemplateScreen, AbstractModule, TemplateControl,解決了操作和頁面的跳轉。持久層使用ibatis,Bean容器使用的是Spring。

Webx的層次

 

  如上圖所示是WebX的層次結構,從內到外,springExt基於Spring,提供了擴展組件的能力;WebX Framework則基於Servlet API,提供基礎服務。WebX Turbine基於WebX Framework,實現具體的網頁功能。(turbine['tɜːbaɪn; -ɪn],渦輪機,渦輪)。

  一個好的框架,並不是實現了所有的功能,而是具有超強的擴展能力

3. 項目結構簡單介紹

  由於webx是基於準的JavaEE Web用範,因此它的目錄結構是我們均熟悉的B/S構。

4. WebX的請求執行流程

  1.對於URL:http://localhost:7001/petstore/user/account/edit.htm(htm是為了相容過去的DOS命名格式存在的,在效果上沒有區的,HTM 為DOS三字元文件擴展名時代而來;HTML為Windows時代支持多字元擴展名)

  我們知道http(協議)、localhost(Server name可以在C:\Windows\System32\drivers\etc\hosts中來配置)、7001(埠號)、petstore(context path)、user(conponent path)、account/edit.htm(servlet path)、account/edit.vm(target)。

  2.根據埠號,伺服器把該請求交給petstore應用,再根據/account/edit.htm(Servlet Path路徑)。在web.xml中把*.htm映射到Webx Controller Servlet,所以Webx Controller Servlet就接管了這個請求。

  3.Webx Controller Servlet激活pipeline,而用AnalyzeURLValve分析/edit.htm是什麼意思。根據webx預設的映射,/edit.htm被映射成/ edit.vm。

  4.根據target查找screen模板:/screen/edit.vm,假如target的值:/xxx/yyy/edit.vm,那麼,valve會:在/templates/screen目下,找到/xxx/yyy/edit.vm模板。然後依次查找screen類:xxx.yyy.Edit (如果找不到,下一個)xxx.yyy.Default (如果找不到,下一個)xxx.Default (如果找不到,下一個)Default (如果找不到,下一個)TemplateScreen (系統默screen,不可能找不到的)。

  5.screen類,渲染screen模板。如果存在layout佈局,渲染layout,screen類,並渲染screen模板。根據target查找layout模板,渲染layout模板。

  6.渲染在layout模板中引用的兩個control:head.vm:在head.car中查找/control/head.vm;bottom.vm :在bottom.car中查找/control/bottom.vm。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1,編譯live555源碼目錄下的BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment四個工程生成相應的庫文件;目錄結構如下:2,包含上面四個工程目錄下的include目錄文件和生成的庫文件,編譯mediaServer目錄下的文件,會生...
  • 上篇說完瞭如何接入微信公眾號,本文說一下微信公眾號的最基本功能:普通消息的接收和回覆。說到普通消息,那麼什麼是微信公眾號所定義的普通消息呢,微信開發者文檔中提到的接收的普通消息包括如下幾類:1.文本消息2.圖片消息3.語音消息4.視頻消息5.小視頻消息6.地理位置消息7.鏈接消息(被動回覆的消息)被...
  • 說到線程就不得說進程。進程 進程對應一個程式,每個進程對應一定的記憶體地址空間,並且只能使用它自己的記憶體空間,各個進程間互不幹擾。並且進程保存了程式每個時刻的運行狀態,這樣就為進程切換提供了可能。當進程暫時時,它會保存當前進程的狀態(比如進程標識、進程的使用的資源等),在下一次重新切換回來時,便...
  • 題目在這裡:http://acm.hdu.edu.cn/showproblem.php?pid=1520題解,這是我的備忘錄,沒有任何註釋。 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 8 /* 9 dp[i...
  • 一、主要思路scrapy爬取是有課程地址及名稱使用multiprocessing進行下載就是為了爬點視頻,所以是簡單的代碼堆砌想而未實行,進行共用的方式二、文件說明itemsscray欄位piplines.py存儲資料庫setting.py scrapy配置 需要註意的是DEFAULT_REQUES...
  • 設計模式(Design Patterns) ——可復用面向對象軟體的基礎設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設...
  • 導讀:本文作者是淘寶技術部技術專家陳康賢(花名龍隆),他是《大型分散式網站架構設計與實踐》一書的作者,在本文中他分享了他對大型網站架構的理解,優優分享之,希望對你有幫助。大型網站架構從來都不是一個預先定義的架構,而是一個演進式的架構。很少有一個網站從建站開始,就能夠因具備大型網站的所有屬性而一成不變...
  • 線程並不是java1.5以後的新技術,在(java1.5之前)傳統的線程創建有兩種方式:1)繼承Thread類;2)實現Runnable介面。1)繼承Thread類: 1 Thread thread1 = new Thread(){ 2 @Override 3 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...