web程序開發(fā)概述

2024-03-23    分類: 網(wǎng)站建設

說到web程序開發(fā),必須先來說說什么是web應用程序。

Web應用程序是互聯(lián)網(wǎng)的產(chǎn)物。網(wǎng)絡誕生以前,軟件程序只能部署在單機上。局域網(wǎng)發(fā)明后,客戶端/服務器端(即c/s模式)的程序架構模式成為主流,隨著Internet和WWW的流行,以往的主機/終端和C/S都無法滿足當前的全球網(wǎng)絡開放、互連、信息隨處可見和信息共享的新要求,于是就出現(xiàn)了B/S型模式,即瀏覽器/服務器結構。它是C/S架構的一種改進,可以說屬于三層C/S架構。主要是利用了不斷成熟的WWW瀏覽器技術,用通用瀏覽器就實現(xiàn)了原來需要復雜專用軟件才能實現(xiàn)的強大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構造技術。通俗來講,web程序是一種運行在互聯(lián)網(wǎng)上的程序,它借助瀏覽器來運行,通過Web來訪問。Web應用程序大好處是用戶只需要有瀏覽器就可以訪問,不需要再安裝其他軟件。

B/S模式是web程序的重中之重,理解了B/S模式就理解了web程序,所以我們要著重講講,下圖是B/S的架構圖:

相對于其他幾種應用程序體系結構,B/S架構的web應用程序大的優(yōu)點是總體擁有成本低、維護方便、 分布性強、開發(fā)簡單,可以不用安裝任何專門的軟件就能 實現(xiàn)在任何地方進行操作,客戶端零維護,系統(tǒng)的擴展非常容易,只要有一臺能上網(wǎng)的電腦就能使用。傳統(tǒng)的C/S架構如果部署的客戶端比較多,系統(tǒng)管理人員如果需要在眾多電腦之間來回奔跑,效率和工作量是可想而知的,但B/S架構的軟件只需要管理服務器就行了,所有的客戶端只是瀏覽器,需要做的維護非常少。無論用戶的規(guī)模有多大,有多少分支機構都不會增加任何維護升級的工作量,所有的操作只需要針對服務器進行;如果是異地,只需要把服務器連接專網(wǎng)即可,實現(xiàn)遠程維護、升級和共享。

當然,Web應用程序首先是應用程序,和用標準的程序語言,如C、C++、DELPHI等語言編寫出來的程序沒有什么本質上的不同。

下面我重點來說說web開發(fā)技術的演化

靜態(tài)網(wǎng)頁的誕生(HTML)

1989年,在歐洲粒子物理實驗室的IT部門工作的Tim Berners-Lee向其領導提出了一項名為Information Management: A Proposal的提議:使來自世界各地的遠程站點的研究人員能夠組織和匯集信息,在個人計算機上訪問大量的科研文獻,并建議在文檔中鏈接其他文檔,這就是Web的原型。1991年,Tim Berners Lee在alt.hypertext新聞組貼出了一份關于World Wide Web的簡單摘要,標志了Web頁面在Internet上的首次登場。最早Web主要被一幫科學家們用來共享和傳遞信息,全世界的Web服務器也就幾十臺。第一個Web瀏覽器是Berners Lee在NeXT機器上實現(xiàn),也只能跑在NeXT機器上,蘋果和喬布斯的粉絲對NeXT的歷史肯定耳熟能詳。真正使得Web開始流行起來的是Mosaic瀏覽器,這便是曾經(jīng)大名鼎鼎的Netscape Navigator的前身。Berners Lee在1993年建立了萬維網(wǎng)聯(lián)盟(World Wide Web Consortium,W3C),負責Web相關標準的制定。瀏覽器的普及和W3C的推動,使得Web上可以訪問的資源逐漸豐富起來。這個時候Web的主要功能就是瀏覽器向服務器請求靜態(tài)HTML信息。95年的時候馬云在美國看到了互聯(lián)網(wǎng),更準確的說他其實看到的就是Web,阿里早先做的黃頁也就是把企業(yè)信息通過進行HTML展示的Web應用。

