在過去的幾年時間裡
我們見證了軟件開發團隊從Windows開發平台到Web開發技術(包括HTML
ASP
JSP
DHTML
ColdFusion和PHP等等)的大規模遷移
直到目前為止
Web開發的好處還沒有受到批評
最近
微軟公司的
NET平台發布了一個名為非接觸配置(No Touch Deployment
NTD)的新技術
NTD技術會讓大批開發者從Web開發回到Windows窗體開放——NTD應用程序可以在Internet上運行而無需接觸用戶機器
它提供了Web開發的所有優點而無需犧牲用戶界面設計
也沒有Web開放所帶來的困難
現在
天平又開始向微軟公司這一側傾斜了
你的下一個項目可能完美合適NTD
Web開放的優點
在介紹復雜的NTD技術之前
讓我們先討論一下Web展開模型的優點和缺點
它的優點主要體現在兩個方面
配置的成本和目標機器
配置成本
配置Windows應用程序相對來說要付出更多的努力
Windows應用程序在初始安裝
隨後的升級
以及對客戶機器的總體管理等方便的成本是驅動我們選擇Web程序的原因之所在
目標機器不受影響
Web展開模型使得客戶機器的性能對Web應用程序的影響很小(即
瘦
客戶)
只要考慮客戶端的浏覽器就可以了
這一點非常有利
因為它不要客戶安裝任何軟件就可以運行應用程序
由於目標機器不被觸及
用戶在運行他/她不太信任的應用程序時
也不會感覺別扭
它降低了成功運行某個程序所需要經驗的要求
第三個好處就是它的開發是平台無關的
與各種浏覽器之間
戰爭
無關
但是
專有技術(如HTML擴展
COM
ActiveX和XML數據島等)極大破壞了這個優勢
事實上
除非你的網站全部用HTML實現
否則你的開發必須針對特定浏覽器
然後期望其它浏覽器也支持你的Web應用程序
Web開發的缺點
Web應用程序所帶來的優點並不是沒有付出代價的
實際上
Web應用程序也有幾個很明顯的缺點
如有限的用戶體驗(user experience)
很難讓人信服Web可以提供比Windows應用程序更豐富的用戶界面
Web目前已有的控件和Windows比起來是非常有限的
在Windows應用程序中實現滑動塊控件
spin框和顏色框很容易
但是在Web應用程序卻是另一回事了
非接觸配置
一年前
我不願意涉及除基於Web(即HTML
ASP
NET等)之外的其它項目
現在
我接觸了好幾個Windows表單應用程序的開發
這些應用程序的用戶是網絡用戶
它們用到了NTD技術
有些人喜歡把NTD與Java Web Star相對比
它們在某些方面也確實有相似之處
不過
NTD技術提供了完整的可配置的代碼訪問安全機制(code access security
CAS)
就這一點來說
它的功能比Java Web Start更強大
代碼訪問安全(CAS)
按照微軟的說法
CAS是
通用語言(common language)所提供的一種機制
被管理的代碼由安全策略授予一定的許可
許可是強制的
限制了代碼所允許執行的操作范圍
為了充分獲取NTD的優點
理解CAS是必不可少的
這是因為在Internet上展開的應用程序需要在客戶機器上獲得必要許可才可以正確執行
非接觸展開的例子
讓我們看看一個例子
其中可執行代碼駐留在本地機器的Web server中
CAS給予駐留在本地機器上的所有可執行代碼以全部權限
這與從另一台機器上下載可執行代碼的情況不同
所以當你配置(deploy)你的應用程序時
你將配//localhost
假設希望允許用戶使用Windows應用程序來注冊會議
該應用程序暫時不再做任何有用的事也不與server進行通信
因為它請求Web服務
該應用程序只是簡單的給出了一個帶有按鈕的頁面
當你點擊按鈕時
它顯示出
Hello
一旦該程序編譯後
可執行的CodeConferenceRegistration
exe將作為一個IIS server被拷貝
用戶可以在IE地址欄中輸入浏覽該可執行代碼的效果
IE可以識別
exe擴展名
可執行代碼通過http下載
通用語言在運行時刻執行該程序
當然
在沒有正確配置的情況下
CAS將限制她的運行
仍有懷疑
不可避免的
那些宣稱Java Applets以及Java Web Start已經嘗試過配置計劃但這兩者都沒有成功的人會懷疑它不會占據很大的市場份額
持懷疑態度的人提出問題本身並沒有錯
但是現在的情況和Java Applets出現時的情況不太相同了
由於Applets需要較高的帶寬(那時的情況和現在不同
家庭寬帶網尚不普及)
所以它沒有推廣開來
此外
用來實現客戶端和服務器通信的技術也沒有Web服務那樣成熟
NTD的另一個缺點就是它要求客戶端機器上也安裝
NET框架
而由於
NET應用程序需要在運行時使用通用語言
偏偏大多數客戶端機器又沒有安裝
NET框架
但隨著時間的流逝
情況正在好轉
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26208.html