2009年8月4日 星期二

經由Internet Explorer以網址的方式來實現零接觸佈署1-1

RunPC 125期:利用.NET技術實現零接觸佈署(一)

相信絕大多數利用.NET開發的技術人員,一定是熟悉Web與Windows應用程式開發的兩棲人員,不再像以往僅懂ASP Web應用程式開發和VB Windows應用程式開發系統各有一定程度的門檻,踏入彼此領域皆需有一段調適期,而今在VS.NET IDE上開發系統,不僅整合Web、Windows應用程式,甚至Mobile相關(Pocket PC、Smart Phone…)的應用程式開發、Office與下一代資料庫Yunkon…等應用程式的開發,其開發環境幾乎無異,而其應用程式語言更是無異,學會VB.NET或C#…等任一種.NET程式語言,您就可以開發各平台上的應用程式;談了這麼多.NET開發應用程式的好處後,接著我們把焦點放在Web(Thin Client)與Windows(Rich Client)應用程式上;幾年前筆者剛接觸.NET不久,曾向同事斷言『瀏灠器將死』而引來一陣嘩然,或許當時太過武斷,但過了些時侯相關的文章與資料也陸續出來,當然不是很明確的指明瀏灠器將被淘汰,但也說明了Windows應用程式最難克服的佈署問題(也是WEB應用程式最為人所樂道的優點)已逐漸有解決方式,我們終於可以大聲和煩人不俱人性化的JavaScrip說NO了(註1)。
註1:筆者最近看了幾篇文章,產業都必須朝向以人本為中心的思考模式走,一些不俱人性化的事物都將被淘汰,程式設計的模式亦同。

重歸Windows應用程式(Rich Client)懷抱
在過去的幾年時間內,我們看見了軟體發展團隊從Windows開發平臺Client/Server到Web開發技術(包括HTML、ASP、JSP、PHP、ColdFusion和DHTML…等等)的大規模轉移,一下子似乎Web Solution成了唯一的解決方案,主管們似乎更順這個潮流繁事要求Web化,最大的原因莫過於佈署問題無法得到有效的解決與Dll Hell問題,而今,微軟在.NET平臺上發佈了一個名為零接觸佈署(No Touch Deployment,NTD)的新技術。這項技術會讓大批開發者又從Web開發重回Windows表單開發模式;而在開始談什麼是NTD應用程式時,我們先回顧一下Web應用程式的優點與缺點。

Web應用程式的優點與缺點
Web應用程式最大的優點莫過於安裝佈署、維護的簡易性、用戶端需求小(只要俱備瀏灠器即可)和開發平台無關等三個優點;與Windows應用程式比較起來,Web的佈署只要針對Server端的機器加以佈署更新新的應用程式即可,而不像Windows應用程式需要針對每台用戶端機器加以佈署更新,佈署上的成本顯而易見Web應用程式遠少於Windows應用程式,這也是為什麼企業主願意犧牲Windows應用程式上那麼多優點而選擇Web應用程式的主因;其二Web應用程式對用戶端的需求甚低,只要用戶端俱備瀏灠器即可在一來一回間執行Web應用程式;而最後一點隨著技術的延伸與擴充(ActiveX、XML Island…等),這個優勢也應不俱備了,除非您的Web Site全部使用純HTML來架設,否則您必須針對特定的流灠器來開發,若各位是Client Script的撰寫者,您一定痛恨一個簡單的檢查,卻需複雜判斷瀏灠器的種類接著判斷瀏灠器的版本…等。接著讓我們看看Web應用程式的優點背後它帶給我們的限制,首先不外是使用者介面的不友善性和用戶端與Web Server間一來一回效能上的遺失、無離線執行能力、無法安全、有效的利用Client端上的資源;而Web應用程式的缺點正是Windows應用程式的優點,接下來讓我們開發探討同時俱備Thin Cleint和Rich Client優點的應用程式的作法—零接觸佈署。

