这几天因为工作需要,了解了一下Web development 的技术路线,来源自
en.wikipedia.org/wiki/Web_development
本着互联网开放分享的态度,我是一边翻译一边学习。
---------------
-------------------------------------------
“web 开发”是在因特网www或者在局域网a private network上建立站点的各种方法的宽泛总称。
web 开发可以从 开发一个最简单的纯文本的静态单页面 到 很复杂的基于web的internet 应用、电子商
务、和社交网络服务。一个更综合性更完善性的归纳可以把web 开发分为为:
web 设计,
web 内容开发,
客户端联络,
客户端/服务器端 脚本开发,
web 服务,
网络安全配置, 和
电子商务开发(比如支付服务)。
(相关词条还有更深层次的解释,有空我可以后续学习并翻译出来)
在web 专业领域,“web 开发”一般是指 在网站建设中,那些无关页面设计的工作:写 Markup 标记语
言和写代码。
--------------- 【以上是有关 定义 咯】 ---------------
对于大的组织或公司,web 开发团队可以由几百个开发者(web开发人员)组成。小点的组织只需要单一
的长期工或者合同制的web master, 或者兼职。比如 图形设计, 信息系统 工程人员。web开发会是几个部门之
间的协同工作,而不是某个特定的designated部门的某个业务区域(domain)。
===== 目 录 =====
1.web 开发作为一个产业industry
2.web 开发的一些典型的领域
2.1 客户端开发
2.2 服务器端开发
2.3 客户端+服务器端
2.4 数据库技术
3.实际的web 开发工作
3.1 基础
3.2 高级
4.安全性考虑
5.时间线
6.其他内容(see also)
7.参考文献、链接
-------- 【以下是 web 开发产业】 ----------
随着web的商业化,web 开发变成一个持续增长的产业。特别是随着在线商业和商品销售的需要,大大促进了web开发产业的发展。
对于工具和平台,公众可以使用很多开源open source的系统的协助来进行web 开发。一个很出名的例子
叫做LAMP (Linux + Apache + MySQL + PHP)栈,它是可以免费下载的。所以学习Web 开发的成本是极小的。另
一个有益的因素是,一些更易用的"所见即所得"(What you see is what you get = WYSIWYG)web 开发软件正
在蓬勃发展,加入到web开发大军。
最著名的是Adobe Dreamweaver, WebDev 和 Microsoft Expression Studio. 使用这些软件可以使初学
者很快开发一个基本的web页面。不过学习 超文本标记语言HTML( Hyper text markup language )也是必要的,
通过阅读他们的帮助文档、技术手册、在线教程或面对面教授,很快就能学会。
另一方面快速发展的工具和技术是让开发者建立了更多的动态和交互的web 站点。开发者现在正致力于
使以前在PC上的软件现在能作为Web应用来服务大众。
现在人们不需要在本机运行程序,而是把程序运行在远端的服务器上。这一趋势产生了一些新的交流方
式,并且允许很多机遇的出现,在分散信息和媒体分发上。用户可以在不同地点和应用交互,而不是固定的工作
站或特定的应用环境。
最典型的web改变传统通信方式的案例是 电子商务。在线拍卖网站 如 eBay, 已经改变了顾客去寻找产
品和服务的方式。在线零售商 Amazon.com 和 Buy.com 以及京东淘宝啥的也是把 传统的购物颠覆。另一个大事
是blog的产生,改变了人们的通信方式。Web 应用,比如 WordPress 和 Movable Type 建立了简易实施的 博客
环境,针对单独的web站点。
一些开源的内容管理系统,比如 Joomla!, Drupal, XOOPS 和 TYPO3 ; 还有一些企业内容管理系统
Alfresco 已经扩展了web开发在在线交互和通信领域的影响。
还有一些web 开发影响了人们的社交和市场工作。它不再是简单的商业和工作的工具,还更广泛地服务
于社交网络。比如 Facebook, and Twitter 就以更个人和互动的方式,为人们提供了交流和组织的平台,从而登
上大众舞台。
---------- 【以下是 典型领域】 -----------
web 开发可以被分为很多领域,一个典型的基本的分类可以为:====【客户端的web编程】 ====
Ajax -- Asynchronous JavaScript 异步的js提供了一种使用JS或其他语言来提升用户体验的新方法。
Flash -- Adobe Flash Player 是一个普遍存在的浏览器插件,可用于 RIAs rich internet
app. Flex2 也是开发来用于Flash Player(v9+)的。
JavaScript -- 也是一个普遍应用的客户端平台,用于建立和转化了很多web app. 这些web 应
用可以跨越很多平台的设备。JavaScript是脚本语言ECMAScript的通用名称,土名字。详见ECMAScript。
jQuery -- 跨平台的JS库,用于加速客户端的HTML编程。
Microsoft Silverlight -- 微软的浏览器插件,让动画,矢量图和高分辨率视频播放成为可能
。使用XAML 和 .NET 语言进行开发。
HTML5 和 CSS3 -- 最新的HTML提交标准,包含了最新的针对CSS的提交标准(proposed
standard),天然支持很多由 其他框架 比如 Flash和Silverlight 提供的 客户端功能。
用一个伞状的方式来查看这些条目,像XHTML这样的客户端代码 实际上是在本地存储和在浏览器上执行
的。本地是不会执行客户端的程序的。客户端程序是执行在web服务器上的,web服务器生成 合适的一个 XHTML
,然后发送它到 client客户端。 客户端编程的本质是要允许替换本地客户端上的HTML并可以通过内容更新来刷
新网页。web 开发者必须具有一个观念,就是 他们的服务器端的脚本的 重要性 和 relevance关联性。如果一个
服务器端的脚本接收了一个本地端脚本修改来的内容,那样的web开发在 防攻击和安全性方面 就很糟糕。
===== 【服务器端的web编程】 =====
ASP -- (微软专有)ColdFusion -- (Adobe 专用,以前是Macromedia的)
CGI
Erlang, with Linux, Yaws, Mnesia, Erlang(LYME) solution stack
Groovy, using the Grails 框架
Java,如 Java Servlets, JSP or WebObjects
Lotus Domino
Node.js
Perl 如 Catalyst, Dancer or Mojolicious(全都开源)
PHP (开源)
Python, 如 Django on Rails(open source)
Ruby, 如 Ruby on Rails(开源)
SSJS = Server-Side Javascript 如 Aptana Jaxer, Mozilla Rhino
.Net and .NET MVC 框架 (微软专属)
万维网已经成为各种领域的复杂综合应用的转换平台,跨越了各个领域。在它们的多层次应用的本质之外,这些web app展现出复杂的行为,并且在他们的使用方式、表现、安全和发展进化的需求上很一致。但是,一个很大的特点是这些web app都是持续地在以ad-hoc的方式开发,持续地导致在 使用、维护、质量和可靠性方面的 问题。尽管web 开发可以在 从其他相关原理建立好的实践 中受益,它还是需要包含有区别的特点,来满足特定的需求。这些年,web开发已经朝着面向这些问题和要求去发展。
Web 工程是多项领域的结合贡献产物:系统分析和设计,软件工程,超媒体超文本工程,需求工程,人机交互,用户界面,信息工程,信息分类和检索,测试,建模和仿真,项目管理,图像设计和展示。尽管二者都是包含了大量的代码编写,但web工程既不是克隆,也不是软件工程。尽管web 开发使用了软件开发的原理,但web开发包含了新的手段,策略,工具和技巧,同时也是以基于web的应用为唯一导向的。
==== 【客户端 + 服务器端 的web编程】 ====
Google Web Toolkit -- 提供了一个工具来创造和维护复杂的javascript前端应用,用javaDart -- 提供了工具用于创造和维护复杂的javascript前端应用,还有支持服务器端用Dart语言编写的代码
Opa -- 是一个高层语言,不管是客户端还是服务器端都可被实现。编译器决定哪部分应该放在客户端上运行(自动地转换为Javascript),和哪部分应该放在服务器上运行。开发者可以通过简单的指令来优化这些决策。(开源)
Pyjamas -- 是一个用来开发Ajax应用 和 在Python下开发Rich Internet App 的工具和框架。
Tersus -- 是一个通过虚拟 定义用户界面,客户端行为和服务器处理 的对 富web应用 进行开发的平台。
尽管如此,像Ruby and Python这样的语言经常拿来和 MySQL(LAMP中的M) 以外的数据库服务协同使用。下面是web开发领域被广泛使用的数据库框架。例如,有些开发者喜欢一个叫做LAPR(Linux/Apache/PostgreSQL/Ruby on Rails)的搭配来进行开发。
==== 【数据库技术】 ====
FileMaker --Apache Derby*
IBM DB2
Firebird
Microsoft SQL Server
MySQL *
MariaDB *
Oracle
PostgreSQL *
SQLite *
Sybase
WebDNA
Redis *
MongoDB *
CouchDB *
Mark_Logic
* -- 开源/公共域
========== 【web 开发实践】 ============
【基础】
在实际开发工程中,许多web工程师基本的各学科间的技能/角色,包括:图形设计/web设计
信息架构 和 拷贝写/拷贝编辑 ,围绕 web的可用性,可访问性,以及 搜索引擎优化
上述的几点是一个简单web站点开发 层级(Hierarchy),并且可以扩展到包含了 客户端和服务器端的 所有方面。仍然要重视的是,web 开发还是通常被分为 包括页面布局、设计 的前端开发设计工作和 包含 website's 的功能设计 的服务器端开发,以及 back-end 最后端的系统。
【高级】
更多的一些高级web 开发者也会具有这些跨学科的技能/角色:》GUI -- 图形用户界面设计
》声音,视频,动画过程设计,针对web使用
》Flash 能力 -- (动画,声音,视频,脚本)
》web 内容管理系统开发 and/or 内容管理架构设计,开发,和整合。
》Web Application 开发, 整合, 和布署(deployment = disposition)
》web 服务器压力测试(在崩溃之前,一个运行着某个应用的web服务器能够承担多大的流量)
》web site 的安全性分析和测试
》web 站点的代码优化(是搜索引擎优化的非常重要的一部分)
》项目管理,质量保证,以及与IT开发相类似的其他方面的能力。
========== 【有关安全的考虑】 ============
web开发引入了很多有关安全性的问题,比如数据入口的错误检测,通过表格,过滤器输出,和加密。恶意的行为,比如 SQL注入 这种行为可以由用户来发起,只要对于web开发有一个原始的认识,有了恶意意图即可以发起攻击。有些脚本可以把网站隐私发掘出来,通过让它允许某些未经授权的访问,恶意用户可搜集诸如Email地址,密码,受保护的内容,比如信用卡账号。这样的问题依赖服务器环境(Apache 或 Microsoft IIS 最类似?) ,脚本语言都运行在这些服务器环境上。所以web开发者也没有动力去维护这些环境。但是,在web服务上线之前,严格的测试可以避免被攻击和侦测到隐蔽信息。If some contact form is provided in a website, it should include a captcha field in it, which prevents computer programs from automatically filling forms and also mail spamming.
Keeping a web server safe from intrusion is often called Server Port Hardening. Many technologies come into play to keep information on the internet safe when it is transmitted from one location to another. For instance Secure Socket Layer Encryption (SSL) Certificates are issued by certificate authorities to help prevent internet fraud. Many developers often employ different forms of encryption when transmitting and storing sensitive information. A basic understanding of information technology security concerns is often part of a web developer's knowledge.一个web开发者需要具备基本的对于信息安全的理解。
Because new security holes are found in web applications even after testing and launch, security patch updates are frequent for widely used applications. It is often the job of web developers to keep applications up to date as security patches are released and new security concerns are discovered.新的漏洞层出不穷,web开发者一定要跟进patch。
========== 【TimeLine 时间线】 ============
========== 【另见内容】 ============
Cross-browserWeb design
Website builder
========== 【引用内容】 ============
Jump up ^ Bureau of Labor Statistics, U.S. Department of Labor. "Information Security Analysts, Web Developers, and Computer Network Architects". Occupational Outlook Handbook, 2012-13 Edition. Retrieved 2013-01-17.
Jump up ^ "Web Application Security". DocForge. 22 February 2010. Retrieved 17 December 2008.