Tuesday, June 26, 2007

桌面應用程式和網路應用程式

Written By John J. WU

這篇文章使我自己寫的

主要在介紹桌面應用程式和網路應用程式的區別:

以新視窗展開此篇文章

壹、摘要

鑒於近來RIA的蓬勃發展,我們必須更加了解桌面應用程式和網路應用程式(如JavaScript)的一些相關訊息。在本文當中,我們將會從兩種應用程式的特性談起,諸如其安全性、程式執行的方式等等。接著,再進一步比較兩者的優缺點,以及身為程式設計師,就程式設計上說來,我們應該注意哪些規範跟限制。最後,基於前面所做的一些比較跟探討,在未來的發展中,我們希望相關單位(W3C)等能更加致力於兩種程式的結合,讓使用者不管在桌面或是網路上的使用上,能更加多元、豐富。

貳、本文

近年來,RIA在資訊界廣為盛行。所謂的RIA (Rich Internet Application)是一種在網際網路上運行的應用程式,有著如同桌面應用程式的行為、功能、快速回應、直覺與體驗,也融合了網際網路應用程式容易開發與低成本的特性。RIA正是結合桌面應用程式與網路的優點,讓網站使用者能透過Flash生動活潑的人機介面,來使用各樣各式的網路應用服務,透過這個特性,RIA將成為未來網際網路上一個不可避免的趨勢。然而,在這之前,我們必須先了解桌面應用程式與網路介面程式的優缺點及設計開發,才能進一步研究RIA等應用程式。

首先,談到網路應用程式。網路「應用」程式的出發點,是希望能在不同硬體以及系統上執行的,在這裡我們以JavaScript為例。簡單的來說,JavaScript為一個Script language,它主要的功能在於提供網路上高階語言的控制。一般說來,JavaScript有以下幾個特色:

第一、 JavaScript是屬於跨平台的語言,也就是說,當你在撰寫JavaScript時,基本上你可不用去管今天是要放在什麼作業系統或者是要用什麼瀏覽器去觀看,因為JavaScript跟這些其實都沒有很直接的關係,只跟你的瀏覽器要怎麼去解釋或編譯有關。所以,不管今天你在Linux或是在Window用Firefox看,其實都是可以的。

第二、 JavaScript是一個Interpreted language。意思是說,JavaScript和Java一樣皆非以machine code的形式進行傳送,而是以中間碼的型式到了客戶端在進行轉換執行。也正因為如此,JavaScript和Java才都可以跨平台。

第三、 JavaScript為事件驅動的語言。換言之,當客戶端再視窗或網頁上啟動一個事件時,比方說按個按鈕或移動滑鼠,JavaScript才會被驅動,除非此網頁的JavaScript是在一開始載入時便開始執行,例如在網頁的body標籤中使用onLoad,但基本上這個也算是一種事件。

第四、 JavaScript沒有變數型態上的問題。它不像一般的程式語言,整數即整數,浮點數即浮點數,它的型態是不固定,因此相對來說較為簡單,但是當然也會引伸一些缺點。

因此,基於這些特色,JavaScript主要的優點在於它可以橫跨所有平台,要你的瀏覽器允許JavaScript載入並且可以正確無誤的解釋它,就可以將它執行。除此之外,它的其他優點還有安全性和開放性。以安全性來說,JavaScript如同一般的網路應用程式,它是不能對客戶端的系統進行資料的改寫或變動,當然對遠端也不能產生影響。而以開放型而言,JavaScript的檔案是開放原始碼的,所以基本上放在一個網頁上的JavaScript檔案,大家都可以觀看的到,所以當然也較沒隱私,可是也沒有侵犯隱私的問題。

反過來說,JavaScript的優點其實相對的也是其很大的缺點。拿跨平台和安全性來說,JavaScript之所以可以有這兩個優點,就是犧牲了其安全性所帶來的好處─不能對客戶端的系統進行資料的改寫或變動,因此,即使你可以提交HTML的網頁,但是這些送出去的封包資料並無法經由JavaScript進行處理傳送給伺服端,而必須以CGI(Common Gateway Interface)進行處理。此外,對於開放性這一點,JavaScript較不適合用於需要帳號密碼認證的網頁,因為這些資料一般都寫在JavaScript的.js檔中,很容易遭到破解,危險性高。所以,此種網頁便適合用php等網頁語言來撰寫。另外,由於JavaScript本身在客戶端才會被編譯,所以就即時性來說,可能會稍微差一點。

而對程式設計師來講,基於跨平台和安全性,在程式上便不能有讀寫的功能。值得一提的是,雖然說JavaScript為跨平台,但誠如前面所說的,JavaScript的執行和瀏覽器的解釋有關,因此,在MS Internet Explorer上面能執行的,在Mozilla、FireFox不見得能執行,例如:window.event.keyCode、offsetX等等,這是程式設計師所要考慮的。

