2016年5月14日 星期六

Azure Remote App (1) - 在iPad/iPhone上執行Windows/WPF應用程式?

主流和非主流,有時候只是時間的差異…

故事是這樣的,2003年開始,我們寫了非常多的Web應用程式,對,那一年是ASP.NET 1.1剛出來的時候。接著,從2005年ASP.NET 2.0出現之後,這種現象完全沒有退燒的趨勢,台灣有一段時間大家卯起來寫Web應用程式,不論是ERP、CRM還是什麼想的出來的企業應用,通通企圖改寫成Web,當時,這絕對是一種潮流…

不過,企業中有太多太多的應用,不可能通通透過Web的方式來實現(一直到現在都是如此…)。因此,還是有很多很小或很大的應用程式,是透過傳統的Windows/WPF方式來開發的。

然後,突然有一天,iPad/iPhone幾乎佔領了台灣高階主管的世界,居於企業核心地位的高階主管們,完全聽不懂(不想聽懂)為何iPad無法執行Windows/WPF應用程式,他心裡的iPad…是無敵的…

詭異的需求,常常就是這樣來的。

所幸高階主管們其實不太key-in,他們擅長做的事,需要用的應用程式,大多都是滑鼠點點點就可以搞定的。

而企業內IT人員的天職就是滿足具有無窮想像力的高階用戶的各種期待…iPad上怎麼運行WPF應用程式呢? 答案當然是,不可能。

就算是也是假的…但假的只要能夠用,也並非不是個辦法…

所以…azure remote app出現了。

原本我覺得這東西有點OOXX,但沒想到經過幾次耐不住客戶要求在iPad上運行傳統windows應用程式的需求之後,實際捲起袖子用了一會兒,發現它也並非難登大雅之堂。畢竟在iPad上能夠看到Windows應用程式(看似)變成一個App,還可以點點點,完成需要執行的工作,其實也還挺不錯的。

Azure Remote App

Azure Remote App是啥呢? 他是Azure中的一個服務,基本上就是一台VM,然後讓iPad(包含iPhone/Android/Windows 7,8, 9 ,10,11或其他設備)透過遠端桌面連線的方式連上,去運行VM上的某一個Application的技術。

一點都不新潮。
但,還真的能用。

如果你下載了最新版在iPad上的RDP遠端桌面連線,會發現新增的選單裡,有一個Azure RemoteApp的選項:

點選該選項之後,你可以用Azure AD組織帳號或Microsoft Account(像是hotmail帳號)登入,如果該帳號具有某個RemoteApp VM(稱作Collection)的存取權限,就會顯示出該Collection上能夠使用的App清單:

上面列出的程式全是傳統的Windows應用程式。當你點選清單中的某一個App,該App就會被運行起來,像是在iPad中被執行的App一般(下圖是一台iPad Mini,其中執行的是Windows的小畫家):

說穿了這沒什麼,就是遠端桌面連線。不過該支援的拖曳、觸控、卷軸、輸入法…etc.一個也沒少,當然,由於是RDP,所以運行起來不會真的跟一個iPad App一樣。

但iPad上能不能運行傳統的Windows應用程式? 這樣…勉強算可以吧。

和一般的RDP不同,透過ipad的遠端桌面連線App配合Azure RemoteApp,用戶端並非直接遙控整個桌面,而是只能運行特定的應用程式。這其實是個優點而非缺點,因為在先前提到的需求和情境下,用戶大多只需要在iPad上運行特定的應用程式,你給他整個桌面,他反而會覺得麻煩,不好控制。

更進一步的說,如果你把Windows/WPF應用程式設計的現代化一點,按鈕大小放大一點,多一點拖曳或觸控功能(WPF要做到這點並不難),那這個App在iPad上運行的效果其實會挺不錯。

就算不想調整已經寫好的windows應用程式,透過這樣的方式讓老掉牙的Windows Application能夠在iPad上直接使用,勉勉強強可以滿足高階主管們的需要,只要不要有太多輸入,其實還算是可以接受。

而iPad只是被支援的一種用戶端,其實用戶可以用Android/Windowws/iOS/MAC/PC等不同的用戶端連上使用,使用方式幾乎都一樣,Microsoft把用戶端作的挺過得去,不至於有太糟的用戶體驗。

應用情境

而這帶給了現代IT/MIS另一種可能性。

其實早在虛擬化技術被廣泛用在企業內的時候,某種terminal時代的影子就又回來了。然後這幾年又開始雲端化,行動化,企業用戶甚至更能接受用一個thin client搭配雲端的虛擬機,來運行企業內的應用系統。這使得Azure RemoteApp這樣的構想不一定不切實際,你留意看看他的road map:

https://azure.microsoft.com/zh-tw/documentation/articles/remoteapp-roadmap/

我很期待有一天,開啟瀏覽器,就能夠透過azure remote app運行企業內各式各樣的(windows)系統,不需要改版、不需要web化,需要大量運算資源的應用系統,也能夠透過一個瀏覽器就可以運行。

所有在Web上不容易做到的工作,都可以透過RemoteApp來完成,而用戶依舊可以透過瀏覽器來執行,透過行動裝置來運行。更有趣的是,如果你擁有多種平台的不同設備(例如MAC/Windows/iOS…etc),都可以執行一樣的應用程式。

例如現在我常常在公司或家裡用Windows透過Azure RemoteApp執行流程簽核系統、在外面乘車的時候,繼續用iPad執行同一個系統,當然,事實上根本就是運行在雲端的VM上,用戶端的裝置只是呈現畫面而已。

安全性

更有趣的是,企業有另一個可能會喜歡這個機制的因素,那就是安全性。

所有應用程式都運行在伺服器端,這表示企業可以中央集權式的管理,沒有什麼需要開VPN或是設備遺失所擔心等用戶端資料外洩的問題,因為東西其實徹頭徹尾在雲端上(或企業內的伺服器),用戶端就是一個RDP而已。如果用戶離職,直接把他的帳號關閉,他什麼資料也留不下來。

Azure Remote App現在可以搭配Azure AD,以企業AD的方式來控管用戶的使用權限,也可以透過microsoft account的方式來管理外部用戶的授權。

未來的發展

坦白說,未來的發展我們無法預測,微軟這兩年的改變讓平台之間的界線越來越模糊,如今你可以在windows上面Run Bash,可以用Visual Studio寫Android,可以在微軟的雲端CI系統中Build各式各樣的應用程式,現在在iOS上面看到WPF應用程式,其實也沒什麼…

我不知道在這個『看似』Web和App已經主導開發了的時代,還有多少企業在寫WPF或Windows應用程式,但如果你想要在iPad/iPhone上面運行WPF,Azure RemoteApp算是一個可以撐著用的選擇。

我自己有在用嗎? 有的,而且我也開給不少客戶使用。令人訝異的是,只有一兩位客戶問我,為什麼這個iPad App的操作畫面長的跟Windows好像…

(下一篇,我們再介紹怎麼搭建你自己的Azure RemoteApp)

沒有留言: