728x90
24.08.13 CS, C#
CS
Authentication/Authorization
- 보통 우리가 권한이라고 불리우는 것엔 인증(Authentication)과 인가/승인(Authorization) 두 가지 단어가 존재하는데, 비슷해보이지만 엄연한 차이가 존재한다.
- 인증(Authentication)
- 본인이 누구인지 확인 (로그인)
- 승인(Authorization)
- 특정 리소스에 권한이 있는지 확인 (등급 권한)
- 인증(Authentication)
인증 (Authentication) 인가(Authorization)
기능 | 자격 증명 확인 | 권한 허가/거부 |
진행 방식 | 비밀번호, 생체인식, 일회용 핀 | 보안 팀에서 관리하는 설정 |
사용자가 볼 수 있는가? | 예 | 아니요 |
사용자가 직접 변경할 수 있는가? | 부분적으로 가능 | 불가능 |
데이터 전송 | ID 토큰 사용 | 액세스 토큰 사용 |
참조
https://inpa.tistory.com/entry/CS-👨💻-Authentication-vs-Authorization-차이-엄청-쉽게-설명
프로세스/데몬/서비스
프로세스 (Process)
- 프로세스는 메모리에 적재되어 CPU에 의해 실행되는 컴퓨터 프로그램을 지칭한다.
- 각 프로세스는 고유한 프로세스 ID(PID)를 가지며, 운영체제는 프로세스 간의 자원 공유를 관리한다.
- 프로세스는 눈에 보이는 프로세스(foreground process) 와 눈에 보이지 않은 프로세스(background process)로 구분된다.
포그라운드 프로세스 백그라운드 프로세스
사용자와 상호작용하는 프로세스 | 프로세스는 사용자와 상호작용하지 않고 시스템에서 실행되는 프로세스 |
최소화를 하더라도 눈에 보이는 프로세스를 포그라운드 프로세스 | 눈에 보이지 않지만 뒤에서 일을 하고 있는 프로세스를 백그라운드 프로세스 |
인터넷, 카카오톡, 메모장, 그림판 등 눈에 보이는 프로그램 | 백심 프로그램, 그래픽 드라이버, 마이크 드라이버 등 눈에 보이지 않는 프로그램 |
데몬(Daemon)
- 데몬은 백그라운드에서 실행되는 프로그램으로, 사용자가 직접적으로 제어하지 않고 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다. 사용자의 요청을 기다리고 있다가 요청이 발생하면 이에 적절히 대응하는 리스너와 같은 역할을 한다.
- 즉, 메모리에 상주하면서 특정 요청이 오면 즉시 대응 할 수 있도록 대기중인 프로세스를 말한다.
- 데몬은 항상 돌아가고 있어야하는 웹서버에 적합하여 일반적으로 서버에서 주로 사용된다. 대표적인 예로 Appache 웹서버의 httpd가 바로 데몬 프로그램이다. httpd는 웹서버에 백그라운드에서 실행되면서 서버로 들어오는 요청에 자동으로 응답해 준다.
- 이밖에도 유닉스(리눅스) 운영체제에서 프로세스 이름 끝이 d로 끝나는 프로세스들이 대표적이다.
서비스(Service)
- 서비스는 백그라운드에서 실행되는 응용 프로그램이다. 윈도우 서비스는 일반적으로 사용자 인터페이스를 필요로 하지 않는 작업(네트워크 서비스, 데이터베이스 서버, 백업 서비스) 등을 수행한다. 이러한 서비스들은 시스템이 부팅될 때 자동으로 시작되며, 사용자가 로그인하지 않은 상태에서도 계속해서 실행된다.
데몬 vs 서비스
- Daemon과 Service는 비슷한 개념이지만, 운영 체제 차이점이 있다.
- 그외에도 사용처에도 차이가 있는데, 데몬은 일반적으로 서버에서 주로 사용되고, 서비스는 다른 프로그램이나 서비스를 지원하기 위해 실행된다.
- 데몬은 시스템에서 독립적으로 실행되고, 서비스는 시스템의 상태를 모니터링하고, 백그라운드에서 실행되는 애플리케이션을 제어하고, 작업을 수항해는 역할 지원에 초점이 맞춰져있다.
- 하지만 이들 용어는 종종 상호교환적으로 사용되기도 하며, 컴퓨터 시스템에서 다양한 역할을 수행하므로, 구체적인 용어 해석은 사용되는 컨텍스트에 따라 달라질 수 있다.
- 예를들어 리눅스에서 포트/프로토콜 정보를 정의해놓은 /etc/services 디렉토리가 있기 때문에 두 OS에서 서비스와 데몬은 혼용되어 쓰인다고 보면 된다.
참조
https://inpa.tistory.com/entry/프로세스-데몬-서비스-정리
C#
Project Sdk
- .NET 프로젝트에서 사용되는 새로운 프로젝트 형식이다.
- .NET Core, .NET 5이상, 그리고 .NET Standard 프로젝트에서 주로 사용되며, 프로젝트 파일(.csproj)을 더 간단하고 효율적으로 작성할 수 있도록 돕는다.
주요 특징
- 간결함
- 기존의 .csproj 파일은 복잡하고 장황할 수 있었으나, Project Sdk 형식에서는 불필요한 정보가 생략되고 간결한 형식으로 작성할 수 있다.
- 기본 설정
- 많은 기본 설정이 자동으로 적용되므로, 필요한 설정만 추가로 정의하면 된다.
- 확장설
- Sdk는 확장 가능하며, 새로운 Sdk나 도구를 쉽게 추가할 수 있다.
기본 구조
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>
</Project>
- <Project Sdk = “…”>
- 프로젝트 파일의 루트 요소이다. Sdk 속성은 이 프로젝트가 어떤 Sdk를 사용하고 있는지를 나타낸다.
- ex) Microsoft.NET.Sdk, Microsoft.NET.Sdk.Web, Microsoft.NET.Sdk.Razor 등이 있다.
- 프로젝트 파일의 루트 요소이다. Sdk 속성은 이 프로젝트가 어떤 Sdk를 사용하고 있는지를 나타낸다.
- <PropertyGroup>
- 프로젝트의 속성들을 그룹화한다.
- 각 속성은 프로젝트의 특정 특성을 정의한다.
- OutputType
- 출력 형식을 정의한다.
- ex) Exe, Library 등이 있다.
- 출력 형식을 정의한다.
- TargetFramework
- 프로젝트가 타겟으로 하는 .NET 프레임워크 버전을 지정한다.
- Nullable
- 널 가능성 컨텍스트를 설정한다.
- ex) enable, disable
- 널 가능성 컨텍스트를 설정한다.
- ImplicitUsings
- 기본적으로 포함되는 using문을 활성화한다.
- IsPublishable
- publish 대상을 실행할 수 있다.
- GenerateManifests
- 애플리케이션 매니페스트와 배포 매니페스트를 자동으로 생성할지 여부를 지정한다.
- GenerateAssemblyInfo
- 프로젝트 AssemblyInfo 특성 생성을 제어한다.
- 자동으로 AssemblyInfo.cs 파일을 생성할지 여부를 설정한다.
- AppendTargetFrameworkToOutputPath
- TFM(대상 프레임워크 모니커)을 출력 경로에 추가할지 여부를 제어한다.
- AppendRuntimeIdentifierToOutputPath
- RID(런타임 식별자)를 출력 경로에 추가할지 여부를 제어한다.
- AddSyntheticProjectReferencesForSolutionDependencies
- 빌드 순서를 위해 솔루션에 전달된 솔루션 종속성 정보를 사용하여 합성 프로젝트 참조를 추가할지 여부를 제어한다.
- SatelliteResourceLanguages
- 빌드 및 게시 중에 위성 리소스 어셈블리를 보존할 언어를 지정할 수 있다.
- 지정하는 언어에 대한 지역화된 어셈블리만 빌드 및 게시 출력에 포함된다.
- OutputPath
- 빌드 출력 파일들이 저장될 경로를 지정한다.
- OutputType
- <ItemGroup>
- 참조나 추가할 파일들을 정의하는 그룹이다.
- PackageReference
- NuGet 패키지를 참조한다.
- 여기서 Include는 패키지 이름, Version은 해당 패키지의 버전을 지정한다.
- ProjectReference
- 다른 프로젝트를 참조할 때 사용한다.
- Compile
- 소스 파일을 포함할 때 사용한다.
- None
- 빌드에 포함되지 않는 파일을 정의한다.
- PackageReference
- 참조나 추가할 파일들을 정의하는 그룹이다.
Project Sdk의 장점
- 자동화된 관리
- 파일 포함, 빌드 구성 등의 작업이 자동으로 관리되어, 프로젝트 설정이 더 간단해진다.
- 코드 간결화
- 필수적인 설정만 필요하며, 기본 설정은 자동으로 적용된다.
- 다양한 Sdk 지원
- 웹 프로젝트, 콘솔 애플리케이션, 라이브러리 등 다양한 유형의 프로젝트를 지원하는 여러 Sdk가 제공된다.
예시 Sdk
- Microsoft.NET.Sdk
- 기본 .NET Sdk로, 콘솔 애플리케이션, 클래스 라이브러리 등을 지원합니다.
- Microsoft.NET.Sdk.Web
- 웹 애플리케이션을 개발할 때 사용하는 Sdk이다.
- Microsoft.NET.Sdk.Razor
- Razor 페이지와 Blazor를 지원하는 Sdk이다.
확장성
- Project Sdk를 통해 자신만의 Sdk를 정의하거나, 기존의 Sdk를 확장하여 사용할 수 있다.
- 또한, 빌드 도구나 타사 라이브러리를 프로젝트에 쉽게 통합할 수 있는 방법을 제공한다.
참조
https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.08.16 CS, C#, DEV (0) | 2024.08.16 |
---|---|
24.08.14 CS, Dev (0) | 2024.08.14 |
24.08.12 CS, C# (0) | 2024.08.12 |
24.08.09 C#,DEV (0) | 2024.08.09 |
24.08.08 Dev, C# (0) | 2024.08.08 |