1. 什么是Prism
????????Prism是一個用于在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構(gòu)建松散耦合、可維護和可測試的 XAML 應(yīng)用程序框架。
????????Prism是一個用于在WPF、Xamarin Forms、Uno Platform和WinUI中構(gòu)建松耦合、可維護和可測試的XAML應(yīng)用程序的框架。 每個平臺都有獨立的版本,它們將按照獨立的時間表開發(fā)。 Prism提供了一組設(shè)計模式的實現(xiàn),這些模式有助于編寫結(jié)構(gòu)良好和可維護的XAML應(yīng)用程序,包括MVVM、依賴注入、命令、EventAggregator等。 Prism的核心功能是。net Standard 2.0、。net Framework 4.5 / 4.7支持的共享代碼庫。 那些需要特定于平臺的內(nèi)容在目標平臺的相應(yīng)庫中實現(xiàn)。 Prism還提供了這些模式與目標平臺的良好集成。 例如,Prism For Xamarin Forms允許您使用一個單元可測試的導(dǎo)航抽象,但它是位于平臺概念和導(dǎo)航api之上的層,因此您可以充分利用平臺本身提供的功能,但是以MVVM的方式完成的。
????????Prism使用包含重要架構(gòu)設(shè)計原則(如關(guān)注點分離和松耦合)的設(shè)計模式,幫助您設(shè)計和構(gòu)建包含重要表示和業(yè)務(wù)邏輯的應(yīng)用程序,這些表示和業(yè)務(wù)邏輯通常與后端系統(tǒng)和服務(wù)交互,并使用分層架構(gòu), 可以在物理上跨多個層部署。 預(yù)計該應(yīng)用程序?qū)⒃谄渖芷趦?nèi)顯著發(fā)展,以響應(yīng)新的需求和商業(yè)機會。 簡而言之,這些應(yīng)用程序是“為持久而構(gòu)建”和“為改變而構(gòu)建”的。 不需要這些特性的應(yīng)用程序可能無法從Prism中受益。
1.1. 框架目標
????????Prism 旨在幫助您設(shè)計和構(gòu)建豐富、靈活且易于維護的 WPF 應(yīng)用程序。棱鏡圖書館實施的設(shè)計模式體現(xiàn)了重要的建筑設(shè)計原則,如關(guān)注點分離和松散耦合。使用棱鏡庫提供的設(shè)計模式和功能,您可以使用松散耦合的組件設(shè)計和構(gòu)建應(yīng)用程序,這些組件可以獨立演變,但可以輕松無縫地集成到整體應(yīng)用中。
????????Prism 設(shè)計圍繞核心建筑設(shè)計原則,即關(guān)注點分離和松散耦合。這使得Prism可以提供許多好處,包括:
-
重復(fù)使用:
Prism 通過允許輕松開發(fā)、測試和集成到一個或多個應(yīng)用程序中來促進重用。通過重復(fù)使用單元測試的組件,可以通過依賴性注入在運行時間輕松發(fā)現(xiàn)和集成,以及通過使用可在應(yīng)用程序中重復(fù)使用的應(yīng)用程序級功能封裝模塊,在應(yīng)用級別實現(xiàn)重復(fù)使用。 -
可擴展性:
Prism 通過管理組件依賴性、使組件在運行時間更容易集成或替換為替代實現(xiàn)以及提供將應(yīng)用程序分解為可獨立更新和部署的模塊的能力,幫助創(chuàng)建易于擴展的應(yīng)用程序。Prism庫本身的許多組件也可以擴展或更換。 -
靈活性:
Prism 有助于創(chuàng)建靈活的應(yīng)用程序,使它們能夠隨著新功能的開發(fā)和集成而更容易更新。Prism還允許使用共同服務(wù)和組件開發(fā) WPF 應(yīng)用程序,從而允許以最適當?shù)姆绞讲渴鸷褪褂脩?yīng)用程序。它還允許應(yīng)用程序根據(jù)角色或配置提供不同的體驗。 -
團隊發(fā)展:
Prism 通過允許單獨的團隊獨立開發(fā)甚至部署應(yīng)用程序的不同部分來促進團隊發(fā)展。Prism 有助于最大限度地減少跨團隊依賴性,并允許團隊專注于不同的功能領(lǐng)域(如 UI 設(shè)計、業(yè)務(wù)邏輯實現(xiàn)和基礎(chǔ)架構(gòu)代碼開發(fā)),或不同業(yè)務(wù)級別的功能領(lǐng)域(如簡介、銷售、庫存或物流)。 -
質(zhì)量:
Prism 通過允許對共同服務(wù)和組件進行全面測試并提供給開發(fā)團隊,有助于提高應(yīng)用程序的質(zhì)量。此外,通過提供對常見設(shè)計模式的充分測試實施,以及充分利用這些模式所需的指導(dǎo),Prism 允許開發(fā)團隊專注于其應(yīng)用要求,而不是實施和測試基礎(chǔ)架構(gòu)代碼。
1.2. 先決條件
-
XAML (Extensible Application Markup Language)[XAML(可擴展應(yīng)用標記語言)]:
聲明性地定義和初始化 WPF 應(yīng)用程序中的用戶界面的語言。 -
Data binding[數(shù)據(jù)綁定]
這就是 UI 元素與 WPF 中的組件和數(shù)據(jù)連接的方式。 -
Resources[資源]
以下是 WPF 中創(chuàng)建和管理樣式、數(shù)據(jù)模板和控制模板的方式。 -
Commands[命令]
以下是用戶手勢和輸入連接到控件的方式。 -
User controls[用戶控制]
這些組件提供自定義行為或自定義外觀。 -
Dependency properties[依賴屬性]
這些是通用語言運行時間 (CLR) 屬性系統(tǒng)的擴展,使屬性設(shè)置和監(jiān)控能夠支持數(shù)據(jù)綁定、路由命令和事件。 -
Behaviors[行為]
行為是封裝交互式功能的對象,可輕松應(yīng)用于用戶界面中的控件。
2. 官方地址
2.1. github地址
https://github.com/PrismLibrary/Prism
????????基于Prism的VisualStudio擴展包模板: Prism Template Pack,下載它后可以快速創(chuàng)建基于Prism的項目。
2.2. 官方學(xué)習(xí)文檔:(以下推薦MSDN,微軟的)
https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff921153(v=pandp.40)
4. Prism框架內(nèi)容
????????框架中包括 MVVM、依賴注入、Command、Message Event、導(dǎo)航、彈窗等功能。
5. 基本概念
Modules(模塊):
????????模塊是可獨立開發(fā)、測試和(可選)部署的功能包。在許多情況下,模塊由單獨的團隊開發(fā)和維護。典型的棱鏡應(yīng)用程序由多個模塊構(gòu)建。模塊可用于表示特定的業(yè)務(wù)相關(guān)功能(例如,配置文件管理),并封裝實現(xiàn)該功能所需的所有視圖、服務(wù)和數(shù)據(jù)模型。模塊還可用于封裝可用于多個應(yīng)用程序重復(fù)使用的常見應(yīng)用程序基礎(chǔ)架構(gòu)或服務(wù)(例如,記錄和例外管理服務(wù))。
Module catalog(模塊目錄):
????????在復(fù)合應(yīng)用程序中,模塊必須由主機應(yīng)用程序在運行時間發(fā)現(xiàn)并加載。在 Prism 中,模塊目錄用于指定要加載的模塊、加載時間以及按什么順序加載。模塊目錄由模塊經(jīng)理和模塊加載器組件使用,它們負責(zé)在模塊處于遠程時下載模塊,將模塊的組件加載到應(yīng)用程序域中,并初始化模塊。Prism 允許以不同的方式指定模塊目錄,包括程序化地使用代碼、聲明性地使用 XAML 或使用配置文件。如果需要,您也可以實施自定義模塊目錄。
Shell(殼):
????????外殼是主機應(yīng)用程序,可加載模塊。外殼定義了應(yīng)用程序的整體布局和結(jié)構(gòu),但它通常不知道它將托管的確切模塊。它通常實現(xiàn)通用應(yīng)用程序服務(wù)和基礎(chǔ)架構(gòu),但應(yīng)用程序的大部分功能和內(nèi)容都實現(xiàn)在模塊中。外殼還提供頂層窗口或視覺元素,然后托管加載模塊提供的不同 UI 組件。
Views(視圖):
????????視圖****是 UI 控件,可將 UI 封裝為應(yīng)用程序的特定功能或功能區(qū)域。視圖與 MVVM 模式一起使用,該模式用于將 UI 與應(yīng)用程序的演示邏輯和數(shù)據(jù)之間的問題進行徹底分離。視圖用于封裝 UI 并定義用戶交互行為,從而允許獨立于基礎(chǔ)應(yīng)用功能更新或替換視圖。視圖使用數(shù)據(jù)綁定與視圖模型類進行交互。
View models(視圖模型):
????????視圖模型是封裝應(yīng)用程序演示邏輯和狀態(tài)的類。它們是 MVVM 模式的一部分。查看模型封裝了應(yīng)用程序的大部分功能。查看模型定義屬性、命令和事件,視圖中的控件可以將這些屬性、命令和事件與數(shù)據(jù)綁定在一起。
Models(模型):
????????模型類封裝應(yīng)用程序數(shù)據(jù)和業(yè)務(wù)邏輯。它們用作 MVVM 模式的一部分。模型封裝數(shù)據(jù)以及任何相關(guān)的驗證和業(yè)務(wù)規(guī)則,以確保數(shù)據(jù)一致性和完整性。
Commands(命令):
????????命令用于封裝應(yīng)用程序功能,使其能夠獨立于應(yīng)用程序的 UI 進行定義和測試。它們可以定義為命令對象或視圖模型中的命令方法。棱鏡提供代表委員會類和復(fù)合通信類。后者用于表示所有一起調(diào)用的命令集合。
Regions(區(qū)域):
????????命令用于封裝應(yīng)用程序功能,使其能夠獨立于應(yīng)用程序的 UI 進行定義和測試。它們可以定義為命令對象或視圖模型中的命令方法。棱鏡提供代表委員會類和復(fù)合通信類。后者用于表示所有一起調(diào)用的命令集合。
Navigation(導(dǎo)航):
????????導(dǎo)航定義為應(yīng)用坐標因用戶與應(yīng)用程序的交互或內(nèi)部應(yīng)用狀態(tài)更改而更改到其 UI 的過程。棱鏡支持兩種導(dǎo)航樣式:基于狀態(tài)的導(dǎo)航,其中對現(xiàn)有視圖的狀態(tài)進行更新以實現(xiàn)簡單的導(dǎo)航方案,以及創(chuàng)建新視圖并在應(yīng)用程序 UI 中替換舊視圖的視圖切換導(dǎo)航。視圖切換導(dǎo)航使用基于統(tǒng)一資源標識符 (URI) 的導(dǎo)航機制與棱鏡區(qū)域相結(jié)合,以便實施靈活的導(dǎo)航方案。
EventAggregator(事件聚合器):
????????復(fù)合應(yīng)用程序中的組件通常需要以松散耦合的方式與應(yīng)用程序中的其他組件和服務(wù)進行通信。為了支持這一點,Prism 提供了事件聚合器組件,該組件實施了酒吧子事件機制,從而允許組件發(fā)布事件和其他組件來訂閱這些事件,而不需要提及其他事件。事件聚合器通常用于允許在不同模塊中定義的組件相互通信。
Dependency injection container(依賴性注射容器):
????????復(fù)合應(yīng)用程序中的組件通常需要以松散耦合的方式與應(yīng)用程序中的其他組件和服務(wù)進行通信。為了支持這一點,Prism 提供了事件聚合器組件,該組件實施了酒吧子事件機制,從而允許組件發(fā)布事件和其他組件來訂閱這些事件,而不需要提及其他事件。事件聚合器通常用于允許在不同模塊中定義的組件相互通信。
Services(服務(wù)):
????????服務(wù)是封裝非 UI 相關(guān)功能的組件,例如記錄、異常管理和數(shù)據(jù)訪問。服務(wù)可以通過應(yīng)用程序或模塊內(nèi)定義。服務(wù)通常在依賴性注射容器中注冊,以便根據(jù)需要定位或構(gòu)建,并由依賴它們的其他組件使用。
Controllers(控制器):
????????控制器是用于協(xié)調(diào)在應(yīng)用程序 UI 區(qū)域內(nèi)顯示的意見的構(gòu)建和初始化的類??刂破鞣庋b了確定要顯示哪些視圖的演示邏輯??刂破鲗⑹褂?Prism 的視圖切換導(dǎo)航機制,該機制提供可擴展的 URI 導(dǎo)航機制,以協(xié)調(diào)區(qū)域內(nèi)意見的構(gòu)建和放置。應(yīng)用控制器模式定義了一個抽象概念,該抽象圖映射到此責(zé)任。文章來源地址http://www.zghlxwxcb.cn/news/detail-449631.html文章來源:http://www.zghlxwxcb.cn/news/detail-449631.html
Bootstrapper(引導(dǎo)器):
????????控制器是用于協(xié)調(diào)在應(yīng)用程序 UI 區(qū)域內(nèi)顯示的意見的構(gòu)建和初始化的類??刂破鞣庋b了確定要顯示哪些視圖的演示邏輯??刂破鲗⑹褂?Prism 的視圖切換導(dǎo)航機制,該機制提供可擴展的 URI 導(dǎo)航機制,以協(xié)調(diào)區(qū)域內(nèi)意見的構(gòu)建和放置。應(yīng)用控制器模式定義了一個抽象概念,該抽象圖映射到此責(zé)任。
到了這里,關(guān)于簡介WPF的Prism框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!