零接觸佈署(No Touch Deployment,NTD)
何為零接觸佈署呢?它是微軟在.NET上佈署的新技術,相似於今時Web應用程式的佈署方式,它可以在Internet上執行而使用者無需感知應用程式佈署安裝到用戶機器,即是使用者可以透過IE經由URL或一個連結連結到Web Servcer上執行.NET應用程式,而不需手動安裝它,它會自動於背景中下載,然後執行於使用者的電腦上;而NTD在更新方面就如同Web應用程式一樣簡便,只需將新版的程式蓋掉Web站台上舊的程式即可,每個用戶端再次執行時它會自動比較版本時間戳記,若有新版本一樣會自動下載執行,是故用戶端會如同Web程式一樣執行到最新的應用程式。NTD技術它俱備了Web開發的所有優點而無需犧牲用戶介面設計,也沒有Web開放所帶來的困難。當然有些了解Java的程式設計師喜歡拿Java Web Star來與NTD技術比較,雖然有些地方它們確有相似之處,但安全性方面NTD技術提供了更完整的程式碼存取安全機制(Code Access Security,CAS),這一點來說NTD技術比Java Web Star強大許多。為了充分習得NTD技術的優點,了解CAS是必然的,這是因為在網路上的應用程式要在用戶端上執行,必須要取得適當的權限。

程式碼存取安全機制(Code Access Security,CAS)
程式碼存取安全性是協助限制程式碼存取受保護的資源和作業的一項機制。系統管理者依程式碼的來源不同分別給予程式碼不同的信任等級,各等級可以存取不同的資源,在 .NET Framework 中,程式碼存取安全性會執行以下的功能:

• 定義使用權限和使用權限集合以表示存取各種系統資源的權限。
• 使管理員可以依據程式碼群組的使用權限集合來配置安全性原則。
• 使程式碼會要求執行時所需的使用權限,以及可以用來協助它執行的使用權限,並指定程式碼不能擁有的使用權限。
• 依據程式碼所要求的使用權限以及安全性原則允許的作業,授與使用權限給每一個已載入的組件。
• 使程式碼可以要求它的呼叫端具有特定使用權限。
• 使程式碼要求它的呼叫端處理數位簽章,而只允許特定組織或站台的呼叫端可以呼叫受保護的程式碼。
• 比較呼叫堆疊上每一個呼叫端授與的使用權限和呼叫端必須擁有的使用權限,來加強 Run Time 時的程式碼限制。

其應用原理不外乎是先透過安全性原則(.NET提供四種層次:企業、電腦、使用者和Application Domain)設定一組組的使用權限集合(Permission Set),再把這些權限集合授予至那些符合識別項(Evidence)註2的應用程式群組。經由權限授予後,應用程式才知道它被管理者授予了那些權限,有了權限後應用程式才得以執行某些動作與存取某些特殊的資源;即應用程式要存取某些資源時.NET Framework會循整個程式呼叫鏈來檢查每個物件的甬有權限,皆擁有存取該資源的權限時,應用程式才可以正確執行。

註2:可以當作應用程式的識別項分二大類:一、針對某個組件:(1)組件的強勢名稱(Assembly Strong Name)、(2)以某個應用程式的密碼編譯雜湊來區別。二、多個組件標識:(1)軟體供應商的簽章、(2)組件來源的區域(Internet、Intranet…等)、(3)組件來源位置(URL或UNC路徑下)。

用戶端環境需求
介紹完何謂NTD技術與CAS後,接著讓我們談談在用戶端要執行NTD的.NET應用程式的需求,既是.NET程式.NET Framework自然是不可或缺的,且至少要是.NET Framework 1.0 SP2,建議.NET Framework 1.1環境更佳;當然若要透過URL來執行請安裝Internet Explorer 5.0.1以上版本;而伺服器端只要支援HTTP的Web Server即可,當然還是建議您使用IIS 5.0以上會較佳。

沒有留言:

加入書籤: MyShare HemiDemi Baidu Google Bookmarks Yahoo! My Web PChome Del.icio.us Digg technorati furludn bookmark 其他更多書籤

BOOKS:New and Upcoming