Application在胖瘦之間

資策會數位教育研究所講師 王芳芳

 

「天下大勢分久必合、合久必分」,應用程式的架構也循此模式在集中與分散之間循序演進

目錄
I.Application 的演進
II. 選擇何種Application
III.部署 Smart Client 應用程式
IV. 結語

I. Application 的演進:

Thin Client    -> Rich Client   ->   Thin Client    ->   Smart Client (回到 Rich Client)

Client 類型
Thin Client
Rich Client
Thin Client
Smart Client
(回到 Rich Client)
特色
資料與計算能力,集中在後端的大型主機。


傳統Rich Client - 從個人桌上型電腦PC 上發展出Client/Server 應用程式 / 三層式或多層式的主從架構

網際網路大幅起飛,應用程式的架構又演進到類似之前的集中式架構,將所有的運算能力與資料集中在Web 伺服器上,而透過瀏覽器建構起所謂的 Web 應用程式。根據 Gartner Group 統計,目前新應用程式的開發有大約 70% 便是採用 Web 應用程式架構,此時應用程式在一片Web 化的迷思之中。
隨著Web services與新一代軟體技術的崛起,應用程式架構正再度往分散的方向演前進,而發展出新一代的應用程式架構 - Gartner稱為Smart client( or 稱之為Return to Rich Client),同時預估在2005年,光是.NET平台,Smart client應用程式的比率就會高達60%。
Application
類型
Dos Application Windows Application (WinApp) Web Application Windows Application (WinApp)

不管時代如何演進, IT平台的改朝換代總是每5年到10年發生一次,更讓我們在追逐科技洪流中被淹沒了,隨著科技的進步,一邊帶來新的商機與更多的便利性,另一邊卻讓我們幾年來所學的經驗完全的喪失殆盡,這也是我們身為科技人的最大的無奈,在我們期待科技的進步與新商機的形成的同時,也期待能保持住前面所做的投資與技術的累積,Are you Ready ?

II. 選擇何種Application?

Windows Application (Rich Client) , Web Application (Thin Client)  or Smart Client?

目前我們使用的軟體多數都能區分為Web Application 網頁程式(Thin Client) Windows Application視窗程式(Rich client)

視窗型的 Smart Client的應用程式其實是利用新一代的技術,同時擷取 Rich client Thin client 的優點並改進舊技術的缺點。

Smart Client Windows Application 沒有太大的差異,只是 Smart Client 整合了許多 WebApp 的種種特色,如能夠動態大量部署、更新方便等。就是利用Client端的U/I優勢,並具有Client端的運算能力,但商業運算邏輯是利用Web service的方式,並可以支援連線、離線存取功能,最重要的是能自動安裝與更新版本,微軟的.NET平台中,除了ASP.NETThin-Client方案外,.Net Windows Form就是標榜Smart-Client為重點,也是下一代企業內部系統的發展主流。

Windows Application (Rich Client) (或者比較負面的說法,Fat client)
特 色
Rich Client 可以想像為桌上型軟體,通常 WinApp 在執行程式時可完全使用本機所有的硬體資源。就開發一般 WinApp 而言,由於所有的程式與資料都會一併安裝到同一台電腦之中,因此程式在運作時會使用同步的方式與底層的資料進行溝通,若資料位於 intranet 或 internet 這些不同於本機的地方,程式便會使用遠端物件通訊協定和資料進行溝通。
優 點
• 使用者介面豐富
• 互動性又高
• 容易開發 (較高的生產力)
• 反應時間快
缺 點
• 軟體的功能需於客戶端執行- 執行體積大
• 部署不易
• 更新程式的困難,也常因版本不一導致頭痛的 DLL Hell 問題 (.NET 解決之道為 Side–by - Side Execution)
• 客戶端必須要加裝符合的 .NET 執行環境才可順利執行

Web Application (Thin Client)

特色

·        WebApp  不論在什麼平台上,只要有一個簡單的瀏覽器即可執行存放於伺服器上的各種應用程式功能,而其運作上幾乎完全都是透過網路來進行的 ,客戶端在執行功能時是使用非同步的方式來呼叫伺服器上的功能。

·        通常在撰寫WebApp 沒有特殊需求的話都是透過 HTTP 協定來溝通,因為絕大多數的防火牆都會開放 port 80 供網頁使用。

·        WebApp 具備 Stateless 的特性,且瀏覽器只是一個很單純用來呼叫遠端伺服器功能的程式,因此除了一些記錄帳號密碼的 cookie 之外,瀏覽器並不會存放任何資料在本機上,這導致每次關閉瀏覽器之後,都必須要執行重複的動作以便查閱資料。

