Xamarin.Forms 電子ブックを使用するエンタープライズ アプリケーション パターン

適応性、保守性、およびテスト Xamarin.Forms 可能なエンタープライズ アプリケーションを開発するためのアーキテクチャ ガイダンス

電子ブックを使用 Xamarin.Forms したエンタープライズ アプリケーション パターン

Note

この電子ブックは 2017 年の春に発行され、それ以来更新されていません。 貴重なままの本に多くがありますが、資料の一部は時代遅れです。

この電子ブックでは、疎結合を維持しながら、Model-View-ViewModel (MVVM) パターン、依存関係の挿入、ナビゲーション、検証、および構成管理を実装する方法に関するガイダンスを提供します。 さらに、IdentityServer での認証と承認の実行、コンテナー化されたマイクロサービスからのデータへのアクセス、単体テストに関するガイダンスもあります。

「はじめに」

この章では、ガイドの目的と範囲と、それが目的としているユーザーについて説明します。

はじめに

エンタープライズ アプリの開発者は、開発中にアプリのアーキテクチャを変更する可能性があるいくつかの課題に直面します。 このため、時間の経過に伴ってアプリを変更または拡張できるようにアプリを構築することが重要です。 このような適応性を考慮した設計は困難な場合がありますが、通常は、アプリに簡単に統合できるようにアプリを個別の疎結合コンポーネントに分割します。

MVVM

Model-View-ViewModel (MVVM) パターンは、アプリケーションのビジネス ロジックとプレゼンテーション ロジックをユーザー インターフェイス (UI) からクリーンに分離するのに役立ちます。 アプリケーション ロジックと UI のクリーン分離を維持すると、多くの開発上の問題に対処するのに役立ち、アプリケーションのテスト、保守、および進化を容易にすることができます。 また、コードの再利用の機会を大幅に向上させ、開発者と UI デザイナーがアプリのそれぞれの部分を開発するときに、より簡単に共同作業を行うことができます。

依存関係の挿入

依存関係の挿入により、これらの型に依存するコードから具象型を分離できます。 通常、インターフェイスと抽象型の登録とそれらの間のマッピングの一覧、およびこれらの型を実装または拡張する具象型を保持するコンテナーが使用されます。

依存関係の挿入コンテナーにより、クラス インスタンスをインスタンス化し、コンテナーの構成に基づいてインスタンスの有効期間を管理するための機能が提供され、オブジェクト間の結合が削減されます。 オブジェクトの作成時に、コンテナーはオブジェクトに必要な依存関係を挿入します。 これらの依存関係はまだ作成されていない場合、コンテナーでは最初に依存関係を作成して解決します。

疎結合コンポーネント間の通信

クラスは Xamarin.FormsMessagingCenter パブリッシュ/サブスクライブ パターンを実装し、オブジェクトと型の参照によるリンクに不便なコンポーネント間のメッセージ ベースの通信を可能にします。 このメカニズムにより、パブリッシャーとサブスクライバーは相互に参照することなく通信できるため、コンポーネント間の依存関係を減らすことができます。また、コンポーネントを個別に開発およびテストすることもできます。

Xamarin.Forms には、ページ ナビゲーションのサポートが含まれています。これは、通常、ユーザーが UI を操作した場合、または内部ロジックドリブン状態の変更の結果としてアプリ自体から行われます。 ところが、MVVM パターンを使用するアプリで実装するナビゲーションは複雑になる場合があります。

この章では、ビュー モデルからビュー モデル優先ナビゲーションを実行するために使用される クラスを示 NavigationService します。 ビュー モデル クラスにナビゲーション ロジックを配置することは、自動テストを通じてロジックを実行できることを意味します。 さらに、ビュー モデルでは、ナビゲーションを制御するロジックを実装して、特定のビジネス ルールが確実に適用されるようにすることができます。

検証

ユーザーから入力を受け取るアプリでは、その入力が有効であることを確認する必要があります。 検証を行わないと、ユーザーはアプリが失敗する原因となるデータを提供する危険性があります。 検証はビジネス ルールを適用し、攻撃者が悪意のあるデータを挿入するのを防ぎます。

Model-View-ViewModel (MVVM) パターンのコンテキストでは、多くの場合、ユーザーが修正できるように、データ検証を実行し、検証エラーをビューに通知するためにビュー モデルまたはモデルが必要になります。

構成管理

設定を使用すると、アプリの動作を構成するデータをコードから分離できるため、アプリを再構築せずに動作を変更できます。 アプリの設定はアプリによって作成および管理されるデータであり、ユーザー設定はアプリの動作に影響を与え、頻繁に再調整を必要としないアプリのカスタマイズ可能な設定です。

コンテナー化 Microservices

マイクロサービスは、アプリケーションの開発と展開のアプローチを提供します。これは、最新のクラウド アプリケーションの機敏性、スケール、信頼性の要件に適したアプローチです。 マイクロサービスのメインの利点の 1 つは、個別にスケールアウトできることです。つまり、需要が増加していないアプリケーションの領域を不必要にスケーリングすることなく、需要をサポートするためにより多くの処理能力またはネットワーク帯域幅を必要とする特定の機能領域をスケールできます。

認証と承認

認証と承認を、ASP.NET MVC Web アプリケーションと通信するアプリに Xamarin.Forms 統合するには、多くの方法があります。 ここでは、IdentityServer 4 を使用するコンテナー化された ID マイクロサービスを使用して認証と承認が実行されます。 IdentityServer は、ASP.NET Core Identity と統合してベアラー トークン認証を実行する ASP.NET Core 用の、オープンソースの OpenID Connect および OAuth 2.0 フレームワークです。

リモート データへのアクセス

現代の多くの Web ベース ソリューションでは、Web サーバーによりホストされる Web サービスを使用することで、リモート クライアント アプリケーションの機能を提供します。 Web サービスによって公開される操作では Web API が構成され、クライアント アプリでは、API によって公開されるデータや操作がどのように実装されるかがわかっていなくても、Web API を利用できる必要があります。

単体テスト

MVVM アプリケーションからのモデルとビュー モデルのテストは、他のクラスのテストと同じであり、同じツールと手法を使用できます。 ただし、モデル クラスとビュー モデル クラスに一般的なパターンがいくつかあり、特定の単体テスト手法の利点を得ることができます。

コミュニティ サイト

このプロジェクトにはコミュニティ サイトがあり、質問を投稿したり、フィードバックを提供したりできます。 コミュニティ サイトは GitHub にあります。 または、電子ブックに関するフィードバックを に dotnet-architecture-ebooks-feedback@service.microsoft.com電子メールで送信することもできます。