微軟把UWP定位成業務線應用程式開發平臺

weixin_33766168發表於2018-08-12

微軟把UWP定位成傳統業務線(LOB)應用程式開發平臺,以使用Windows Template Studio實現快速應用程式開發為重點。但是,為了把LOB開發人員吸引到UWP平臺,他們在做的事情不止這些。

\\

最初發布時,通用Windows平臺(UWP)只是被視為一種在Windows商店中銷售應用程式的方法。其基本思想是你編寫一次應用程式,它就可以在Windows和Windows Phone上執行。但是有嚴格的限制,你幾乎是必須通過Windows商店。對業務線(LOB)應用程式而言,這就不合適了,因為它們天生就不應該公開暴露。

\\

藉助UWP,LOB開發人員要麼繼續使用遺留的WinForms和WPF平臺,通常是使用ClickOnce作為部署方法,要麼接受內部Web站點額外的複雜度和開發成本。對於中大型企業,這個方向尤其流行,WinForms/WPF更高的部署成本是一個因素。

\\

隨著去年“Windows 10 Fall Creators Update”的釋出,UWP模型發生了變化,它使得直接通過網站安裝UWP應用程式成為可能。雖然和ClickOne的體驗不完全一樣,但至少是個開始。同時,微軟有一個團隊致力於使XAML/UWP更適用於LOB應用程式。

\\

Windows UI庫

\\

使用者控制元件是任何UI框架的核心。強大的使用者控制元件模型促成了Visual Basic在20世紀90年代的流行,並且仍然使桌面應用程式的開發速度高於基於HTML的解決方案。但是,UWP部署模型給它帶來了一些不必要的限制。

\\

由於主要的使用者控制元件(又名平臺控制元件)已經變成了OS的一部分,所以,應用程式在採用新控制元件時必須非常保守。有些公司的機器雖然執行著Windows 10,但其版本經常比正式釋出的版本落後兩個版本,這時候問題會尤為突出。

\\

為了解決這個問題,平臺控制元件現在作為NuGet包釋出。這使得開發人員可以利用新控制元件,而不必等待公司的其他部門都升級到最新的Windows版本。這些NuGet包至少需要2016年8月釋出的Windows週年紀念版。

\\

這些控制元件填補了UWP生態系統中眾所周知的空白,如缺少tree-view、選單欄或顏色選擇板。

\\

.NET Standard

\\

藉助.NET Framework和.NET Core,UWP現在支援.NET Standard 2.0。這使得開發人員可以把他們的業務邏輯和資料模型遷移到.NET Standard庫。那樣,他們就可以在傳統的桌面應用程式、網站或UWP應用之間共享同樣的程式碼。理論上講,這將簡化從WinForms/WPF到UWP的遷移。

\\

UI密度

\\

微軟把UWP中的預設空間和大小描述為“慷慨提供了大量空白”。計劃在今年釋出的Windows版本將改變這種預設情況,通過自動減少控制元件尺寸、控制元件之間的填充空間、字型大小,釋放更多螢幕實際使用面積,一般來說,就是讓一切更緊湊。按照他們的估計,你可以把螢幕上的控制元件數量增加約三分之一。

\\

開發人員可以通過選擇簡潔模式進一步縮小控制元件的尺寸。控制元件之間的空間減少了大約40%,一次可以看到的資料增加了大約50%。這項特性主要是針對資料密集型的業務線應用程式。

\\

顏色主題

\\

眾所周知,一個令人愉快的顏色主題會增加使用者對工具的信任。但是,對於像UWP/XAML這樣複雜的樣式模式,通常甚至沒有時間應用最基本的顏色。基本上,問題在於,每種控制元件型別的樣式都需要單獨更新,然後再測試整個主題。在構建業務線應用程式時,很少有足夠的時間這樣做。

\\

有一款新工具,姑且稱之為“Color Demo”,就是要解決這個問題。使用簡單的顏色選擇器,就可以預覽主題,生成必要的資源字典,包含到應用程式中。

\\

而且,它會提示你顏色選擇可能導致的問題,如沒有足夠的對比度使文字可讀。

\\

這還不如全樣式的XAML應用程式豐富,但是,它可以為應用程式提供足夠的修飾,使它看上去有一個專業的外觀。

\\

資料驗證UI

\\

UWP還有另外一個明顯的不足,就是缺少資料驗證支援。這個疏忽很奇怪,因為資料驗證從一開始就是.NET UI框架的一部分。(我們在文章“C# API中的模型和它們的介面設計”中討論過其中部分介面)。

\\

今年新增的功能是在基於屬性的驗證中使用INotifyDataErrorInfo介面。當一個模型暴露了這個介面,UI就能夠自動顯示正確的錯誤資訊。它顯示錯誤的具體方式取決於你在控制元件中選擇了哪個模式。

\\

實現INotifyDataErrorInfo介面並不簡單,涉及許多把基於屬性的驗證附加到INotifyDataErrorInfo介面的樣板程式碼。因此,你也許會希望找一個MVVM框架來幫你處理。[本文作者的Tortuga Anchor庫就是這樣一個例子。]

\\

新XAML控制元件:Data Grid

\\

對於非UWP開發人員,沒有提供開箱即用的Data Grid看上去相當奇怪。

\\

對於業務線開發人員,UI框架不提供Data Grid幾乎是不可想象的。甚至是早在上世紀90年代中期,這個控制元件的一個變體就已經成為無數業務應用程式的核心。許多在考慮UWP的開發人員驚訝地發現,微軟已經從WPF或Silverlight移植了Data Grid。

\\

這最終是通過Windows Community Toolkit解決的。新的DataGrid控制元件所需要的XAML看上去和在WPF中非常像。

\\

下週,我們將深入介紹Windows Community Toolkit。

\\

檢視英文原文:Microsoft Positions UWP for Line of Business Applications

相關文章