·        資料的一來一往之間會消耗大量的網路頻寬,加上若資料的傳輸量太大會導致程式的回應速度會極為緩慢。

·        由於許多網頁在設計上會考量到使用不同平台、版本的瀏覽器,因此在設計網頁介面上會有許多限制,無法像WinApp 有許多方便好用的控制項可供利用。(有鑑於此微軟提出了 ASP.NET 技術來改良 WebApp 在開發上的許多限制,如提供 Web ControlCode Behind、快取機制等技術,這些技術都可以很有效的加速開發人員在實做上的速度)

優點

·        容易部署: 這類軟體的特色在於軟體的功能完全存在於伺服器端,客戶端完全不需要進行任何安裝與部署的工作

·        容易管理與更新:因此即使伺服器的功能有所改變也不需要改變客戶端的程式。這種特色使撰寫需要大量部署的程式變得非常容易,客戶端隨時都能夠使用置放於伺服器上的所有最新功能,網路管理員完全不需要煩惱在程式有所更新時,需要重複替換客戶端程式的作業,因此部署管理成本能夠幾近為零。

·        客戶端無須加裝.NET 執行環境

缺點

·        必須有網路才能存取: 必須要在網路的環境才能夠執行軟體的功能

·        較差的使用者操作: Rich Client 比較的使用者介面相對而言限制眾多。瀏覽器除了能夠顯示基本的文件、圖片,一旦需要更多樣化、更複雜的操作介面與多媒體聲光效果時,瀏覽器本身就無法提供足夠的支援了。因此DHTMLFlash 等都是用來提高在基本的 HTML 語法之外,各種讓客戶端顯示介面能夠更加豐富的技術,但問題在於這些技術各家廠商都有自己一套的標準,使得實際上在運作時可能會導致不同版本、平台的瀏覽器無法正常顯示,或者還必須要加裝各式各樣的plug-in 才能夠觀看等。

·        開發方式複雜: 以及由於架構因素導致開發上的困難


Smart Client - 打破 Web  Application 的迷思

特色/優點

·        整合Rich clientThin client的優點: 豐富的使用者作介面、反應迅速,部署與管理容易、執行體積小

·        使用區域端的資源:這裡指的包含硬體與軟體的資源,可能是利用區域端的CPU計算能力、記憶體,將生產力軟體連接至企業營運系統,或是所連接的裝置,如PDA、電話、RFID接收器…等。

舉例而言,除了個人電腦強大的運算功能外,我們還可以透過外接的麥克風和內建的音效卡進行語音輸入,進而達到語音辨識的功能,也能利用 webcam 攝影機動態捕捉影像並提供影像串流,或利用條碼讀卡機、RFID 讀卡機等硬體所提供的這些功能,而這些都是使用瀏覽器這類 Thin Client 所無法享受到的資源。

·        連接:Smart client應用程式通常是大型分散式系統的一部分。例如,應用程式可能跟一系列的Web services溝通,不僅可以維護程式,也能提供部署與更新服務。

Example1:Word 本身並不具備有翻譯功能,但我們能夠透過「翻譯」這個功能搭配工作窗格中的「參考資料」,存取其他網站所提供的翻譯服務。 

Example2:我們也能開發自己的 Web Services,如存取每日股價並整合至 Excel 中的樞紐分析,以便開發出符合需求的股票走勢圖  -投資股票系統

Example3:因此讀者可以瞭解具備 Smart Client 功能的軟體,應該要能夠使用既有軟體的功能,如資料分析、圖表繪製等,由於這些軟體能夠充分的發揮本機資源所具備的運算能力,因此在進行這些複雜資料的運算是非常有效率的,進而搭配外部Web Services 所提供的軟體額外的服務功能,以便在開發這些 Smart Client 時發揮無窮的想像力,將各式各樣的資料和資源整合在一起,以發揮軟體的最大效用。

Example4: 透過中間層的 Web Services,存取後端伺服器所提供的各種服務的功能,如常見的天氣查詢

·        離線的能力:由於可善用區域資源,此類應用程式可讓使用者在缺乏網路連線或是不穩定的狀況下仍可運作。不論是出差需求或是移動工作者,利用桌上型電腦、筆記型電腦或PDA,都能在離線時持續運作,而當連線時,也可智慧的自動擷取或更新資料。

·        智慧型安裝與更新:這是與傳統Rich client最大的差別。以.NET framework為例,系統管理者便可透過檔案複製、下載,或是利用HTTP部署應用程式,同時可以保持自動更新版本的能力。

