微軟跨平台UI框架MAUI真的要來啦

2022-06-29 06:06:10 字數 3698 閱讀 6549

.net 6的規劃和專案執行是公開進行的,我們有乙個很棒的**,它集中展現了整個.net的github里程碑和使用者故事。您可以訪問themesof.net並在xamarin中搜尋以檢視概覽。  

該版本的核心是將xamarin sdk統一到.net。xamarin一直是.net的一部分,但現在它已作為核心的內容發布,與其他部件(如blazor)共享相同的基類庫,並採用了現代化的sdk專案系統風格來提供一致的工具體驗。xamarin不再是其他類似.net或對.net有依賴性的東西,而是.net本身。文件和產品頁面中一致的命名方式降使這一點將更加清晰。

xamarin.forms是適用於android,ios和uwp的跨平台移動優先框架,.net maui是xamarin.forms的演進。我們擁有7年的為客戶提供技術支援的經驗,服務物件從獨立開發人員到一些全球性的大公司,我們正在改善產品的核心功能,加快ui渲染,投資研發一致的系統設計模式,並從移動端擴充套件到桌面端。

對於xamarin.forms的客戶,您可以把maui當成您現在所了解的xamarin.forms下乙個主要版本。對於剛開始使用.net進行多平台開發的開發人員,您可以先了解一下我們當前為您提供哪些服務。

自2023年年中以來,核心團隊一直專注於產品中影響較大的問題,並設計了新的控制結構體系來更好地服務於未來。xamarin.forms 5.0是.net maui之前的最後乙個主要功能版本,之後的版本發布將僅包含bug修復。xamarin.forms將持續更新直到2023年11月。

此次版本發布中並不包含新控制項。我們把重點放在產品質量上。我們與您一樣對新功能感到興奮,為此,我們非常高興看到與xamarin.forms 5.0一起發布的xamarin community toolkit 1.0獲得了如此積極反饋。

當您檢視我們的github庫dotnet / maui時,您會發現檔案組織更加精簡,與xamarin.forms相比,該組織方式利用了多目標結構並具有更加一致的命名方式。我們希望這樣能夠更方便貢獻者們找到想要改變的物件。開發活動正在xamarin / xamarin.forms庫的main-handler分支活躍地進行著,這些更新會被同步到dotnet /maui中去。   

應用程式啟動和ui響應時間是應用程式效能至關重要的兩個部分。為幫助定位這裡可能出現的效能問題,我們在aot,啟動跟蹤和快速渲染器方面有很大的改善。.net maui除了能從.net 6本身獲得效能提公升外,我們還有幾個能顯著提高應用程式效能的改動!

.net maui中新的handler體系結構消除了檢視巢狀,減少了呈現檢視所需的ui控制項數量。它還從根本上將平台控制項與框架本身解耦。在xamarin.forms中,每個渲染器都有對跨平台元素的引用,並且通常依賴於inotifypropertychanged工作。.net maui並未使用這些渲染器,而是引入了一種稱為handler的新模式。

現在,框架和平台之間的關係倒置了,平台控制項所需要做的就是處理框架的需求。這不僅提高了效率,而且更容易擴充套件或重寫。需要建立自定義渲染器或效果的日子已經一去不復返了(我們仍然會確保自定義渲染器和效果是可以使用的)。

新的結構還使平台handler更適合被其他框架(如fabulous)和創新專案(如comet和blazor)重用。我們始終著眼於未來!

針對多個平台的應用程式的設計需求和多年前相比已經發生了很大變化。在xamarin.forms成立之初,大多數客戶都希望他們的android應用看起來非常像android,而ios應用看起來非常像ios。我們已經在xamarin.forms中引入了越來越多的樣式和控制項,並讓這些樣式和控制項在各個平台上看起來都相同,另外在ios我們還新增了visual control api以及material design元件,來讓您可以和在android上擁有一樣的使用者體驗。這些努力是滿足客戶向我們展示其需求的方式的一部分,並且在.net maui中,我們奠定了進一步發展的基礎。

