ASP.Net CoreでLamarを使用する全プロセス
前言
ASP.Net Coreは非常にシンプルなケースを持っています。すなわち、注入容器に依存しています。実際には、第三者の依存注入容器を使って、それを代替することもできます。注入に依存するのは、オブジェクト間の結合を効果的に実現し、ユニットのテストとメンテナンス性を向上させることができます。元々のようにnewオブジェクトが溢れていません。
Lamarは人気があって、効率的で、モジュール化されたIOC容器です。この記事ではASP.Net CoreでLamarを使う方法を検討します。
なぜLamarで依存注入を実現しますか?
NETの世界で最初の依存注入容器は、StructureMapに属するが、StructureMapの最大の欠点は性能の問題であり、本編のLamarは非常に軽量であり、APIを呼び出すために豊富な提供されており、LamarとStructureMapは非常に類似しています。
Lamarを取り付ける
ASP.Net CoreでLamartを使用するには、nugtで次の二つのカバンをインストールする必要があります。 Lamar Lamart.Microsoft.DependencyInjection 可視化インターフェースを通して、Manage NuGet Packageができます。
または以下のコマンドでインストールします。
まずIDBMannagerインターフェースクラスを作成し、後続の依存注入用に使用します。コードの定義は以下の通りです。
Lamart.Microsoft.DependencyInjectionパッケージは、ASP.Net CoreベースアーキテクチャにLamarを導入する方法を提供しています。次のコードはどのように実現するかを示しています。
次にConfigreServices()メソッドにContiner容器を配置することができます。コードは以下の通りです。
次に、ControllerでDBManagerのインスタンスを注入に依存して取得することができます。実現コードは以下の通りです。
訳文のリンク:https://www.infoworld.com/article/3339698/how-to-use-lamar-in-aspnet-core.html
締め括りをつける
ここではASP.Net CoreでLamarを使った文章について紹介します。ASP.Net CoreはLamarを使っています。以前の記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。
ASP.Net Coreは非常にシンプルなケースを持っています。すなわち、注入容器に依存しています。実際には、第三者の依存注入容器を使って、それを代替することもできます。注入に依存するのは、オブジェクト間の結合を効果的に実現し、ユニットのテストとメンテナンス性を向上させることができます。元々のようにnewオブジェクトが溢れていません。
Lamarは人気があって、効率的で、モジュール化されたIOC容器です。この記事ではASP.Net CoreでLamarを使う方法を検討します。
なぜLamarで依存注入を実現しますか?
NETの世界で最初の依存注入容器は、StructureMapに属するが、StructureMapの最大の欠点は性能の問題であり、本編のLamarは非常に軽量であり、APIを呼び出すために豊富な提供されており、LamarとStructureMapは非常に類似しています。
Lamarを取り付ける
ASP.Net CoreでLamartを使用するには、nugtで次の二つのカバンをインストールする必要があります。
または以下のコマンドでインストールします。
Install-Package Lamar
Install-Package Lamar.Microsoft.DependencyInjection
IDBMannagerとDBManagerを作成します。まずIDBMannagerインターフェースクラスを作成し、後続の依存注入用に使用します。コードの定義は以下の通りです。
public interface IDBManager
{
void Initialize();
bool Save<T>(T obj);
}
次にDBManagerクラスを定義し、インターフェースIDBMannagerを実現します。コードの定義は以下の通りです。
public class DBManager: IDBManager
{
public void Initialize()
{
//Write some initialization code here
}
public bool Save<T>(T obj)
{
//Write your code here
return true;
}
}
設定LamarLamart.Microsoft.DependencyInjectionパッケージは、ASP.Net CoreベースアーキテクチャにLamarを導入する方法を提供しています。次のコードはどのように実現するかを示しています。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).UseLamar().Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
ランマ容器の配置次にConfigreServices()メソッドにContiner容器を配置することができます。コードは以下の通りです。
public void ConfigureServices(IServiceCollection services)
{
var container = new Container(x =>
{
x.AddTransient<IDBManager, DBManager>();
});
services.AddControllersWithViews();
}
注目すべきはLamarは強力な自動組立能力を持っています。要求タイプと必要なタイプのコンストラクターを検索して、その必要な例を構築できます。以下のコードはConfigreContiner()方法によってどのように実現されるかを示しています。ここでこの方法をStartupクラスに置いて、完全なコードは以下の通りです。
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
var container = new Container(x =>
{
x.AddTransient<IDBManager, DBManager>();
});
services.AddControllersWithViews();
}
public void ConfigureContainer(ServiceRegistry services)
{
services.Scan(s =>
{
s.TheCallingAssembly();
s.WithDefaultConventions();
});
}
}
ControllerにDBManagerを注入した例次に、ControllerでDBManagerのインスタンスを注入に依存して取得することができます。実現コードは以下の通りです。
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private IDBManager _dbManager;
public HomeController(ILogger<HomeController> logger, IDBManager dbManager)
{
_logger = logger;
_dbManager = dbManager;
}
public IActionResult Index()
{
return View();
}
}
ASP.Net Coreが持っている注入容器はIOCサークルに置いておくと本当に弱いです。第三者が拡張する必要があります。Lamarはこのような非常に優秀なIOC容器で、Structure Mapのとても良い代替品です。訳文のリンク:https://www.infoworld.com/article/3339698/how-to-use-lamar-in-aspnet-core.html
締め括りをつける
ここではASP.Net CoreでLamarを使った文章について紹介します。ASP.Net CoreはLamarを使っています。以前の記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。