什麼是 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.