マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ミドルウェア /サービス / フレームワークの
差し替えを実現し、特定のフレームワークへの依存性を減らす。

  • 明示的な依存関係の原則
    constructor注入のDI方式を採用している。
  • 依存性反転原則
    • 抽象化は依存関係をinterfaceに抽出することにより行われる。
    • interface実装をパラメタとして提供するのも、戦略設計パターンの例。

詳細

インジェクションの構成

以下のように、インジェクションを構成できる。

  • Public constructor
    • 1つのPublic constructor(複数のPublic constructorは例外)
    • 依存関係の挿入によって提供されない引数は、既定値のサポートが必要。
  • 抽象化は依存関係をinterfaceに抽出

※ 詳しくはコチラを参照。

対象

Startup

  • ConfigureServices?メソッドでの登録メソッドによりライフサイクルが変わってくる。
    • AddSigleton? : アプリケーションにて共有のシングルトンインスタンスを作成する。
    • AddScoped? : Webリクエストごとに新しいインスタンスを作成する。
    • AddTransient? : Dependencyが要求されるごとに新しいインスタンスを作成する。
  • Configureメソッドには、ConfigureServices?メソッドで登録したサービスが、
    IApplicationBuilder?や引数を経由で渡されるので、これを使用して構成する。

Controller

  • Constructorインジェクション
    MVCのControllerは、constructorを使用しサービスを挿入する。
  • Actionインジェクション
    Action methodのパラメタとしてサービスを挿入することもできる。

View

  • Viewインジェクション
    @inject [サービスの型] [変数名]と、Modelプロパティ風(@model ViewModel?のクラス型)に書く。

コンテナを変更する。

  • ConfigureServices? メソッドが、IServiceProvider? を返すようにシグネチャを変更する。
  • すると、Autofacなど、別のコンテナを構成して返すことができる。

参考

Microsoft Docs

DevIQ > Posts

Principles

Patterns

時が癒す

ASP.NET Core MVC のDIコンテナを利用する

Autofac


Tags: :プログラミング, :.NET開発, :.NET Core, :ASP.NET, :ASP.NET MVC


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-24 (火) 21:05:43 (176d)