在實驗方面,我們還啟動了乙個新的visual策略,該策略結合了native控制項和可繪製控制項。今年晚些時候,我們將有更多資訊可以分享。對於需要1:1跨平台設計並希望獲得更好的效能,但又需要native平台支援的客戶,這會很友好的。

.net maui在.net 6中涵括了android,ios,macos和windows。除此之外,我們也正在和blazor團隊一起合作,.net 6中囊括blazor 桌面開發。

一開始在uwp以部署到windows mobile為目標時,xamarin.forms為uwp新增了乙個以mobile為中心的實現。在.net maui中,我們通過winui 3 desktop帶來了針對桌面的更強大支援,這是我們windows團隊合作夥伴構建出色應用程式的最新實現。當涉及到與.net maui相關的uwp和winui時,我們被問的最多問題是在.net maui中xaml會是什麼樣的形態的。因為.net maui控制項是多平台的,而不僅僅侷限於windows控制項,並且因為我們擁有大量的xamarin.forms的客戶,我們希望在.net maui中可以讓您有一致的體驗。

我們通過.net maui宣布的最令人興奮的事情之一就是single project體驗。我們發現,開發人員集中注意力於.net standard專案中開發時效率最高,而不是在android,ios,macos和windows專案之間來回跳轉的時候。

作為此體驗的一部分,我們正在統一許多管理方式,例如字型和影象管理,並減少對管理多個平台專案的複雜性的依賴。對於喜歡或需要多個平台專案的開發人員,它仍也是任然支援的!

過去幾年中,xaml hot reload的引入大大節省了.net開發人員的時間。在xaml中進行的改動會推送到正在執行的應用程式中,從而避免了繁瑣的構建和部署週期,幫助開發人員更好地集中注意力於應用程式開發中。在.net 6中,我們將其擴充套件到了c#,也引入到其他的工作負載中。我們迫不及待地想要您在今年下半年體驗到這一改動。

我希望您對以上亮點有興趣。它們直接**於與您這樣的客戶的交談,並且我們已經在.net 6中提高了這些主題的優先順序。如果您沒有看到想要的更新,請告訴我們,我們不久以後將開始規劃.net 7及更高的版本。

為了幫助您做好準備工作,下面是一些一些常見問題和回覆。

q1:我應該今天使用xamarin.forms ,還是等待.net maui?

您可以直接開始使用xamarin.forms !一切就緒以後我們會提供遷移到.net maui的方法。

q2:從xamarin.forms遷移到maui要做什麼?

首先,您不需要重寫應用程式。第一步您需要更新專案和解決方案,以使用標準的sdk。然後,更新xamarin.forms的命名空間和nuget包。由於這是乙個主要版本的更新,此時您專案中任何過時的api應該都已經被更新了。僅此而已!

然後,您可以選擇是否將自定義渲染器遷移到新的handler體系中,以獲取所有可能的效能提公升。這可以按照您自己的步調進行。

遷移之前,您可以先在乙個新專案中探索.net maui。

q3:我的自定義渲染器可以工作嗎?

我們提供使渲染器能夠與新的handler同時工作的介面卡,但是,我們建議您更新成handler以獲取效能提公升。另外,使用handler時要維護的**也少得多。

q4:vs code,comet mvu和blazor mobile bindings現在怎麼樣了?

目前它們都還是實驗專案,我們會繼續迭代:

跨平台開發框架 Lynx 初探

跨平台開發是目前開發較熱門的方向,react native 在這方面取得了很大的成功,同時 flutter 也獲得了非常多的關注。react native 採用 web 框架開發並使用 native ui 進行渲染,很大程度上降低了 native 開發的門檻並且提高迭代的效率,但是也不可避免地存在一...

跨平台開發框架 Lynx 初探

跨平台開發是目前開發較熱門的方向,react native 在這方面取得了很大的成功,同時 flutter 也獲得了非常多的關注。react native 採用 web 框架開發並使用 native ui 進行渲染,很大程度上降低了 native 開發的門檻並且提高迭代的效率,但是也不可避免地存在一...

遊戲框架和跨平台程式設計

05 18 2020 05 23 2020 sdk 和 api 分別是什麼?跨平台程式設計 game framework and cross platform programming holleywood principle don t call us,we will call us 看一下接受或者...