Web应用架构

C/S架构

Web应用从最初就採用C/S架构。Server负责监听client请求,提供资源,Client向server发起请求并渲染页面。两者通过TCP/IP协议栈之上的HTTP协议通信。

多层架构

在Web 2.0时代,随着交互性的要求,这个架构变得更为复杂。Server须要提供更复杂的服务,Client也要完毕很多其它的交互任务,涌现出非常多新的提供更快更好服务的技术。对应的,C/S架构须要以一种更复杂的方式来组织,即多层架构。

多层架构中的每一层负责提供一个特定的功能,与其它层通过良好的接口进行交互,易于升级维护。原始的C/S架构能够视作Server、Client两层。

3层架构

典型的3层架构为表示层,逻辑层,数据层

  • 表示层由浏览器负责渲染
  • 逻辑层由server端操纵数据,并发往表示层
  • 数据层负责存储数据。

6层架构

假设进一步切割,就得到6层架构,例如以下图

  • 表示层分为Client层和表示逻辑层

    • Client层负责渲染展示页面
    • 表示逻辑层为Server依据脚本生成网页
  • 逻辑层分为商业逻辑层和数据訪问层
    • 事务逻辑层表征事务逻辑和流程
    • 数据訪问层负责存取数据,发往事务逻辑层
  • 服务端通常有网络层负责网络

Ruby on Rails

Ruby on Rails是一个基于Ruby开发的构建Web应用的开源框架或者开源库,Twitter、Hulu、Github、Iteye等公司都採用了rails

框架。

组件

Ruby on Rails包括一系列组件

  • Rake:类似于make,能够用来改动、迁移数据库
  • WEBrick:一个Rails内置的HTTP服务器,能够使用rails server命令启动,速度较慢,适合完毕开发阶段的測试
  • SQLite:最简单的数据库,相同仅仅适合开发阶段的測试
  • Rack Middleware:中间件,用于server软件和应用之间的交互

缺点

  • 不适合海量服务,Twitter已经由ROR转向Scala
  • 它是一个框架,隐藏了太多细节

MVC架构

Model表示数据,View使用数据渲染页面,而Controller是媒介。View和Model的严格分离保留了重用性。



使用Rails创建应用时会自己主动依照MVC架构生成相关代码,包含:

  • 表示Model的一个类,数据库中会建立对应的表
  • 一个Controller,相应的URL解析和数据库中的操作会一一相应好
  • View包含一系列html文件用来渲染页面

Active Record

Active Record机制使object-relational mapping (ORM)变得可行。在Ruby中以ActiveRecord模块的形式出现。ORM映射机制为:

  • class - table
  • object - record(表的一行)
  • attribute - record value(表的一列)

ActiveRecord模块提供下面功能:

  • 与数据库建立连接
  • 表的创建
  • ORM映射
  • 使用object完毕CRUD操作(Create、Read、Update、Delete)

 

转载请注明作者:Focustc,博客地址为http://blog.csdn.net/caozhk,原文链接为点击打开

最新文章

  1. Intel Media SDK H264 encoder GOP setting
  2. Kotlin的android扩展:对findViewById说再见(KAD 04)
  3. HT图形组件设计之道(四)
  4. IO设计模式:Reactor和Proactor对比
  5. Spring IOC整理
  6. 也说border-box盒模型
  7. Sql2008的行列转换之行转列
  8. IOS 项目问题总结
  9. NOI十连测 第五测 T1
  10. 浅谈数据库技术,磁盘冗余阵列,IP分配,ECC内存,ADO,DAO,JDBC
  11. Linux-C语言中gettimeofday()函数的使用方法(转载)
  12. xcode 改动整个项目名
  13. Windows 8 应用开发 - 应用栏
  14. HDU 5784 How Many Triangles
  15. Andriod的国际化-android学习之旅(五十八)
  16. Linux命令行烧录树莓派镜像至SD卡
  17. saltstack通过jinja模板,grains方式将配置的变量值写入到配置文件中?
  18. three.js 创建点 线 面
  19. python——vs2017安装python库时,提示pip指令问题。
  20. beta冲刺————第五天(5/5=1)

热门文章

  1. Qt中添加OpenCV库
  2. Windows DDB和DIB技术应用(3)--图元外边矩形检测
  3. 面试题25:最小的K个数
  4. C# linq to xml
  5. 重写系统中的UINavigationController返回按钮的事件
  6. ASP.NET递归添加树节点
  7. matlab如何写一个类
  8. Nodejs随笔(一):Hello World!
  9. iOS程序启动原理(简单)
  10. c++ 从一个BYTE[] *filePtr 追加二进制文件