2006年6月6日 星期二

Web 2.0的發展與迷思

發展
想想,我用網路用了多久了?
一開始的電話撥接BBS(trumpet winsock),
小學時開始有hinet撥接,而這持續了很久一陣子
國中時HTML,Mail開始有聽說,而開始風行
高中時是靠internet,FTP下載東西燒成CD
大學時大家靠internet來找作業...

我想這些都是小市民的過去,一定也是有一堆人跟我一樣過了類似的生活。

大一拿phpbb當作計概作業,不然就是上討論版找分享
大二時一堆討論版變成xoops
大三時google,yahoo購物無人不曉
大四時開始出現blog,wiki
大五的現在...web 2.0


你可以先看看這個連結,有一堆號稱是Web 2.0的應用。
http://web2.wsj2.com/the_best_web_20_software_of_2005.htm


我花了一整天,很疑惑究竟啥是web 2.0?
對很多人來說,你告訴他這個拯救了上以萬計的廣大.com,就如同我所想一樣,鴨子聽雷啦~。
我家又不是開.com,干我啥事?

所以,到底是誰在用網路?
不是.com,也不是Oreilly那群人,
而是正在看這篇文章的你,還打這篇文章的我。

Web本為人而生,加速人類的合作,交流。有人去用,才會是Web



你註冊了無名小站,勢必就是要在上面表現自己。你不會花了很多時間個人化之後,開始當作yahoo拍賣賣東西(除非賣東西本來就是你的目的)。
你裝了驢子,勢必就是要下載東西,同時也分享(分流)那些東西。你不會裝了驢子就將他擺在那吧?

因為有你在使用,也更能夠促進其他更多的人也一起使用,用得更方便。不管是怎樣的應用,你的貢獻,就是大家的貢獻。你想說的話,其實也是很多人想說的話。你在做的事,也是很多人在做的事。

Web Services
所以,如果眾人的需求,能夠變成「服務」,如果眾人的「構思」能變成資料庫裡的資料...
加上「廠商」開發的「網頁介面」,以及「媒體」的宣傳,我認為這是現在Oreilly那群人提出來的Web 2.0的構想。

而我在之前幾年接受的Web Services的原始構想,其實也是這個層次,只是後來發展成「非人」的本質。

將資料庫裡的「資料」,利用「SOAP」提供的物件交換方式,還有「UDDI」進行搜尋,利用「Framework」提供的開發功能撰寫成「Web Services」


廠商就是那些Framework,每種程式語言皆有他們撰寫Web Services的方式,所以你也可能會去用xuite或是無名。
UDDI就像是媒體,也可以說是傳播策略。幫助你分享你的資料,傳遞你的訊息,讓別人知道你的存在。SOAP就像是好用的網頁介面,幫助你方便清楚地寫出你的想法。
當然資料...都在資料庫或腦袋裡啦。

所以兩者的差異,就是一個是為了人,一個是為了機器(程式)。

直到今天我才有這樣的一個領悟,發現W3C一直在進行的就是資料傳遞,為了這個他們構思了不少底層的協定,而且也確實有很多人前仆後繼地實做各種語言的平台或系統。所造成的也的確是Web 1.0的成果,Web 2.0的效應可能比想像中的還要可怕,能寫應用程式的人可能不多,可是腦袋裡有一堆idea無處可發表的人倒是一大堆。Web 2.0的觀念就是用簡單的平台,讓這些人可以快速地把思考(資料)組合(運算)在一起。

我換個比較學術的角度看。

在Web 1.0的時候,強調的是分散式的資料儲存,因為單一節點資料經常會是從別人那來。也就是你的網頁裡常會有超連結,眾多的網頁節點和超連結形成一個分散式儲存系統。