其次,談到桌面應用程式。桌面應用程式不像網路應用程式,它不一定需要符合各種系統或是硬體的環境規格或標準。簡單來說,此種應用程式的出發點在於能快速的處理本地端的資料,至於本地端的系統支不支援,其實比較不在意。一般來說,桌面應用程式有以下一些特色:

第一、 桌面應用程式不一定要跨平台。所以,一般說來這類型的程式設 計都以C++或是C。這些語言在使用上,編譯時便直接轉成執行檔,因此,其對系統的依賴性便相當大。

第二、 桌面應用程式並非Interface language。換言之,它不像Java等還有中間碼,即使它在取出執行時需要經過解碼,但意義上不一樣。

第三、 桌面應用程式基本上也是「事件」啟動的。當我們安裝好軟體程式後,如同網路應用程式,其本身也是在等待我們運用滑鼠或鍵盤,將它開啟執行。舉個例子,當我們要使用MS Word時,我們會先在捷徑或圖示上按兩下,此時,CPU會透過Fetch、Decode、Execute三個步驟,從硬碟取出來,在透過GUI(Graphic User Interface)呈現在我們面前。

基於上述所說的,桌面應用程式當然也有其優缺點。其優點主要有即時性佳、資料安全性相對佳、對於硬體以及系統資源的使用直接且方便(效能或是應用考量)。逐一來說,由於桌面應用程式安裝在用戶端的電腦上,我們只要透過滑鼠、命令提示字元或DOS介面提供命令便可執行,即時性高,不必像Java還需要再轉成執行檔。而對資料安全來說,一般來說,在沒有網路的情形下,本地端的資料其實不會流傳出去。但是,對JavaScript或Java而言,當用戶將資料傳送出去時,程式高超的人很容易撰寫一支程式,將此封包攔截下來或是取得內部的資料。雖然說現在跨平台的語言如Java有增加認證的功能,但是還是有一定的風險存在,這也呼應到前面談到如果網頁有認證功能,需改用其他隱密性較高的語言較為安全。另外,基於它為本地端的程式,它可以直接對系統或硬碟進行存取或改寫的動作,如此一來,就效率來說會大大的提升。

接著,談到缺點。桌面應用程式最大的缺點在於它很容易遭到盜版(有版權的問題),和軟體的更新機制建立較為複雜。以市面上大大小小的軟體套件,盜版的數目眾多,流傳甚廣,且大部分的軟體(除了免費或是公開原始碼的之外)皆屬於某公司或人物的智慧財產,易有侵權的糾紛。而軟體更新的部分,主要有兩種方式:以光碟片的方式、以網路的方式。拿Windows Update來說,它是藉由網路來進行更新。也許你會說,它是藉由網路,那這樣算是屬於網路應用軟體。但其實不然,即使其是透過網路,它就功能上來說屬於系統程式,嚴格說來,它算是幫助使用者方便使用電腦而不是提供特殊應用的應用程式。

而對程式設計師來講,基於即時性和方便性,我們所需考慮的是這個程式所執行的速度以及使用介面的親近性。當然,此程式所佔的硬體大小也是我們該考慮的項目之一。此外,在設計之前,我們也必須清楚,這支程式所執行的平台為何,是在Linux、Window抑或是兩者皆可,這些都會影響工程師在撰寫上的指令限制跟方法。

總的來說,不管是網路應用程式或是桌面應用程式都有其優缺點,端看使用者是使用哪個部分以及站在哪個角度來看。而在不久的未來,將桌面程式與網路程式結合(RIA)的現象,會慢慢增加。雖然此可以介面可以提供如桌面應用程式一般,而且可能影響以後不需硬碟安裝等功能,但是其接受程度和親切感,以及使用的方便性仍需大眾決定。當然,我們也希望透過相關單位(如:W3C)等的整合開法,可是使我們不管是在桌面或是網路的使用化,可以更佳豐富、更加多元。

參、參考資料與文獻引用:

1. 吳信輝(無日期)。《資訊新知》:網頁技術的新趨勢—RIA(Rich internet application。民國96年6月14日,取自:http://www.ascc.sinica.edu.tw/nl/93/2019/02.txt

2. [WDC] 在桌面及 Web 執行應用程式(民國96年4月14日)。ericsk’s blog。民國96年6月14日,取自:http://blog.ericsk.org/archives/559

3. 陳沖、麦中凡(無日期)。JavaScript概述。民國96年6月14日,取自:http://www.netcity.net.cn/club/school/javascript/jsgenerl.htm


No comments: