Autofac is an IoC container for Microsoft .NET. It manages the dependencies between classes so that applications stay easy to change as they grow in size and complexity(GitHub-Autofac 2019). Autofac is an addictive Inversion of Control container for .NET Core, ASP.NET Core, .NET 4.5.1+, Universal Windows apps, and more(autofac.org 2019).
닷넷 프레임워크를 사용하다 보면 의존성 주입이란 단어가 자주 등장한다. ASP.NET Core MVC, WPF MVVM 그리고 Caliburn.Micro에서 Ioc.Get<T>() 에서 DI를 사용하는 예를 볼 수 있는 데 이번 글에서는 일반적인 개발환경에서 DI를 자동으로 그리고 쉽게 사용할 수 있는 Autofac 패키지의 사용법을 간단하게 작성해보았다. 참고 : 일반적인 DI, Interface 사용법 보기
// Program.cs
using Autofac;
using System;
namespace ConsoleUI
{
class Program
{
static void Main()
{
var container = ContainerConfig.Configure();
using(var scope = container.BeginLifetimeScope())
{
var app = scope.Resolve<IApplication>();
app.Execute();
}
Console.ReadLine();
}
}
}
닷넷 코어 3.0 버전에는 Worker Service라 불리는 새로운 template이 추가되었다. 윈도우 서비스 프로그램을 쉽게 작성하게 해준다. 아래의 예제는 닷넷 유튜브 강좌로 유명한 IAmTimCorey가 강의한 내용을 소스 코드 형식으로 정리한 것이다.
사용한 환경은 Visual Studio 2019 16.2.5, .NET Core 3.0 Preview 7이며 프로젝트 생성 시 ASP.NET Core 웹 응용 프로그램으로 프로젝트를 진행 후 작업자 서비스(Worker Service)를 선택한다.
최종 작성된 실행 파일을 로그 텍스트 파일과 같은 위치에 놓고 윈도우 서비스를 다음과 같이 등록한다. 파워셸 관리자 모드 필요.
PS C:\> sc.exe create WebsiteStatus binpath=C:\Test\WebsiteStatus.exe start=auto
[SC] CreateService 성공
PS C:\> sc.exe delete WebsiteStatus
[SC] DeleteService 성공
아래는 전체 소스이다. Program.cs, Worker.cs
ASP.NET MVC 뷰(single view)에 여러 모델을 바인딩하는 예제이다. 하나의 Controller로 작성하여 Partial View 활용까지 6가지 정도의 방법(WebGentle 2018)을 기술하였다. (.NET Core 3.0)
아래의 소스는 편의상 컨트롤러와 모델, 뷰는 공통으로 사용하고 Partial View 예제에 두 개의 뷰를 추가하였다.