DevExpress .NET MAUI UI組件庫提供了用于Android和iOS移動開發的高性能UI組件,該庫包括數據網格、圖表、日程、數據編輯器、CollectionView和選項卡組件。
獲取DevExpress .NET MAUI最新正式版下載(Q技術交流:532598169)
“一次編寫,隨處運行”——這個口號幫助Java在20世紀90年代中期獲得了廣泛的普及,從那時起,許多跨平臺框架被引入,比如Ionic、Flutter,當然還有.NET MAUI。這些框架允許開發人員使用相同的代碼,而不考慮底層操作系統/設備類型。雖然使用單一UI框架可以節省時間/資源,但這種開發策略的有效性和效率完全取決于應用程序的復雜性和用戶體驗需求。
跨平臺應用的另一種技術是共享業務邏輯和服務,但根據設備類型(桌面/移動)使用不同的UI框架。使用這種策略您將共享更少的UI代碼,但可以使用每個平臺的固有優勢來制作高質量的界面(當然,跨平臺/設備提供最佳的用戶體驗)。
單一UI項目:優勢與挑戰
一個完全跨平臺的界面可以幫助開發團隊減少開發成本和上市時間,例如使用DevExpress?Blazor創建的單個頁面可以通過Blazor Hybrid在Web、桌面和移動應用程序中使用。這不僅僅是一個Web組件的WebView封裝器:它允許您在.NET環境中運行代碼,同時訪問設備功能,這種策略可以提高團隊的效率,因為您可以共享代碼和專業知識。
下面的內容將幫助您創建一個Blazor Hybrid應用程序:Get Started - Blazor Hybrid。
另一個快速發展的跨平臺框架是 .NET MAUI,它被設計成支持不同的設備類型(桌面、移動、平板),該框架包括一些有用的特性,用于在不同目標之間共享代碼:
- 項目結構:與Xamarin不同,.NET MAUI將所有跨平臺代碼合并到一個項目中。
- 特定于設備的自定義:自適應布局XAML擴展允許您基于設備和操作系統類型更新控件屬性。
- 原生UI元素:在底層.NET被轉換成原生的特定于操作系統的元素,確保了特定于設備的用戶體驗。
這些核心功能可以幫助您創建針對不同設備的單一代碼庫應用程序。
下面是一個如何為移動和桌面設備指定不同布局的示例(移動一欄,桌面兩欄):
<Grid ColumnDefinitions="{OnIdiom Phone='*', Desktop='*,500'}" ... >
這種技術對于相對簡單的應用程序非常有效,然而業務應用程序通常需要更復雜的特定于設備的更改。例如桌面客戶端可能包含帶Ribbon和Docking的復雜視圖,這些控件通常被移動設備上的其他元素所取代。
此外,手機上的整個用戶流程可能會有很大的不同。例如,本地單元格編輯在桌面應用程序中很常見,但對于移動設備,您可能更喜歡分別顯示細節和編輯屏幕,您可以在手機上的許多應用程序(如Contacts)中找到這種模式。
下面的圖片說明了一些例子,它可能是具有挑戰性的創建一個單一的UI代碼庫:
當期望的桌面界面和移動界面之間存在顯著差異時,創建大量特定于設備的觸發器可能會很快使代碼復雜化(使其難以開發和維護)。
具有設備特定UI框架的應用程序
使用單一UI平臺為代碼共享提供了更多的機會,但是在處理具有復雜接口的應用程序時,利用這些優勢是一項挑戰。如果您正在開發這樣的應用程序,可能需要為不同的客戶端類型使用單獨的UI框架,并重用非可視化代碼。這允許您利用每個平臺,并且仍然共享相當多的代碼。
在上圖中,客戶端應用程序使用不同的UI框架實現,而兩個客戶端都使用通用的服務、業務邏輯和服務器端模塊。根據您的偏好,可以將所有服務器邏輯實現為單個服務,也可以創建微服務基礎設施。
在客戶端上,您可以選擇最適合的應用程序平臺:
- WPF和WinForms(都是非常成熟的平臺)為豐富的桌面用戶體驗提供了各種重要的特性和功能。
- 輕量級的.NET MAUI將允許您為Android和iOS創建一個以移動用戶體驗為中心的應用程序。
由于WPF、WinForms和MAUI都是基于.NET的,您可以可以很容易地重用客戶端服務、幫助器和模型類。實現更多代碼共享的關鍵是一個松散耦合的體系結構,模塊之間可以相互隔離。MVVM設計模式將幫助您將視圖與視圖模型解耦,并使用依賴注入輕松引入外部依賴。
如果您采用這種策略,項目結構可能如下所示:
- Client.Shared - 客戶端服務,通用助手
- DataModel -?數據庫對象的模型
- DesktopClient - WPF/WinForms應用程序
- MobileClient - .NET MAUI 應用程序
WebApiService -?包含業務邏輯和處理對數據庫訪問的web服務,注意:您可以使用DevExpress免費Web API服務來實現服務器端安全性和基于角色的數據訪問。
DevExpress跨平臺 .NET App UI (XAF) 基于類似的想法,數據處理、安全性、業務邏輯和其他共享模塊被設計為與視圖無關的塊,在引入新的可視化客戶端時,您可以輕松地重用大部分代碼。
總結
為給定平臺選擇最佳UI框架至關重要,因為它決定了開發過程、用戶體驗,并最終決定了項目的成功。統一的跨平臺UI對于簡單的應用程序、最小可行產品(MVPs)或次要設備的卓越用戶體驗不是主要關注的時候,這或許是一個有效的解決方案。
對于更復雜的應用程序,共享UI代碼的可能性可能會受到限制,因為桌面設備和移動設備的用戶流存在顯著差異。通過分離可視化客戶端并利用每個UI平臺的優勢,您可以開發高影響力的應用程序,來高度滿足用戶需求。松耦合體系結構不僅允許廣泛的代碼重用,而且還確保代碼保持干凈、可維護和可測試。