在互聯(lián)網(wǎng)早期,網(wǎng)站只是簡單的信息呈現(xiàn),網(wǎng)民不能與網(wǎng)站互動,通俗的說就是能看不能寫,后來人們把這個時期叫做web1.0時代。

動態(tài)內容的出現(xiàn):CGI

最初在瀏覽器中主要展現(xiàn)的是靜態(tài)的文本或圖像信息,GIF圖片則第一次為HTML頁面引入了動態(tài)元素。不過人們已經(jīng)不僅僅滿足于訪問放在Web服務器上的靜態(tài)文件,JavaScript誕生之后,可以用來更改前端DOM的樣式,實現(xiàn)一些類似于時鐘之類的小功能。那時候的JavaScript僅限于此,大部分的前端界面還很簡單,顯示的都是純靜態(tài)的文本和圖片。這種靜態(tài)頁面不能讀取后臺數(shù)據(jù)庫中的數(shù)據(jù),1993年CGI(Common Gateway Interface)出現(xiàn)了,Web上的動態(tài)信息服務開始蓬勃興起。CGI定義了Web服務器與外部應用程序之間的通信接口標準,因此Web服務器可以通過CGI執(zhí)行外部程序,讓外部程序根據(jù)Web請求內容生成動態(tài)的內容。Perl因為跨操作系統(tǒng)和易于修改的特性成為CGI的主要編寫語言。當然,CGI可以用任何支持標準輸入輸出和環(huán)境變量的語言編寫,比如Shell腳本,C/C++語言,只要符合接口標準即可。比如你用C語言編寫CGI程序,你把希望返回的HTML內容通過printf輸出就可以發(fā)送給Web服務器,進而返回給用戶。

Web編程腳本語言:PHP/ASP/JSP

為了使得Web更加充滿活力,以PHP、JSP、ASP.NET為代表的動態(tài)頁面技術相繼誕生。這個時候我們已經(jīng)可以在Web上提供動態(tài)功能了,比如網(wǎng)站訪問的計數(shù),表單的處理。CGI對每個請求都會啟動一個進程來處理,因此性能上的擴展性不高。另外,想象一下用在Perl和C語言中的程序中去輸出一大堆復雜的HTML字符串,是不是有點蛋疼,可讀性和維護性是個大問題。為了處理更復雜的應用,一種方法是把HTML返回中固定的部分存起來(我們稱之為模版),把動態(tài)的部分標記出來,Web請求處理的時候,你的程序先生成那部分動態(tài)的內容,再把模版讀入進來,把動態(tài)內容填充進去,形成最終返回。舉個例子,搜索一個關鍵詞,搜索引擎的Web服務器可以先從后臺索引服務器里拿到數(shù)據(jù),然后把這些數(shù)據(jù)填充到返回結果的HTML模版中,返回給瀏覽器。但是這件事情自己來做顯然太繁瑣而且是重復勞動。于是1994年的時候,PHP誕生了,PHP可以把程序(動態(tài)內容)嵌入到HTML(模版)中去執(zhí)行,不僅能更好的組織Web應用的內容,而且執(zhí)行效率比CGI還更高。之后

PHP(PHP:Hypertext Preprocessor)最初是由Rasmus Lerdorf在1995年開始開發(fā)的,現(xiàn)在PHP的標準由PHP Group維護。PHP是一種開源的通用計算機腳本語言,尤其適用于網(wǎng)絡開發(fā)并可嵌入HTML中使用。PHP的語法借鑒吸收C語言、Java和Perl等流行計算機語言的特點,易于一般程序員學習。PHP的主要目標是允許網(wǎng)絡開發(fā)人員快速編寫動態(tài)頁面。

JSP(JavaServer Pages)是由Sun公司倡導和許多公司參與共同創(chuàng)建的一種使軟件開發(fā)者可以響應客戶端請求,從而動態(tài)生成HTML、XML或其他格式文檔的Web網(wǎng)頁的技術標準。JSP技術是以Java語言為基礎的。1999年,JSP1.2規(guī)范隨著J2EE1.2發(fā)布。