·        用戶端裝置的彈性:隨著數位裝置的蓬勃發展,不論是手機、PDA、遊戲機、車用電腦等,新的技術平台也將提供其支援Smart client應用程式架構的能力。微軟還提供了許多相關的軟硬體可供用來開發 Smart Client,諸如 Office SystemTablet PCMobile Device.NET Compact Framework 等。以上所列的軟硬體若使用 Smart Client 架構開發應用軟體,都具備有透過網路存取交換異質系統資料的能力,以及充分發揮自身硬體資源所提供的運算能力

III. 部署Smart Client應用程式

開發好Smart Client之後會需要將軟體部署至客戶端,通常會有以下幾種方式:

  • Xcopy 由於使用 .NET Framework 開發的應用程式,其所需要的元件和安全性的管理都由 .NET 平台所負責,因此只要在內部網路的雙方都有同樣的 .NET Framework,透過 xcopy 命令列指令將整個應用程式複製到需要的地方即可直接執行,而無須使用安裝程式進行安裝。一般而言會使用 xcopy /e source destination 的方式把整個來源目錄結構複製到目的地目錄
  • MSI 若應用程式的需求比較複雜,包含一些寫入登錄檔、存取資料庫的動作,則單純使用 xcopy 的方式可能無法滿足使用者的需求,這時可考慮將整個應用程式專案包裝成 MSI 安裝檔,並將應用程式所需要的所有資訊放置於安裝設定檔中,其後可直接將 MSI 提供給使用者安裝
  • No-Touch Deployment 零接觸部署簡稱之NTD,開發人員在完成應用程式之後,只需把應用程式和其設定檔放置於網頁伺服器,再設定相關的安全性,使用者即可直接使用瀏覽器點選應用程式連結,便會自動下載應用程式組件並存放置客戶端應用程式快取區塊,其後客戶端即可直接執行此應用程式

圖 6

: No-Touch Deployment

.NET Framework 1.1 中的視窗型 Smart Client 主要會透過 No-Touch Deployment(NTD) 技術來呼叫執行

NTD 簡而言之就是使用網址的方式,如點選開始->執行->並輸入 http://myserver/app.exe,或在網頁中撰寫 HTML 語法:<a href=http://myserver/app.exe>app</a>,並透過 IE 來點選此連結來開啟視窗程式。在開啟此程式的時候,.NET 會自動在使用者目錄的快取中留有一份副本,若使用者再度點選時偵測到伺服器和本機都是相同版本的程式,.NET 會自動使用快取中的程式,而無須再度下載以便節省程式啟動時間。

透過這種方式即可很方便的達到自動更新的功能,客戶端每次啟動程式時都會去比對伺服器的檔案,若伺服器檔案版本和本機快取檔案相同則使用快取中的程式,若有新版本在伺服器上則即時下載並啟動之,因此客戶端隨時都能使用最新版本的程式。快取中的程式碼主要是放置於各使用者的資料目錄中,而不是存放於系統GAC,因此不同的使用者在使用電腦時會去讀取不同的快取區,此外快取的大小也可使用組態檔來設定,詳細運作方式請參考上圖。

表單應用程式最為大家傷腦筋的地方在於部署,在.NET 平台中提供一種稱之為CLICKONCE技術,可以協助這類型的應用程式之部署作業,就像部署網頁程式一般地簡單,以達到零接觸安裝(No Touch Deployment)Visual Studio 2005 提供了全新的應用程式發行(Publish)更新(Update) 等能力。

未來的 .NET Framework 2.0 有更方便的 ClickOne 技術可以直接透過設定檔的方式進行 ClickOnce 會直接內建在下一代的 Visual Studio .NET 2005 的部署功能中,透過 ClickOnce 的協助,往後開發人員只要輕鬆的透過幾個步驟的設定,即可享受到 NTD 所帶來的好處

IV. 結語

本文介紹了Application 的演進,  說明傳統WinApp , WebApp  特色與其優缺點。

 微軟提出的Smart Client解決方案 - 同時擷取傳統WinApp WebApp兩者優點、並改進兩者舊有缺點。 其所提出的概念簡而言之就是希望能夠提供豐富的使用者介面、能夠方便的大量部署、自動更新、透過網路連接 Web Services、與離線存取能力

Smart Client 可以充分的運用網路和 Web Services 存取各種外部系統的資源,這一點和瀏覽器這類的 Thin Client 完全需要依賴網路資源的軟體非常類似。Smart Client 和常見的桌上型軟體相同,都能使用本機電腦的所有資源,充分發揮客戶端電腦的運算能力。因此可以說Smart Client 是結合了 Thin Client Rich Client 的優點,整合過後的一種全新軟體模式。

部份文章參考資料摘自:
Taiwan.CNET.com文章:Smart client有多Smart
Shoppingguide.ithome.com.tw:微軟 技術專欄