前言
2006年即將過去,這一年被廣泛地看作是:線上投資新浪潮的一年;更新的web技術和技巧興起和成長年;在採用web標準上增長年;從未這樣採用web能量的新商務模式的興起(和衰落)的一年。
從SitePoint和Ektron這兩家組織提供的調查報告預覽版中,其中的資料照射出在技術進化進程中的一絲亮光。大家不妨跟隨作者一起放眼遙望一下亮光周圍的風景,也許你會聽到自己的驚呼,請加入到對“未來”的預言中吧!嘗試一下網路對趨勢的影響力!
關於SitePoint和Ektron進行的2006/2007 web開發現況調查
2006/2007 Web開發現狀調查是在十年間致力於積極倡導和協助web開發人員、設計者和其它線上專業人員的SitePoint和Ektron共同進行的一項研究成果。
SitePoint是一家快速興起的線上媒體公司和面向web專業市場(尤其在web開發和設計領域)的資訊提供者。其網站:sitepoint.com,目前在全球web設計和開發>新聞和媒體分類的網站中排名列第一位,根據Alexa.com資料表明,其網站在全球排名位於前300名之內。Sitepoint.com的日訪問量可與一些主流媒體集團的網站所匹敵。
SitePoint論壇具有超過135000名註冊使用者,其新聞每月到達50萬份訂閱。SitePoint公司具有遍佈於174個國家的70000名客戶、試用產品的註冊使用者高達620000名,具有五大收入來源:廣告、贊助關係、基於內容的產品(包括線上和零售產品)、近來非常流行的視頻訂閱、分類列表和產業報告。
同樣,Ektron有限公司成立於1998年,作為以CMS400.NET和eWebEditPro產品線為依託的web內容管理軟體和web寫作工具的技術和市場領導者,這些軟體已經授權給千分之十的web專業人士,使他們更加高效地把web作為通訊和互動的有效平台。
SitePoint和Ektron兩者之間成熟的合作關係以及他們對web專業人士社團的支援,導致了在2006年初的idea:衡量在這兩個組織周邊的web開發人員和其他web從業人士這個福士群體,以便找出一個“時間快照”(snapshot in time)、量化web開發工具狀況、技術、技巧和趨勢。
在2006年6月15日至7月15日之間對5000名web從業人士進行了此項調查。我們相信這可能是有史以來最大規模的一次web開發人員調查,這次調查的深刻意義之一就是反映當前現實狀態和將要發生的變化。
Web標準的依從現狀
CSS——輕舞飛揚的頁面配置
圖-1 採用CSS進行布局的分布圖
評論:CSS布局不但對頁面具有減肥的效果,而且對於統一風格、代碼重用、瀏覽訪問、列印頗有益處:
1.加快下載速度:
CSS現在比表格更快:因為瀏覽器在顯示表格內容前讀取它們兩次,第一次完成它們的結構,第二次才確定它們的內容。
表格不能被部分地顯示,直到整個表格被下載和渲染完成後才被顯示出來。
通常,CSS代碼量少於笨重的表格。
所有的布局代碼都可以儲存到一個外部CSS檔案中,在使用者的瀏覽器中僅被調用一次而後被緩衝;而表格版面配置則必須在每個HTML文檔中儲存,並且在每次重新整理時被重新下載。
使用CSS可以控制CSS項的下載順序,這使在慢速的圖片下載完成之前使用者就可以閱讀內容。
2.被更廣泛地訪問:
通過手持功能的瀏覽web使用者數量正在與日俱增。在2008年PDA銷售量將達到5千8百萬(資料來源於eTForecast),世界三分之一的人口將擁有一台無線裝置(資料來源於ClickZ)。而你可以編寫專用於手持功能、額外的CSS文檔——這個CSS文檔內容可以取自以往的CSS文檔。
有關內容可以參考:j2mepolish 的CSS for J2ME文檔。
3.對搜尋引擎更加友好:
搜尋引擎在CSS驅動的頁面中爬行要比在簡單的HTML代碼來得更容易。這樣,搜尋引擎可以對web頁面進行更加有依據的猜測(比如:猜測頁面的內容),所以使用CSS布局的web頁面能夠在搜尋排行中擁有更高的排行。
有關內容可以參考:SE線上雜誌。
4.列印友好:
當使用者選擇列印頁面時,另一套可選的CSS文檔可以被調用,這個文檔可以規定格式、圖片、隱藏導航、校正顯示在列印版本中的頁面內容。
驗證HTML代碼——多重瀏覽器標準的穿越者
圖-2 應用web頁面驗證的分布圖
評論:服從web標準將引領web網站走向成功,更友好地與搜尋引擎“協作”、快速load頁面、減輕Server負載、相容眾多瀏覽器、吸引更廣泛的瀏覽量。
什麼是HTML 驗證(HTML validate)?
它是通過與標準HTML規則進行比較的方式,分析HTML文檔、標記出錯誤和非標準代碼的處理過程。Web頁面使用HTML進行渲染,而HTML本身採用了HTML規範作為其規則和標準。
這裡推薦兩個權威的HTML驗證線上服務:W3C的validator、WDG的validator。當然,在開發工具中的驗證工具更不勝枚舉:Dreamweaver內建驗證器、Eclipse的WSVT等。
1.Web網站訪問性:
驗證HTML代碼協助你找出那些微小的不規範之處,從而防止它們妨礙搜尋引擎爬蟲或者瀏覽者。這樣使你的網站獲得更多的瀏覽者、更廣泛的訪問裝置範圍(手持功能、文本瀏覽器、搜尋引擎等)。
2.對搜尋引擎友好:
清晰、明快的代碼可以使搜尋引擎更快、更完整地頁面中爬行。
3.更快速的裝載:
如果你的頁麵包含了HTML錯誤,它將花費搜尋引擎比較長的爬行時間,因此其排行位置也會變低。更加直觀的是——如果你的頁面在10秒內沒有裝載完畢,那麼瀏覽者可能會離開。
4.減少伺服器負載:
簡明的代碼不會像複雜的代碼或者包含內嵌表格的代碼那樣讓你的伺服器負擔加重。級聯CSS將減少代碼量,降低對web伺服器空間的需要和對頻寬的佔有量、節省伺服器的記憶體。
5.易於更新和維護網站:
無錯的頁面代碼利於修改,這對於網站設計者來講意味著節省時間和維護經費。
6.瀏覽器安全色性:
驗證代碼取保你的網站與當前的瀏覽器相相容。既然我們無法預見未來的瀏覽器標準,那麼驗證代碼就是把握未來瀏覽器標準的最佳方式。
7.更多的訪問者:
保證了瀏覽器安全色性,也就贏得了大量的瀏覽者,從而獲得更多的收益。
開發技術應用趨勢
XP技術——潛力無限,業已成為技術熱點
圖-3 在web開發工作中進行實踐的技術分布圖
評論:OOP仍然是主流技術,儘管MVC佔有不少的份額,但“使用者體驗才是產品的價值所在”這句話仍然得到了驗證。無論任何技術理論(包括MVC、Ajax、RoR等),凡是能夠高效地應用在快速開發、提高使用者體驗上的才是好技術。
Code review和Unit Testing都是極限編程(XP)中的概念,從圖表中的比例來講,讓我感到欣慰:在開發技術中XP結對程式設計的方法得到了比較廣泛的應用,希望國人也能更多的接受、應用它們。
什麼是Code Review:在起始開發階段對原始碼文法檢測,以期發現和修正錯誤、提高代碼品質的活動,常稱之為結對複查(peer review)。Code review經常可以發現和去除一些常見安全性漏洞,比如格式化字串攻擊、競爭條件、緩衝區溢位,因此提升了軟體的安全性。
什麼是Unit Testing:單元測試是一種用來驗證原始碼的某個模組是否工作正常的活動。而每個測試執行個體都彼此獨立;假對象(mock object)可以用於在隔離的環境下輔助測試某個模組。這樣做目的在於把程式的每個部分分割開來、驗證獨立的部分是否正確。
採用結對程式設計可以在QA測試之前捕捉、修正錯誤,但不僅如此:
1.它使最終的錯誤內容下降到讓人滿意的程度,這源於採用持續的code review。
2.採用頭腦風暴(brainstorm)和結對輪換(pair replay)使設計更加完善、代碼長度更短。
3.依靠結對輪換團隊解決問題更加迅速。
4.團隊成員能夠學習到關於系統和軟體開發的更多知識。
5.項目結束時,多個團隊成員能瞭解系統的每個部分。
6.成員在一起相互學習、談話,提供了更好的資訊流動和團隊動力。
7.成員更加享受他們的工作,更加擁有成就感。
這種方式尤其適用於缺少人手或者短缺昂貴的專業測試系統和QA的Team Dev。
工具流行趨勢
Dreamweaver——web開發工具中的王者
圖-4 web開發中採用的工具分布圖
評論:DW能力十足,無論對於web設計者還是開發人員來講都是很順手的工具,但其文法自動提示能力實在有限。而且對於開發人員而言,DW的超強編輯能力也註定了它overkill的宿命,這也是Text Editor和它平分秋色的原因之一。
VS功能強大,但其受到微軟語言的制肘,無法伸展開有力的上臂來擁抱各種開源語言。
這裡我要遺憾地感歎一下Eclipse WTP,它提供的HTML 編輯程式用上去還算可以,但相比之下相形見絀,不免有些雞肋之嫌,還需要進一步完善:
1.Eclipse WTP的優點:
在同一個IDE中支援Java, JavaScript和ActionScript等多種語言。
“All In One”的發布模式是它易於安裝。
概要視圖(Outline View)對方法和變數進行很好的組織。
對JavaScript function提供了代碼提示。
提供了對web頁面的驗證功能。
2.Eclipse WTP的缺點:
缺少本地或者線上文檔,甚至連說明檔案也沒有,非常不利於初學者使用。
語言支援(比如ASP)有限,擴充能力弱。使之支援其它語言就必須手工添加,也許這是HTML編輯器的通病。
概要視圖(Outline View)並不支援JavaScript的方法和類。
WTP沒有提供良好的頁面設計檢視。
WTP對頁面進行驗證效能不佳。
Web開發技術流行趨勢
PHP——高效、穩定的聖殿輕騎兵
圖-5 web開發語言平台分布圖
評論:很欣慰地看到作為“開源常青樹”的PHP獲得如此殊榮。由於PHP的高效、全能、強適應能力、強擴充能力,所以獲得了眾多開發人員的青睞。
同時作為傳統語言的ASP和JSP依然在勢均力敵的博弈,而春風得意的後生Ruby可謂潛力無限,當然這也得益於RoR的流行。但是從Ruby佔5.31%的比例來看,RoR還不是公司專屬應用程式開發的主流。
PHP何以如此紅火?
1.高效性:
基於C語言的特性已經使其具備了高效的潛質,再加上支援頁面模板技術的smart引擎、提供代碼重用能力的PEAR、可替代迴圈的Regex等,使其在伺服器端執行效率得到了加強。
2.應用範圍廣:
服務端指令碼——這是PHP的傳統領域,也是最主要的目標領域;
命令列指令碼——可以編寫一段 PHP 指令碼,並且不需要任何伺服器或者瀏覽器來運行它;
案頭應用——編寫可以利用PHP-GTK來編寫傳統型應用程式。
3.強適應能力:
使用PHP開發時不但可以自由地選擇作業系統和web伺服器,而且可以根據需要選擇使用面對過程和面對對象,或者兩者混和的方式來開發。
4.強擴充能力:
PHP 最強大最顯著的特性之一,是它支援很大範圍的資料庫。
PHP 還支援利用諸如 LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM(Windows 環境)等不計其數的協議的服務。
而且它具有極其有效文本處理特性,支援從 POSIX 擴充或者 Perl Regex到 XML 文檔解析。
如果將 PHP 用於電子商務領域,會發現其Cybercash、CyberMUT、VeriSign Payflow Pro等支付方式以及 MCVE 函數對於線上交易程式來說是非常有用的。
另外,eweek網站完成的《2006年10大應該學習語言》,也值得大家作為學習的參考:
1. PHP
2. C#
3. AJAX (Asynchronous JavaScript and XML)
4. JavaScript
5. Perl
6. C
7. Ruby and Ruby on Rails(RoR)
8. Java
9. Python
10. VB.Net (Visual Basic .Net)
彙總推動web運轉的車輪
圖-6 當前web應用項目的技術分布圖
評論:由此可見,經過僅僅2、3年的發展,彙總技術已經撐起了web前進的舵盤,隨之興起的AJAX、JavaScript、Blog、Wiki、Podcast也依靠彙總技術傳遍了世界每個角落。Flash雖然份額不小,但其也緩慢地轉向用戶端指令碼的方向以進一步提高優雅的使用者體驗。
回到我前面的原理:“使用者體驗決定了技術發展方向,而不是理論。”,彙總技術的興起必定帶動用戶端和服務端的技術提升。我相信未來幾年web屬於結構化blog和Feed網路:
結構化Blog(Structured Blog):
一種新興的、實驗性的Blog,它最終把資訊傳送到語義網(Semantic web)。尤其是它提供了自描述內容,這種自描述內容可以被輕鬆地植入到web網站或者Blog中,提供給Blog作者建立和彙總結構化資訊(比如評論、事件、媒體)的工具。
在傳統Blog記錄和結構化Blog記錄之間的不同之處——後者發布的內容是電腦可讀取的格式,其它的彙總服務可以理解它們,使用它們來生產事件日曆(calendars of events)、任務板(job boards)、書籍評論(book reviews)或者影視投票。當然,結構化Blog也遵循RSS和Atom標準。結構化Blog通常處理結構化的內容格式,比如微內容(microcontent)。
註:語義網(Semantic web):是在全球資訊網上,通過放置電腦可處理的文檔來進行資訊交換最終建立一個全球媒介的項目。目前語義網在全球資訊網協會Tim Berners-Lee先生的指導下,正通過使用標準、標記語言和相關的處理工具對web進行著擴充。
註:微內容(microcontent):微內容是一種以短小形式發布的資訊,它的長度受到了話題長度的限定和軟體的技術限制。
Feed網路(FeedMesh):
FeedMesh是一組用來建立“結對網路(peering network)”、完成對分散的web更新通知和內容發布的技術。採用web彙總的線上服務商,包括PubSub、Feedster、Technorati、Bloglines、Yahoo共同參加制定了一項共用weblog更新通知服務(“pings”時常見的一種更新通知服務方式)的標準。
它使blog作者和彙總發行者從中獲益:更快速的內容發布、可靠的可升級的通知服務。而對於線上服務的客戶來講,好處則是頻寬的節省和低延遲。
Ajax成為開發人員未來一年的學習趨向
圖-7 web開發人員希望從web或者出版物獲得技術的分布圖
評論:從分布圖來看,47%被調查的web開發人員通過web或者出版物來希望獲得更多的AJAX知識,而將近34%和29%的被調查者希望獲得XHTML/CSS和PHP的web文章或者書籍。
本人認為:"Web2.0之所以如此精彩,這正是web彙總(syndication)作用的結果。Blog、Wiki都被廣泛地應用在web寫作領域,而Blog比Wiki更流行,真是由於其更加易於彙總、推廣。彙總技術所依仗的便是RSS、Atom之類的標準,而這些標準的支援人員便是XHTML/CSS/XML,而AJAX為Blog、Wiki提供了完成優良的使用者體驗。"
在web業界的下一件重大事件將是什麼?
圖-8 在未來每個人都會在15分鐘成為大明星?
不妨讓我們瞭解一下SitePoint&Ektron調查報告中的福士觀點,也許看過之後,你也想說說自己idea:
{
—“即時虛擬3D視圖和網站導覽,你的滑鼠指標不僅可以在x、y軸上移動,而且還可以在網站的內部(z軸)移動。”
—“我想象不出下一件大事是什麼,而在向標準靠攏的趨勢下,利用有依據的技術和語義將協助我們在資源之間建立更加緊密牢靠地關係。”
—“我認為我們將繼續看到優雅性、功能性佔有統治地位。我認為那些現在‘熱’的東西將像時尚一樣過去,只有真正有功能的、可訪問的、具有市場的、有用的才會存在。”
—“你將不必為擷取資訊而搜尋web。只要定義你想要的和收集這些東西所用的web就可以坐等其成了,比如:我作為一名消費者,定義了我想購買的一台顯示器。這個資訊將被潛在的商品供應商所發布或者收集。而他們會提供給我產品資訊,使我輕鬆地購買他們的產品。”
—“以我的觀點看,未來(web3.0時代?)會關注內容、非功能性。這個網站可以提供給訪問者到達最深層內容的最輕鬆的訪問。而其它任何網站,包括複製其它網站做法的跟風(copy-cat)網站將繼續走老路。”
—“Fragrant網站採用XHTML2.5來驅動安裝在手機和PDA的USB棒或者植入到SD卡中的資訊素散發器。在數位相機上安裝可捕捉味道的擴充卡,拍照的同時還捕捉到了味道,這難道不是為網路上的圖片又增加了一個新特性嗎?在看食物圖片的同時,聞一下味道如何?然後在餐廳預定一下位置?哇,全新的平面+嗅覺廣告!”
—“我相信現在網路連接的速度這麼快,像video這樣的東西可以應用在電子商務網站和服務網站。直接和你的顧客面對面地交流、贏得他們的信任,讓他們知道你是誰。”
—“搜尋引擎將代替web和web的內容!越來越多的搜尋引擎和目錄會儲存web網站的內容,這樣就沒有人需要去真正的網站。”
—“在web領域的下一件大事是建立家族(或者繼承)的門戶(portal),家族成員或者繼承人在那裡一起建立一個家族網站。這些網站維護家族資訊——以數字格式儲存家族成員姓名、財產、相片等。這樣,全球氣候不會破壞或者抹去整個家族的記憶——它將被安全地儲存在冗餘伺服器上,並供奉在‘家族拱頂’頁面上。你將擁有關於自己家族和成員之間相互關係的巨大資料池。無論這個家族是否都居住在同一座城鎮、州縣或者同一個國家、甚至同一個星球上,通過照片和簡介上的連結可以直接獲得相關資訊。很cool吧!另外,可建立一個收費的服務:通過發送的口腔採樣藥籤(mouth swabs)來獲得與之匹配的家族成員的DNA序列。並且儲存這些資訊用來進行DNA比對等不時之需…”
}
cleverpig的Idea:
1.XM傳輸協議取代傳統的HTTP:“老舊的HTTP已經完全過時,它會被XMTP(eXtensible Markup Transport Protocol)所替代。這種XMTP是專為傳輸XML和彙總而設計,在資料轉送上突破了HTTP的瓶頸,而且更加安全。”
2.瀏覽器廠商制定“XML序列化/還原序列化”標準:主流的瀏覽器將在接收XML後進行解析,將XML還原序列化為支援JavaScript或者其它瀏覽器指令碼語言的Object,使client直接讀取伺服器push過來的資料,並將使用者的請求序列化發送到伺服器。
3.訂閱模式將轉變為“推送”模式:彙總程式不再是單調的周期性查詢服務器,而是伺服器上面維護一系列使用者訂閱列表,只要開啟瀏覽器便可以及時看到自己的訂閱資訊,無論何時何地,具備瀏覽器和訪問網路能力即可。並且這些訊息會跟隨伺服器的update而被push到client,有效地保證了資訊的及時性。建立上文提到的FeedMesh之上的彙總伺服器,專門提供資訊檢索、訂閱、推送,接收結構化Blog提交的新資訊。
4.瀏覽器更加智能:不但應有裝置範圍被擴充到行動裝置、電器,而且更加智能。比如可以通過設定電冰箱的購買策略,使其在食品放入時通過RFID掃描其條碼,記錄到期時間,並制定提醒功能,而在庫存量不足時在通過主人確認後自動發送給雜貨店的訂貨單。