Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

第 32 章 Framework Design

目錄

32.1. 開發框架 Framework
32.1.1. HMVC
32.1.2. REST
32.1.3. SNA (Shared Nothing Architecture)
32.1.4. 其他
32.2. MVC Framework Design (設計MVC框架)
32.2.1. HMVC Framework
32.3. REST
32.3.1. RESTful JSON API
32.3.2. Ajax 與 RESTful 跨域
32.4. Service-oriented architecture (SOA)
32.4.1. SOAP實現
32.4.2. MQ 實現
32.5. Dispatcher MVC核心分發器
32.5.1. URL設計
32.5.1.1. URL 作為MVC 的Controller
32.5.1.2. URL 偽靜態化,用於SEO優化
32.5.2. Dispatcher 的實現方式
32.6. Plugin & Hook 設計與實現
32.6.1. 插件管理平台
32.6.2. 介面定義
32.6.3. 插件
32.6.4. 測試
32.7. Interface
32.7.1. 訪問介面協議
32.7.2. 介面性能問題
32.7.3. 介面安全問題
32.7.3.1. 訪問權限
32.8. 模板(template)
32.8.1. HTML 頁面優化
32.9. Session/Cookie
32.9.1. Session
32.9.2. Session 共享
32.9.3. Cookie
32.9.3.1. Cookie 安全
32.9.3.2. cookie-free domains
32.9.3.3. P3P
32.10. 國際化 Locale database。
32.10.1. Unicode
32.11. 資料庫訪問
32.11.1. CRUD
32.11.2. Active Record
32.11.3. OR Mapping
32.12. Cache
32.12.1. 頁面緩存
32.12.2. 局部緩存
32.13. Single sign-on (SSO) 單點登錄
32.14. 搜索引擎
32.15. Synchronous/Asynchronous
32.16. Message Queuing
32.17. Hash
32.18. Sharding 垂直/水平切割
32.18.1. 面向服務
32.18.2. 面向資料庫
32.19. 日誌系統
32.20. Cache
32.20.1. CDN/逆向代理緩存
32.20.2. Cache 生存時間
32.21. i18n 國際化
32.21.1. 數組方式
32.21.2. 資料庫方式
32.21.3. 檔案檔案
32.21.4. Gettext
32.21.5. 資料結構
32.22. RSS / ATom
32.22.1. Atom
32.23. Logging 日誌
32.23.1. 日誌的格式
32.23.2. 日誌存貯
32.23.2.1. 本地存儲
32.23.2.2. 遠程存儲
32.23.3. Log4cpp/Log4j/Log2PHP
32.23.4. Remote Syslog
32.24. debug
32.25. 性能優化
32.25.1. 儘量使用單引號
32.26. Design pattern (設計模式)
32.26.1. Singleton 單件模式
32.27. AOP(Aspect Oriented Programming)
32.28. 信息安全
32.28.1. CSRF(Cross-site request forgery)跨站請求偽造
32.28.2. Session 撰改演示
32.28.3. 用戶註冊與登錄安全
32.28.4. 目錄檔案與權限
32.28.4.1. 讀寫權限
32.28.4.2. 訪問權限
32.28.5. 密碼安全
32.28.6. 注入檢查
32.28.7. 防止惡意刷新與重複提交
32.28.8. 屏蔽出錯信息
32.28.8.1. 屏蔽php出錯信息
32.29. 序列化

32.1. 開發框架 Framework

選擇一個好的開發框架,很重要。不過大部分框架都針對於軟件開發,而我們要的是輕量級,適合高負載,靈活的框架。

框架的分類

  • 本地框架HMVC,MTV
  • 遠程框架SOA/REST
  • 混合框架

上面框架可以滿足我們絶大多數需求,如URL定義,Session/Cookie管理,多語言國際化,資料庫訪問等等。

Java和.Net我沒有太多的經驗,php我有10+年經驗,我在各種框架之間做比較發現CodeIgniter框架比較適合我們的需求。

框架是沒有100%完美的,你仍需要對它進行二次開發。如果你有充足的時間,針對自身繫統系統的特點設計一個更適合您網站的框架,這是最好的選擇。

設計一個框架需要用到很多知識,需要有豐富的經驗。目前主流框架都是基于MVC設計思想,要設計一個框架你必須瞭解MVC (Model-View-Controller) 參考:http://www.itisedu.com/phrase/200604231324325.html

開發一個框架包括那些重點呢,下面我把一些要點一一列出,然後一個個地突破,我這裡使用php為例子,上面我已經說過語言只是工具,所以學習是設計思想,不要拘泥于語言:

  • JS封裝(javascript)

  • 模板(template)

  • url

  • session/cookie

  • 語言包(language package)

  • 編碼(unicode)

  • 資料庫訪問(database OR Mapping)

  • 權限(Permission)

如果重新開發一個框架,我認為太現實,我的建議使用現有pear庫,搭建一個MVC框架。例如:

  • Model(pear db)

  • View(smarty template)

  • Controller (pathinfo)

32.1.1. HMVC

  • Python web2py

  • Php CakePHP,Zend,CodeIgniter

  • Perl Catalyst

  • Java Struts,Spring MVC

  • ruby on rails

32.1.2. REST

  • Python Pylons

  • ruby on rails

32.1.3. SNA (Shared Nothing Architecture)

32.1.4. 其他

  • Python Django 是一個MTV框架

  • .Net Framework