닷넷 코어 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 예제에 두 개의 뷰를 추가하였다.
ASP.NET MVC에서는 기본적으로 생성된 프로젝트에서 모델(클래스)의 필드에 정의된 DisplayName을 View에서 표현할 수 있다. WPF/Winform에서 사용자 함수인 GetDisPlayName()을 사용해보고 여기에 LINQ, Lambda를 이용해서 모델을 사용하는 간단한 예제를 작성했다.
public static string GetDisPlayName<T>(string fieldName) where T : class
{
var nameInfo = typeof(T).GetProperty(fieldName);
var obj = nameInfo?.GetCustomAttributes(typeof(DisplayNameAttribute), true);
return obj?.Cast<DisplayNameAttribute>().FirstOrDefault()?.DisplayName ?? fieldName;
}
// Console.WriteLine(GetDisPlayName<Person>(nameof(Person.EmpName)));
화면에서 사용한 전체 소소는 아래의 내용을 참고한다.