Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | 云栖社区 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Github | Search | About

第 16 章 Framework Design

目录

16.1. 开发框架 Framework
16.1.1. HMVC
16.1.2. REST
16.1.3. SNA (Shared Nothing Architecture)
16.1.4. 其他
16.2. MVC Framework Design (设计MVC框架)
16.2.1. HMVC Framework
16.3. REST
16.3.1. RESTful JSON API
16.3.2. Ajax 与 RESTful 跨域
16.4. Service-oriented architecture (SOA)
16.4.1. SOAP实现
16.4.2. MQ 实现
16.5. Dispatcher MVC核心分发器
16.5.1. URL设计
16.5.1.1. URL 作为MVC 的Controller
16.5.1.2. URL 伪静态化,用于SEO优化
16.5.2. Dispatcher 的实现方式
16.6. Plugin & Hook 设计与实现
16.6.1. 插件管理平台
16.6.2. 接口定义
16.6.3. 插件
16.6.4. 测试
16.7. Interface
16.7.1. 访问接口协议
16.7.2. 接口性能问题
16.7.3. 接口安全问题
16.7.3.1. 访问权限
16.8. Javascript Framework
16.8.1. Minify JS
16.8.1.1. jsmin
16.8.1.2. yuicompressor
16.8.1.3. shrinksafe
16.9. 模板(template)
16.9.1. HTML 页面优化
16.10. Session/Cookie
16.10.1. Session
16.10.2. Session 共享
16.10.3. Cookie
16.10.3.1. Cookie 安全
16.10.3.2. cookie-free domains
16.10.3.3. P3P
16.11. 国际化 Locale database。
16.11.1. Unicode
16.11.2. 繁简转换
16.12. 数据库访问
16.12.1. CRUD
16.12.2. Active Record
16.12.3. OR Mapping
16.13. Cache
16.13.1. 页面缓存
16.13.2. 局部缓存
16.14. Single sign-on (SSO) 单点登录
16.15. 搜索引擎
16.16. Synchronous/Asynchronous
16.17. Message Queuing
16.18. Hash
16.19. Sharding 垂直/水平切割
16.19.1. 面向服务
16.19.2. 面向数据库
16.20. 日志系统
16.21. Cache
16.21.1. CDN (Content Delivery Network) 与反向代理
16.21.1.1. CDN接口API
16.21.1.2. 方向代理页面过期处理
16.21.1.3. 内容版本化
16.21.2. HTTP Cache
16.21.2.1. 在程序中灵活操作 Cache-Control
16.21.2.2. 非程序文件缓存处理
16.21.3. Cache 生存时间
16.22. i18n 国际化
16.22.1. 数组方式
16.22.2. 数据库方式
16.22.3. 文件文件
16.22.4. Gettext
16.22.5. 数据结构
16.23. RSS / ATom
16.23.1. Atom
16.24. Logging 日志
16.24.1. 日志的格式
16.24.2. 日志存贮
16.24.2.1. 本地存储
16.24.2.2. 远程存储
16.24.3. Log4cpp/Log4j/Log2PHP
16.24.4. Remote Syslog
16.25. Search
16.25.1. 搜索结果静态化
16.25.2. SEO Module
16.25.2.1. robots.txt
16.25.2.1.1. Sitemap in robots.txt
16.25.2.2. sitemaps
16.26. 微服务安全解决方案
16.26.1. Restful 安全问提
16.26.2. 第一个阶段采用 HTTP Basic Auth
16.26.3. 第二阶段 HTTP Basic Auth + SSL
16.26.4. 第三阶段 Oauth
16.26.5. 第三阶段,终极版诞生,SSL使用双向认证
16.27. debug
16.28. 性能优化
16.28.1. 尽量使用单引号

16.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)

16.1.1. HMVC

  • Python web2py

  • Php CakePHP,Zend,CodeIgniter

  • Perl Catalyst

  • Java Struts,Spring MVC

  • ruby on rails

16.1.2. REST

  • Python Pylons

  • ruby on rails

16.1.3. SNA (Shared Nothing Architecture)

16.1.4. 其他

  • Python Django 是一个MTV框架

  • .Net Framework