ASP(Active Server Pages)1.0是Microsoft(微軟公司)開發(fā)的服務器端腳本環(huán)境,可用來創(chuàng)建動態(tài)交互式網(wǎng)頁并建立強大的web應用程序。 在1996年隨著IIS 3.0 而發(fā)布。2002年,ASP.NET發(fā)布,用于替代ASP。

隨著這些動態(tài)服務器頁面技術的出現(xiàn),頁面不再是靜止的,頁面可以獲取服務器數(shù)據(jù)信息并不斷更新。以Google為代表的搜索引擎以及各種論壇相繼出現(xiàn),使得Web充滿了活力。

分布式企業(yè)計算平臺:J2EE/.Net

Web開始廣泛用于構建大型應用時,在分布式、安全性、事務性等方面的要求催生了J2EE(現(xiàn)在已更名為Java EE)平臺在1999年的誕生,從那時開始為企業(yè)應用提供支撐平臺的各種應用服務器也開始大行其道。Java Servlet、Java Server Pages (JSP)和Enterprise Java Bean (EJB )是Java EE中的核心規(guī)范,Servlet和JSP是運行在服務器端的Web組件,EJB運行在服務器端的業(yè)務組件,是一種分布式組件技術。

從Web誕生至2005年,一直處于后端重、前端輕的狀態(tài)。

前端技術的發(fā)展:

XHTML

1999 W3C 發(fā)布 HTML 4.01 標準,同年微軟推出用于異步數(shù)據(jù)傳輸?shù)?ActiveX,隨即各大瀏覽器廠商模仿實現(xiàn)了 XMLHttpRequest(AJAX 雛形)。

2000: W3C 采用了一個大膽的計劃,把 XML 引入 HTML,XHTML1.0 作為 W3C 推薦標準發(fā)布

2001.5 W3C 推出了 CSS 3.0 規(guī)范草案

2002-2006 XHTML 2.0 最終放棄

2009 W3C 宣布 XHTML2.0 不再繼續(xù),宣告死亡

JavaScript

Web應用同時涉及到瀏覽器端和服務器端,之前的介紹除了簡單提到了CSS規(guī)范之外,主要關注的是服務器端的技術發(fā)展。在客戶端,1995年NetScape公司設計的JavaScript被用作瀏覽器上運行腳本語言為網(wǎng)頁增加動態(tài)性。微軟隨后推出類似JScript,但是缺乏統(tǒng)一的語言規(guī)范,使得瀏覽器兼容性成為一個程序員的夢魘。JavaScript最終被提交到歐洲計算機制造商協(xié)會(ECMA),做為中立的ECMA開始了標準化腳本語言之路,并將其命名為ECMAScript。JavaScript可以響應瀏覽器端的用戶事件,檢測表單的正確性,動態(tài)修改HTML頁面結構DOM,因此可以減少與服務器端的通信開銷,并且做出很酷的頁面動態(tài)效果。2005年出現(xiàn)的AJAX這個概念使得JavaScript再次大放異彩。

ECMAScript6

JavaScript語言是ECMAScript標準的一種實現(xiàn),截止2017年2月,ECMAScript一共發(fā)布了7個版本。

1997年6月, ECMAScript 1.0標準發(fā)布。

1998年6月,ECMAScript 2.0發(fā)布。

1999年12月,ECMAScript 3.0發(fā)布。

2007年10月,Mozilla主張的ECMAScript 4.0版草案發(fā)布,對3.0版做了大幅升級,該草案遭到了以Yahoo、Microsoft、Google為首的大公司的強烈反對,JavaScript語言的創(chuàng)造者Brendan Eich和IE架構師Chris Wilson甚至在博客上就ES4向后兼容性問題打起了口水仗,最后由于各方分歧太大,ECMA開會決定廢棄中止ECMAScript 4.0草案。經(jīng)各方妥協(xié),在保證向下兼容的情況下,將部分增強的功能放到ECMAScript 3.1標準中,將原有ECMAScript 4.0草案中激進的功能放到以后的標準中。不久,ECMAScript 3.1就改名為ECMAScript 5。

