什么是 web 开发

这几天因为工作需要,了解了一下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前端应用,用java
        Dart -- 提供了工具用于创造和维护复杂的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-browser
    Web 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.

什么是 web 开发相关推荐

  1. 写给自己的web开发资源

    web开发给我的感觉就是乱七八糟,而且要学习感觉总是会有东西要学习,很乱很杂我也没空搞,(其实学习这个的方法就是去用它,什么你直接用?学过js么学过jquery么?哈哈,我没有系统的看完过,但是也做出 ...

  2. 第五篇:Visual Studio 2008 Web开发使用的新特性

    第五篇:Visual Studio 2008 Web开发使用的新特性 本篇翻译自MSDN. .NET Framwork 3.5与Visual Studio 2008 包含很多新特性.AJAX的Web开 ...

  3. Web 开发与设计之 Google 兵器谱

    Google 的使命是 Web,在 Google 眼中,未来的一切应用都将 Web 化,一直以来,Google 为 Web 开发与设计者推出了大量免费工具,让他们更好地创建,维护,改善他们的 Web ...

  4. 如何用Python做Web开发?——Django环境配置

    用Python做Web开发,Django框架是个非常好的起点.如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手. 概念 最近有个词儿很流行,叫做"全栈"(full ...

  5. Web 开发人员必备的随机 JSON 数据生成工具

    在 Web 开发中,经常会需要一些测试数据来测试接口或者功能时候正确.JSON Generator 就是这样一款生成随机 JSON 数据的在线工具,Web 开发人员必备,记得收藏和分享啊. 您可能感兴 ...

  6. Web开发常见的软件架构

    Web开发常见的软件架构 一.看需求分析,看产品PRD:Product Requirement Document 二.根据PRD和产品原型建数据库表,注意三范式要求,用工具到处数据库关系图,并快速地理 ...

  7. 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  8. [WebDev]Web 开发与设计师速查手册大全

    Cheat Sheet 一词在中文中并没有很贴切的对译,大概是考试作弊条一类的东西,这要求 Cheat Sheet 必须短小精悍又覆盖广泛,作为 Web 开发与设计师,免不了在工作时查询大量资料,某个 ...

  9. web前端开发最佳实践_学习前端Web开发的最佳方法

    web前端开发最佳实践 为什么要进行网站开发? (Why web development?) Web development is a field that is not going anywhere ...

  10. 有抱负的Web开发人员应考虑的6件事

    Becoming a web developer can be as challenging as working out every day. 成为网络开发人员就像每天锻炼一样具有挑战性. It's ...

最新文章

  1. Markdown 语法 示例 字体 字号 颜色
  2. 每个人都有一个“内外引擎”
  3. html 子框架刷新,webpack 热更新 只对改变 CSS 有效 改变 HTML 页面会刷新 没用其他框架。...
  4. (49)逆向分析KiSystemService/KiFastCallEntry调用内核函数部分(SST,SSDT,SSPT)
  5. php ob_flush 和flush
  6. OpenCV Mat-基本图像容器
  7. OpenCV-图像的基本处理-02
  8. Android开发之xml动画(补间动画)记录
  9. [密码学][困难问题][常见规约]密码学问题常见困难问题
  10. 远程主机访问mysql权限_如何给远程主机开启mysql远程登录权限
  11. 启动kafka报错:__consumer_offsets-22\00000000000000000000.index.swap: 另一个程序正在使用此文件,进程无法访问。
  12. 计算机丢失lib.dll,libprotobuf.dll
  13. 天融信的FTP服务器
  14. 【每日算法Day 93】不用额外空间,你会旋转一个矩阵吗?
  15. Memcache的最佳实践方案
  16. CEF3中js调用delphi内部方法
  17. 最大连续子序列和的问题
  18. hive sql 正则表达式
  19. VOC2007和VOC2012数据集下载地址
  20. dw什么运行php,php新手求助,为什么在DW中设计里能看到运行php程序的结果,但…...

热门文章

  1. 为生活加点料,用python帮你选择双色球号码
  2. 【Mark】组合逻辑电路
  3. 【Deep Learning 8】Self-Attention自注意力神经网络
  4. autoit3转换php,将Autoit转换为Python
  5. k8s中创建pv和pvc
  6. 2020年锅炉压力容器压力管道安全管理(限气瓶)证考试及锅炉压力容器压力管道安全管理(限气瓶)考试软件
  7. 【转】编译EDEM2018+Fluent19.0耦合接口
  8. javaweb JAVA JSP学校宿舍公寓管理系统(JSP宿舍管理系统)java寝室管理网站源码
  9. composer -vvv
  10. 移动网络玩外服游戏老是掉线?教你解决NAT类型严格的问题