什么是 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. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  2. Go web开发初探

    2017年的第一篇博客,也是第一次写博客,写的不好,请各位见谅. 本人之前一直学习java.java web,最近开始学习Go语言,所以也想了解一下Go语言中web的开发方式以及运行机制. 在< ...

  3. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  4. .NET Web开发技术简单整理

    在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...

  5. web 开发自动化grunt

    现在web开发自动化已很流行,如何进行压缩文件,如何进行测试js是否正确,如何进行 检测html文件是否规范等等都可以通过web自动化技术进行实现,只要打一个命令即可. 本文主要是通过grunt进行实 ...

  6. eclipse SE增加Web开发插件

    最近接触了些java项目,之前安装了eclipse SE版本.没有Web开发插件,调试不了Web代码.点击“Window”--“Preference” 左边菜单栏是找不到“Server”项来配置服务器 ...

  7. Web 开发中很实用的10个效果【附源码下载】

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  8. 12款简化 Web 开发的 JavaScript 开发框架

    前端框架简化了开发过程中,像 Bootstrap 和 Foundation 就是前端框架的佼佼者.在这篇文章了,我们编制了一组新鲜的,实用的,可以帮助您建立高质量的 Web 应用程序的 JavaScr ...

  9. Golang Web开发时前端出现谜之空白换行的坑

    在使用Golang做Web开发时,有时候渲染出来的模板在前台显示时会出现一些奇怪的空白换行,具体特征就是查看css样式表并没有相关定义的空白部分. 分析: 查看出现问题页面的网页源代码,复制空白换行部 ...

  10. 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法

    本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...

随机推荐

  1. CTF-练习平台-Misc之 又是一张图片,还单纯吗??

    四.又是一张图片,还单纯吗?? 经过前面的方法尝试后都没有发现flag,尝试另一种方法“图片隐藏文件分离”,打开虚拟机,运行kali,使用里面的一个工具binwalk 首先将图片拖到kali的桌面上, ...

  2. spring boot sso 学习资源

    diy: 关键字: springboot sso:public boolean preHandle(HttpServletRequest request, HttpServletResponse re ...

  3. Ubuntu 16.04下指定Sublime Text 3 默认python编译版本

    安装PackageResourceViewer插件 输入 Ctrl+Shift+P 输入install,选择Package Control: Install Package 选择PackageReso ...

  4. AGC014E Blue and Red Tree

    题意 There is a tree with \(N\) vertices numbered \(1\) through \(N\). The \(i\)-th of the \(N−1\) edg ...

  5. Servlet基本操作

    一.Servlet的请求流程 web项目中的web.xml文件配置为: <servlet> <!--别名--> <servlet-name>Hello</se ...

  6. 剑指offer-矩形覆盖-斐波那契数列(递归,递推)

    class Solution { public: int rectCover(int number) { if(number==0 || number==1||number==2) return nu ...

  7. hasura graphql-engine v1.0.0-alpha25 的几个方便功能

    hasura graphql-engine 是一个很不错的graphql 引擎,但是我们的数据模型经常可能会有变动, 但是以前的版本对于这些的处理,官方的方式是删除元数据,重启server,都不是很好 ...

  8. 遍历json 对象的属性并且动态添加属性

    昨天因为公司的一个需求,所以就研究了一下json对象的属性的遍历和动态修改: var person= { name: 'zhangsan', pass: '123' , 'sni.ni' : 'sss ...

  9. nyoj 光棍的yy

    655-光棍的yy 内存限制:64MB 时间限制:1000ms Special Judge: Noaccepted:2 submit:3 题目描述: yy经常遇见一个奇怪的事情,每当他看时间的时候总会 ...

  10. 常见MQ流行度比较

    MQ的流行度跟它的特性和应用场景密切相关,站在当下来看,kafka最火,rabbitmq用的也很多,ActiveMQ作为经典mq选择用它入门的也不少.