본문 바로가기

반응형

전체 글

(186)
.NET에서 종속성 주입 .NET는 클래스와 해당 종속성 간의 IoC(Inversion of Control)를 실현하는 기술인 DI(종속성 주입) 소프트웨어 디자인 패턴을 지원합니다. .NET의 종속성 주입은 구성, 로깅 및 옵션 패턴과 함께 프레임워크의 기본 제공 부분입니다. 종속성 주입은 다음을 통해 이러한 문제를 해결합니다. 인터페이스 또는 기본 클래스를 사용하여 종속성 구현을 추상화합니다. 서비스 컨테이너에 종속성 등록. .NET는 서비스 컨테이너인 IServiceProvider를 기본 제공합니다. 서비스는 일반적으로 앱의 시작에 등록되고 IServiceCollection에 추가됩니다. 모든 서비스가 추가되면 BuildServiceProvider를 사용하여 서비스 컨테이너를 만듭니다. 서비스가 사용되는 클래스의 생성자에 ..
DI(의존성 주입) 사용하는 이유 DI는 Singleton의 단점을 해결하기 위한 패턴이다. Singleton의 장점이 무엇이냐고 하면 일단 객체를 한 번 생성해서 계속적으로 재 사용하여 성능과 가독성을 아끼는 패턴이다. 많은 프로그램에서 가장 즐겨쓰는 패턴이 아닐까 싶다. 그러나 Singleton의 치명적인 단점은 생성자가 private라는 것이다. 즉, 상속이나 확장이 불가능한 패턴이다. 왜냐하면 Singleton의 class 를 상속받으면 생성자가 private이기 때문에 상속받은 클래스는 생성자를 만들 수 없다. 생성자가 없는 클래스는 존재하지 않는다. 이런 단점이 있기 때문에 프로그램에서 Dao(Database access object)의 경우응 커넥션 제어를 위해 Singleton을 만드는게 유리하지만 확장성이 용이하지 않기 ..
DI(Dependency Injection, 의존성 주입) 1. Dependency(의존관계) - A가 B를 의존한다. => 의존대상 B가 변하면, 그것이 A에 영향을 미친다. => 즉, B의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에 미친다. - 다양한 클래스가 특정 클래스에 의존하려면, 특정 클래스는 다양한 클래스가 의존 받을 수 있게 인터페이스로 추상화 해야 한다. => 의존 관계를 인터페이스로 추상화하게 되면, 더 다양한 의존 관계를 맺을 수가 있고, 실제 구현 클래스와의 관계가 느슨해지고, 결합도가 낮아진다. 2. Injection(주입) - 내부가 아니라 외부에서 객체를 생성해서 넣어주는 것 3. Dependency Injection(의존성 주입) - 의존 관계를 외부에서 결정하고 주입하는 것 - 토비의 스프링에서는 다음 3가지 조건을..
TableLayout에서 Label Ellipsis 사용하기 Label의 속성을 Dock - None Anchor - Top, Left, Right AutoEllipsis - True AutoSizeMode - None 으로 세팅해주고 Table Column의 속성을 백분율 형식(크기 자동 조정 안 됨) 으로 세팅해준다.
[Visual Studio] 사용하면 좋을 Extensions https://www.syncfusion.com/blogs/post/15-must-have-visual-studio-extensions-for-developers.aspx/amp SonarLint Indent Guides ReSharper RockMargin -> https://learn.microsoft.com/ko-kr/visualstudio/ide/how-to-track-your-code-by-customizing-the-scrollbar?view=vs-2022 폰트 관련 https://www.codingfont.com/ https://futurecreator.github.io/2018/11/12/my-best-programming-font-top-3/ 지금은 Cascadia Code 폰트 사용하고..
[암호화] 용어 정리 1. 대칭형 암복호화 - AES, DES, SEED 등등 방식이 있다. - 암호화/복호화시 key가 동일한 형태 - DES와 AES 차이 - DES : 개인키를 사용하여 데이터를 암호화하는 방법으로서 널리 사용된다. 각 64 비트 데이터 블록에, 56 비트 길이의 키를 적용한다. 많은 회사들은 세 개의 키가 잇달아 적용되는 '트리플 DES(= 3DES = DES-EDE)'를 사용한다. - AES : 1998년을 기점으로 표준 기한이 만료된 DES를 대체할 블럭암호의 필요성에 따라, 만들어진 기법이다. Block 기반 암호화 알고리즘으로 일정 길이의 암호화 키 길이 제한을 가지고 있다. 이는 AES 암호화 알고리즘의 제약이다. SQLER는 손쉬운 AES의 키 길이 설정을 위해 모든 SQLER AES 2.1..
Command Line Argument C# 프로그램 (EXE 실행 파일)을 콘솔 윈도우(cmd.exe)에서 실행할 때, 실행파일 뒤에 프로그램에서 사용할 옵션들(Command-Line Argument라 부름)을 사용할 수 있다. 이렇게 지정된 옵션들은 C# 프로그램의 Main(string[] args) 메서드의 입력 파라미터인 args에 전달된다. static void Main(string[] args) { int argsCount = args.Length; if (argsCount < 2) { Console.WriteLine("Usage: MyApp.exe {inputFilename} {outputFilename}"); Console.WriteLine(" ex) MyApp.exe data.inp data.out"); return; } st..
Task cancellation Task, Task 클래스는 cancellation tokens을 사용하여 취소를 지원합니다. 작업 클래스에서 취소하려면 취소할 수 있는 작업을 나타내는 사용자 대리자와 취소를 요청한 코드 간의 협조가 필요합니다. 성공적으로 취소하려면 CancellationTokenSource.Cancel 메서드를 호출하는 요청 코드와 적절한 시간에 작업을 종료하는 사용자 대리자가 필요합니다. 다음 방법 중 하나를 사용하여 작업을 종료할 수 있습니다. 대리자에서 반환합니다. 많은 시나리오에서 이 옵션은 충분합니다. 그러나 이러한 방식으로 취소된 작업 인스턴스는 TaskStatus.Canceled 상태가 아닌 TaskStatus.RanToCompletion 상태로 전환됩니다. OperationCanceledExceptio..

반응형