2009年12月,本著Don’t break the web原則,ECMAScript 5發(fā)布。新增了strict模式、屬性getter和setter等。

2011年6月,ECMAScript 5.1發(fā)布。

2015年6月,ECMAScript 6.0發(fā)布。該版本增加了許多新的語法,包括支持let、const、Arrow function、Class、Module、Promise、Iterator、Generator、Set、Map、async、Symbol、Proxy、Reflect、Decorator等。TC39委員會計劃以后每年都發(fā)布一個新版本的ECMAScript,所以ECMAScript 6.0改名為ECMAScript 2015。

2016年6月,在ECMAScript 2015的基礎上進行了部分增強,發(fā)布了ECMAScript 2016。

在ECMAScript的各個版本中,ECMAScript 6.0無疑最受人矚目的,它增加了許多新特性,極大拓展了JavaScript語法和能力,以至于許多瀏覽器都只能支持部分ES6中的新特性。隨之,Babel和TypeScript逐漸流行起來,編寫ES6代碼,然后用Babel或TypeScript將其編譯為ES5等瀏覽器支持的JavaScript。

ECMAScript以后每年將會發(fā)布一個新版本,這無疑將持續(xù)促使瀏覽器廠商不斷為JavaScript注入新的功能與特性,JavaScript走上了快速發(fā)展的正軌。

javascript技術發(fā)展的過程中出現(xiàn)了很多優(yōu)秀的類庫和組件,其中,jQuery獨領風騷,幾乎成了所有網(wǎng)站的標配。Dojo、YUI、ExtJS等提供了很多組件,這使得開發(fā)復雜的企業(yè)級Web應用成為可能。

AJAX

在Web最初發(fā)展的階段,前端頁面要想獲取后臺信息需要刷新整個頁面,這是很糟糕的用戶體驗。

AJAX即Asynchronous JavaScript and XML(異步的JavaScript與XML技術),指的是一套綜合了多項技術的瀏覽器端網(wǎng)頁開發(fā)技術,可以基于JavaScript的XmlHttpRequest的用于創(chuàng)建交互性更強的Web應用。AJAX是一種已有技術的mashup,多種技術組合在一起形成了其特色和優(yōu)勢,早在1998年就已經(jīng)開始有人使用。Google在地圖和Gmail等產(chǎn)品中對這項技術的深入應用,以及AJAX這個吸引眼球的名字的提出,使其正式站在了聚光燈下,開始吸引無數(shù)人的目光。我們知道Web應用中用戶提交表單時就向Web服務器發(fā)送一個請求,服務器接收并處理傳來的表單,并返回一個新的網(wǎng)頁。而前后兩個頁面中的往往大部分HTML代碼是一樣的,每次都返回整個頁面內容是一種帶寬資源的浪費。而AJAX應用僅向服務器發(fā)送并取回必須的數(shù)據(jù),并在客戶端采用JavaScript處理來自服務器響應,更新頁面的局部信息。這樣不僅瀏覽器和服務器的數(shù)據(jù)交換大大減少,而且客戶端也可以更加快速地響應用戶操作。如果你用Gmail就應該知道,Gmail從來都不刷新頁面,所有的請求都是通過AJAX獲取數(shù)據(jù)進行局部更新。AJAX的出現(xiàn),以及諸如EXTJS、DOJO等一些前端開發(fā)框架的出現(xiàn),也使得單頁應用(Single Page Application)在這個時候流行起來。

隨著AJAX的流行,越來越多的網(wǎng)站使用AJAX動態(tài)獲取數(shù)據(jù),這使得動態(tài)網(wǎng)頁內容變成可能,像Facebook這樣的社交網(wǎng)絡開始變得繁榮起來,前端一時間呈現(xiàn)出了欣欣向榮的局面。

AJAX使得瀏覽器客戶端可以更方便地向服務器發(fā)送數(shù)據(jù)信息,這促進了Web 2.0的發(fā)展。

HTML5