而在Web 2.0的時候,已經不單是節點資料的儲存。節點可以自行儲存資料,或進行複雜的處理之後,又被另一個節點以功能性的呼叫使用。例如說,一堆人用盡他們的心思(資料)在wiki上撰寫(運算),可是我卻可以輕鬆用一個URL便取用他們用盡心思的成果(取用)。很多網站都有他們的新聞(資料),可是我卻可以找人或寫個程式定期將這些新聞分類(運算),然後提供一個讓你閱讀分類新聞的服務(取用)。

而我提出這個基礎概念,也是希望看到本篇的讀者比較可以分出商業化的Web 2.0或是貨真價實的Web 2.0所不一樣的地方。打著Web 2.0的名號,出現許多新技術,新概念,連UI也強調是Web 2.0,而真正得以長久運行的概念卻是相當關鍵。有人說現在才是2.0,事實上2.0早就已經存在。想要搭順風車的廠商們,還是得先想清楚這是什麼再下手跟進吧!免得又是一波電子商務泡沫化潮流了!

我想真正的Web 2.0對使用者應該:
1. 有能力讓使用者輕鬆地連結外部資源或服務
2. 有能力讓使用者選擇他要開放什麼服務
3. 有能力讓使用者擴充或自訂使用者介面
Web 2.0的平台對程式設計師應該:
1. 任何儲存的資料可以變成XML,並且透過URL呼叫取得
2. 有能力擴充資料交換協定(base on xml)
3. 預先提供和不同的Web技術交換資料的方式



實做層面


為了理解Web 2.0的平台就是是怎樣被開發出來的,我花了些時間研究以Web為主的程式語言,其Framework是怎樣發展的。



首先是程式語言,可以發現,越簡單好寫的語言越是當道。你會說,難道Java不好寫嗎?J2EE不好用嗎?
並不是沒有用jsp寫的blog,但是可以看見的,php這種直譯式預言不需要學太複雜的framework和語法,只要簡單的apache+mod_php就可以撰寫,因此大幅度提升普及度。

再來是HTML,其實應該直接討論URL。早期任何CGI程式的撰寫,不管是php或是perl也好,要傳遞參數基本上不是用GET就是用POST。而只是控制程式的功能(傳遞功能參數),會比較傾向使用GET,你總不會為了讓討論區從樹狀模式換成平版模式,就放一個HTML hidden tag在那邊吧?所以post是用來傳遞與程式無關的使用者資料居多,例如說表單。可是有了Wiki之後,URL很明顯地被視作功能來使用,而你現在在看的wordpress也是。

例如說:
http://主機/查詢/單字
http://主機/文章/RSS

雖然是藉著apache mod_rewrite的功能,以前也不是沒有人這樣做過,但是概念上,你的「主機」已經開始被視作功能性的呼叫,也就是Web Services。如果我們加入物件導向的觀念,URL可以當作
http://namespace/class/static method(/argument)
例如說本篇文章
http://namespace:kiwi.csie.chu.edu.tw/class:archive/object:id=47
你要本篇文章的RSS
http://namespace:kiwi.csie.chu.edu.tw/class:archive/object:id=47/feed

這個東西好像在哪裡看過...
對了,就是Ruby On Rails!
http://namespace/Controller/Method

也就是說URL使得MVC的可以很快速地理解且實做,儘管這也是MVC中的View而已。

php和MVC
大概在今年年初,我正式開始投入php的開發中。儘管以往也有php的開發經驗,不過並沒有深度的思考和應用。就我以前的瞭解,php的設計師們大多無法接受rapid development或是software framework的觀念,也是因為深怕那些東西一學,就會產生依賴性。但是smarty一陣子的風行,卻改變這個觀念,其實在smarty之前也早就有想法想將php糾纏已久的M,V,C程式碼分開。而從4版到5版,php官方卻證實了這一點,php如果要長久生存,不能只是個dynamic script language,物件導向,MVC Model皆是趨勢。而php的設計師們若無法接受,勢必被淘汰。

有五個令人期待的php mvc framework可以參考


http://sohotx.com/mzk/index.php/1007/ArticleContent/317.html

1 則留言 :