Web技术体系概述

2,079 views

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,079
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
44
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide
  • 欢迎 这次演讲的主要目的是给大家展示Web应用开发的概貌,让大家从宏观上对Web开发有一些认识 独家原创,我大学时就希望能获得这样的信息,但是现在也没有看到类似的信息,所以整理了这样一份资料给大家。
  • 大家知道哪些Web应用吗? 知名的Web应用如Gmail,功能非常强大不输于桌面软件,而且能够在手机这样的平台上使用
  • 首先,介绍典型的Web应用的架构所涉及到的技术。 下面有很多名词,大家可能会听的头晕,只要了解一下自己感兴趣的领域、层次中的内容即可,以后需要还可以问我或者看网上搜
  • 典型的三层架构,辅助系统不是必须的
  • 这两个更注重多媒体(动画和流媒体)以及交互,更靠近桌面程序,而且Flash起初并非开放标准,SL更非开放。
  • 业务逻辑层又可以细分为这几个层次,我们最关心的只是最上面的应用逻辑部分
  • 通过应用服务器处理HTTP连接,可以控制一些底层的内容,如连接的超时,
  • 比如统一的数据访问接口、模板的调用
  • 各种各样的应用框架层出不穷 各种框架都有自己的理念,解决自己的适用范围内问题。 所以大家可以多了解一些框架,将来遇到各种问题能灵活处理
  • 应用框架有时候作为应用服务器的一个插件,有时候作为应用服务器的一个通讯组件,应用框架接受哪些请求可以由应用服务器来控制和调度。通过分离这2者,应用服务器的开发人员可以单独优化服务器提高处理连接的性能,也不管后面的应用框架是使用何种语言编写
  • 有了现成的应用框架后,我们就可以将绝大部分精力,放在我们最关心的业务层面上了,这也是为何更青睐PHP/Python/Ruby等脚本的缘故,因为这些脚本语言可以让我们专注于所解决的问题,如果是使用C/C++,我们还要去处理像指针、内存分配等问题。
  • 广义上来说数据持久层就是个数据库,但并不一定是我们常说的关系型数据库
  • 应用最为广泛,理论也很成熟 他们基本都支持标准SQL+一些自己的扩展,有很多相通的功能 支持复杂的事务等等。 支持ACID(atomicity, consistency, isolation, durability)
  • 非关系型数据库近年来又热门起来了,虽然它没有关系型数据库那么多的功能,但是也很适合逻辑简单的业务,而且更容易进行规模上的扩张,构建分布式系统更方便,一般使用BASE (basically available, soft state, eventually consistent)。事务等功能放到业务逻辑层处理。 分布式系统中的CAP原理 Consistency. The client perceives that a set of operations has occurred all at once. Availability. Every operation must terminate in an intended response. Partition tolerance. Operations will complete, even if individual components are unavailable. Twitter计划迁移数据库到Cassandra,Digg已经在转换数据到Cassandra
  • 无法很简单地归于三层架构中的某一层,而且通常是作为服务器端的支撑服务在运行。
  • 简要说明,省略了很多东西,可能比较乱 为何选择这些组件 还有哪些可以替换的组件
  • Web兴趣小组
  • Web技术体系概述

    1. 1. Web 技术体系概述 曹力
    2. 2. 前言 什么是Web应用(Web Application) 使用网页浏览器在互联网或企业内部网上操作的应用软件。是一种以浏览器支持的语言(例如HTML、JavaScript、Java等编程语言)撰写的应用程式
    3. 3. 前言 Web技术是用于构建Web应用的技术
    4. 4. 前言 <ul><li>Web应用和技术的优势 </li><ul><li>跨平台(各平台都有浏览器,都使用通用标准如HTML/CSS/JavaScript)
    5. 5. 不需要事先安装或定期升级等程序 </li></ul></ul>
    6. 6. Web技术的现状和前景 前言
    7. 7. 前言 Google(98年成立,市值1899亿$) Facebook(04年成立,估值在2000亿$)
    8. 8. 第一部分 架构视角
    9. 9. 架构视角 服务器端 表现层(Presentation Layer) 业务逻辑层(Business Logical Layer) 数据持久层(Data Persistant Layer) 辅助系统 (Auxiliary System)
    10. 10. 表现层 将数据展示给用户 处理与用户的交互
    11. 11. 表现层技术 <ul><li>负责内容的HTML(HyperText Markup Language)超文本标记语言
    12. 12. 负责外观的CSS(Cascading Style Sheets)层叠样式表
    13. 13. 负责行为的JavaScript </li></ul>
    14. 14. 其他替代的表现层技术 <ul><li>Adobe Flash
    15. 15. Microsoft Silverlight </li></ul>
    16. 16. 业务逻辑层 应用逻辑 应用框架 应用服务器 操作系统
    17. 17. 操作系统 <ul>提供访问机器资源的统一接口,统一调度资源 <li>Linux
    18. 18. FreeBSD
    19. 19. Windows 200X Server </li></ul>
    20. 20. 应用服务器 为上层的应用框架提供基本的连接处理、调度
    21. 21. 应用服务器 <ul><li>通用 </li><ul><li>IIS
    22. 22. Apache HTTPD
    23. 23. Lighttpd
    24. 24. nginx
    25. 25. Cherokee </li></ul></ul>
    26. 26. 应用服务器 <ul><li>Java领域 </li><ul><li>Apache Tomcat
    27. 27. Sun Glassfish
    28. 28. Redhat JBoss
    29. 29. Oracle Weblogic Server
    30. 30. etc... </li></ul></ul>
    31. 31. 应用服务器 <ul>脚本类的通常功能不全面,不能单独作为应用服务器,往往和通用服务器联用 <li>Python </li><ul><li>CherryPy </li></ul><li>Ruby </li><ul><li>Mongrel
    32. 32. Thin </li></ul><li>PHP </li><ul><li>Zend Server </li></ul></ul>
    33. 33. 应用框架 应用框架实现了一般应用所需的基本结构以及包含一些必要的组件,顺便加入一些(自认为的)最佳实践和模式
    34. 34. 应用框架 <ul><li>Java </li><ul><li>Apache Struts
    35. 35. Apache Cocoon
    36. 36. Apache Wicket
    37. 37. AppFuse
    38. 38. Spring MVC
    39. 39. Taperstry
    40. 40. JSF
    41. 41. Webwork
    42. 42. etc. </li></ul></ul><ul><li>PHP领域 </li><ul><li>CakePHP
    43. 43. CodeIgniter
    44. 44. Seagull
    45. 45. Symfony
    46. 46. Zend Framework
    47. 47. etc. </li></ul></ul>
    48. 48. 应用框架 <ul><li>Python </li><ul><li>Django
    49. 49. TurboGears
    50. 50. Pylons
    51. 51. web.py
    52. 52. Zope </li></ul></ul><ul><li>Ruby </li><ul><li>Ruby on Rails
    53. 53. Merb
    54. 54. Nitro
    55. 55. Sinatra
    56. 56. etc. </li></ul></ul>
    57. 57. 中间件/接口 通过某种协议、标准 解藕应用服务器和应用框架
    58. 58. 中间件/接口 <ul><li>CGI/SCGI/FastCGI
    59. 59. ISAPI/NSAPI/AJP
    60. 60. Java的Servlet
    61. 61. Python的WSGI
    62. 62. Ruby的Rack </li></ul>
    63. 63. 应用逻辑 我们真正关心业务的地方 建立业务模型、业务流程
    64. 64. 数据持久层 将系统中的数据保存起来 为上层的业务逻辑隐藏数据存储的细节
    65. 65. 数据持久层技术 <ul><li>关系型数据库举例 </li><ul><li>MySQL
    66. 66. PostgreSql
    67. 67. Firebird
    68. 68. Sqlite
    69. 69. Oracle
    70. 70. IBM DB2
    71. 71. Microsoft SQL Server
    72. 72. etc </li></ul></ul>
    73. 73. 数据持久层技术 <ul><li>非关系型数据库 </li><ul><li>普通文件系统
    74. 74. 文档型数据库(如CouchDB, MongoDB)
    75. 75. Key-Value (如berkeleyDB TokyoCabinet Cassandra)
    76. 76. 面向对象数据库(如db4o Versant GemStone/S)
    77. 77. Amazon S3 </li></ul></ul>
    78. 78. 辅助系统 <ul>其他额外的服务 <li>全文搜索引擎Lucene(Java)、Sphinx、Xapian
    79. 79. 消息队列 (Message Queue)
    80. 80. 性能监控
    81. 81. 邮件
    82. 82. 缓存系统(Memcached) </li></ul>
    83. 83. 第二部分 案例 糗事百科的架构 http://www.qiushibaike.com/
    84. 84. Apache/Passenger Slave Master Ruby/Rails Filesystem MySQL 糗事百科 浏览器 页面 Ajax Engine(jQuery) Starling 后台程序 Memcached Sphinx搜索引擎
    85. 85. Q&A
    86. 86. 完 谢谢大家

    ×