1999年,W3C發(fā)布了HTML 4.0.1版本,在之后的幾年,沒有再發(fā)布更新的Web標準。隨著Web的迅猛發(fā)展,舊的Web標準已不能滿足Web應用的快速增長。

2004年6月,Mozilla基金會和Opera軟件公司在萬維網(wǎng)聯(lián)盟(W3C)所主辦的研討會上提出了一份聯(lián)合建議書,其中包括Web Forms 2.0的初步規(guī)范草案。建議舉行一次投票,以表決W3C是否應該擴展HTML和DOM,從而滿足Web應用中的新需求。研討會最后以8票贊成,14票反對否決此建議,這引起一些人的不滿,不久后,部分瀏覽器廠商宣布成立網(wǎng)頁超文本技術工作小組(WHATWG),以繼續(xù)推動該規(guī)范的開發(fā)工作,該組織再度提出Web Applications 1.0規(guī)范草案,后來這兩種規(guī)范合并形成HTML5。2007年,獲得W3C接納,并成立了新的HTML工作團隊。2008年1月22日,第一份正式草案發(fā)布。

盡管HTML5在網(wǎng)絡開發(fā)人員中非常出名了,但是它成為主流媒體的一個話題是在2010年的4月,當時蘋果公司的CEO喬布斯發(fā)表一篇題為對Flash的思考的文章,指出隨著HTML5的發(fā)展,觀看視頻或其它內容時,Adobe Flash將不再是必須的。這引發(fā)了開發(fā)人員間的爭論,包括HTML5雖然提供了加強的功能,但開發(fā)人員必須考慮到不同瀏覽器對標準不同部分的支持程度的不同,以及HTML5和Flash間的功能差異。

在第二次瀏覽器大戰(zhàn)中,各個瀏覽器廠商都以提升JavaScript運行效率和支持HTML5各種新特性為主要目標,促進了瀏覽器的良性競爭。

Node.js的爆發(fā)

早在1994年,Netspace就公布了其Netspace Enterprise Server中的一種服務器腳本實現(xiàn),叫做LiveWire,是最早的服務器端JavaScript,甚至早于瀏覽器中的JavaScript。對于這門圖靈完備的語言,Netspace很早就開始嘗試將它用在后端。

微軟在1996年發(fā)布的IE 3.0中內嵌了自己的JScript語言,其兼容JavaScript語法。1997年年初,微軟在它的服務器IIS 3.0中也包含了JScript,這就是我們在ASP中能使用的腳本語言。

1997年,Netspace為了用Java實現(xiàn)JavaScript而創(chuàng)建了Rhino項目,最終Rhino演變成一個基于Java實現(xiàn)的JavaScript引擎,由Mozilla維護并開源。Rhino可以為Java應用程序提供腳本能力。2006年12月,J2SE 6將Rhino作為Java默認的腳本引擎。

SpiderMonkey是Mozilla用C/C++語言實現(xiàn)的一個JavaScript引擎,從Firefox 3.5開始作為JavaScript編譯引擎,并被CouchDB等項目作為服務端腳本語言使用。

可以看到,JavaScript最開始就能同時運行在前后端,但是在前后端的待遇卻不盡相同。隨著Java、PHP、.Net等服務器端技術的風靡,與前端瀏覽器中的JavaScript越來越流行相比,服務端JavaScript逐漸式微。

Node.js的出現(xiàn)吸引了很多前端開發(fā)人員開始用JavaScript開發(fā)服務器代碼,其異步編程風格也深受開發(fā)人員的喜愛。Node.js的偉大不僅在于拓展了JavaScript在服務器端的無限可能,更重要的是它構建了一個龐大的生態(tài)系統(tǒng)。2010年1月,NPM作為Node.js的包管理系統(tǒng)首次發(fā)布。開發(fā)人員可以按照CommonJS的規(guī)范編寫Node.js模塊,然后將其發(fā)布到NPM上面供其他開發(fā)人員使用。目前NPM具有40萬左右的模塊,是世界上大的包模塊管理系統(tǒng)。2016年常見包管理系統(tǒng)模塊數(shù)量,NPM高居榜首

