使用電子書的企業 Xamarin.Forms 應用程式模式

開發可調整、可維護且可 Xamarin.Forms 測試的企業應用程式的架構指引

Enterprise Application Patterns using Xamarin.Forms eBook

注意

本電子書於 2017 年春季出版,此後尚未更新。 這本書中有很多仍然有價值的,但一些材料已經過時。

本電子書提供如何實作Model-View-ViewModel (MVVM) 模式、相依性插入、流覽、驗證和組態管理的指引,同時維持鬆散結合。 還提供有關使用 IdentityServer 執行驗證和授權、從容器化微服務存取資料,以及單元測試的指引。

Preface

本章說明指南的目的和範圍,以及其目標物件。

簡介

企業應用程式的開發人員面臨數個可在開發期間改變應用程式架構的挑戰。 因此,請務必建置應用程式,讓應用程式可隨著時間進行修改或擴充。 設計此類可適性可能很困難,但這通常涉及將應用程式分割成離散、鬆散結合的元件,其可以輕鬆地整合至應用程式。

MVVM

Model-View-ViewModel (MVVM) 模式有助於清除應用程式的商業和呈現邏輯與其使用者介面(UI)。 維護應用程式邏輯與UI之間的全新區隔有助於解決許多開發問題,並讓應用程式更容易測試、維護和發展。 它也可以大幅改善程式代碼重複使用的機會,並允許開發人員和UI設計工具在開發應用程式各自的部分時更輕鬆地共同作業。

相依性插入

相依性插入可讓您將具體類型與相依於這些類型的程式代碼分離。 這項技術通常會使用容器來保存介面和抽象類型之間的登錄和對應清單,以及實作或擴充這些類型的具體類型。

相依性插入容器可提供一項功能來具現化類別執行個體,並根據容器組態管理其存留期,以便減少物件間的結合程度。 在物件建立期間,容器會將物件所需的任何相依性插入其中。 若尚未建立這些相依性,容器則會先建立並解析其相依性。

在相依性低的元件之間通訊

類別 Xamarin.FormsMessagingCenter 會實作發佈-訂閱模式,允許元件之間的訊息式通訊,這些元件無法依物件和型別參考連結。 此機制可讓發行者和訂閱者在彼此沒有參考的情況下進行通訊,有助於減少元件之間的相依性,同時還能讓元件獨立開發和測試。

Xamarin.Forms 包含頁面流覽的支援,這通常是因為使用者與UI的互動,或應用程式本身,因為內部邏輯驅動狀態變更所致。 但在使用 MVVM 模式的應用程式中實作導覽,可能相當複雜。

本章提供類別 NavigationService ,用來從檢視模型執行檢視模型優先流覽。 將瀏覽邏輯放在檢視模型類別中,表示可以透過自動化測試來練習邏輯。 此外,檢視模型接著可以實作邏輯來控制導覽,以確保強制執行特定商務規則。

驗證

任何接受使用者輸入的應用程式都應該確保輸入的內容有效。 如不經驗證,使用者可能會提供導致應用程式失敗的資料。 驗證會強制執行商務規則,並防止攻擊者插入惡意數據。

在 Model-View-ViewModel (MVVM) 模式的內容中,通常需要有檢視模型或模型才能執行資料驗證,並向檢視發出任何驗證錯誤訊號,以便使用者更正錯誤。

設定管理

設定允許區隔可設定應用程式與程式碼行為的資料,並允許變更行為,而不需要重建應用程式。 應用程式設定是應用程式所建立和管理的數據,而使用者設定是影響應用程式行為且不需要頻繁重新調整的應用程式可自定義設定。

容器化的微服務

微服務提供應用程式開發與部署的方法,這是一種適合現代化雲端應用程式靈活度、規模與可靠性需求的方法。 微服務的主要優點之一是可以獨立相應放大,這表示可以調整特定功能區域,需要更多處理能力或網路頻寬來支援需求,而不需要不必要的調整應用程式區域,而不需要增加需求。

驗證和授權

將驗證和授權 Xamarin.Forms 整合到與 ASP.NET MVC Web 應用程式通訊的應用程式有許多方法。 在這裡,會使用使用 IdentityServer 4 的容器化身分識別微服務來執行驗證和授權。 IdentityServer 是開放原始碼 OpenID Connect 和適用於 ASP.NET Core 的 OAuth 2.0 架構,可與 ASP.NET Core 身分識別整合,以執行持有人權杖驗證。

存取遠端資料

許多現代化 Web 型解決方案利用網頁伺服器代管的 Web 服務來提供遠端用戶端應用程式所需功能。 Web 服務所公開的作業會構成 Web API,用戶端應用程式應能夠利用此 Web API,而不需要知道 API 所公開資料或作業的實作方式。

單元測試

從 MVVM 應用程式測試模型和檢視模型,與測試任何其他類別的方式相同,且可以使用相同的工具和技術。 不過,有些模式是典型的模型和檢視模型類別,可受益於特定的單元測試技術。

社群網站

此專案有一個社群網站,您可以在其中張貼問題並提供意見反應。 社群網站位於 GitHub 上。 或者,有關電子書的意見反應可以透過電子郵件傳送至 dotnet-architecture-ebooks-feedback@service.microsoft.com