Node.js也催生了node-webkit等項目,用JavaScript開發(fā)跨平臺的桌面軟件也成為可能。Node.js給開發(fā)人員帶來了無窮的想象,JavaScript大有一統(tǒng)天下的趨勢。

前后端分離 (前端框架+后端MVC+WebAPI)

后端框架主要分為j:ava和.NET兩大平臺

現(xiàn)今最流行的框架:

java架:SSM(spring+springmvc+mybatis)

前端MMVM框架

隨著開發(fā)人員對前端技術的重視和html5等技術的流行,前端不再是人們眼中的小玩意,以前在C/S中實現(xiàn)的桌面軟件的功能逐步遷移到了前端,前端的代碼邏輯逐漸變得復雜起來。

移動Web和Hybrid App

移動瀏覽器對HTML5支持程度(2009-2017)

移動瀏覽器的發(fā)展,導致了流量入口逐漸從PC分流到移動平臺,這是Web發(fā)展的新機遇。移動Web面臨著更大的碎片化和兼容性問題,jQuery Mobile、,Sencha Touch、Framework7、Ionic,bootstrap等移動Web框架、響應式框架也隨之出現(xiàn)。

相比于Native App,移動Web開發(fā)成本低、跨平臺、發(fā)布周期短的優(yōu)勢愈發(fā)明顯,但是Native App的性能和UI體驗要遠勝于移動Web。移動Web與Native App孰優(yōu)孰劣的爭論愈演愈烈,在無數(shù)開發(fā)者的實踐中,人們發(fā)現(xiàn)兩者不是替代關系,而是應該將兩者結合起來,取長補短,Hybrid技術逐漸得到認同。Hybrid技術指的是利用Web開發(fā)技術,調用Native相關API,實現(xiàn)移動與Web二者的有機結合,既能體現(xiàn)Web開發(fā)周期短的優(yōu)勢,又能為用戶提供Native體驗。

結語

Web技術依然在快速發(fā)展,Web本身的基礎規(guī)范也在不斷完善,HTML5、es6和CSS3引入了更多激動人心的特性?;仡橶eb的發(fā)展歷史,從某個角度看,就是抽象層次不斷提高的一個過程,更高的抽象層次屏蔽更低層的復雜性,從而提高開發(fā)效率。每當技術發(fā)展到一定程度,出現(xiàn)某些局限性的時候,就會有更優(yōu)秀的技術出現(xiàn)來突破這些局限性。其實這是計算機技術發(fā)展的一個普遍規(guī)律,比如高級語言的出現(xiàn)屏蔽了匯編語言的復雜性,幫助我們更快速的編程;數(shù)據(jù)庫技術的出現(xiàn)使得我們無需關心物理存儲和訪問細節(jié),寫簡單的SQL語句就能搞定,更進一步,ORM框架使得我們通過一條語句調用一個類的一個方法就能方便就行數(shù)據(jù)操作。我們應該讓自己的技術視野具備一定的高度和廣度,看到一門技術的發(fā)展規(guī)律和發(fā)展歷程,這是一種技術修養(yǎng)的體現(xiàn),其實跟人文修養(yǎng)是一樣的。同時也應該具有一定的深度,因為我們往往站在比較高的抽象層次,比如今天你寫幾行代碼就能把數(shù)據(jù)庫創(chuàng)建好,增刪改查的功能也自動生成好了,但是成為高手需要你對底層的原理機制有更透徹的理解,真正遇到問題的時候才能抽絲剝繭迎刃而解。

非常感謝您讀完創(chuàng)新互聯(lián)的這篇文章:"web程序開發(fā)概述",僅為提供更多信息供用戶參考使用或為學習交流的方便。我們公司提供:網(wǎng)站建設、網(wǎng)站制作、官網(wǎng)建設、SEO優(yōu)化、小程序制作等服務,歡迎聯(lián)系我們提供您的需求。

網(wǎng)站標題:web程序開發(fā)概述
分享路徑:http://bm7419.com/news16/321516.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、軟件開發(fā)、標簽優(yōu)化、外貿建站企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司