Study/TIL(Today I Learned)

24.08.13 CS, C#

에린_1 2024. 8. 13. 19:51
728x90

24.08.13 CS, C#

CS

Authentication/Authorization

  • 보통 우리가 권한이라고 불리우는 것엔 인증(Authentication)과 인가/승인(Authorization) 두 가지 단어가 존재하는데, 비슷해보이지만 엄연한 차이가 존재한다.
    • 인증(Authentication)
      • 본인이 누구인지 확인 (로그인)
    • 승인(Authorization)
      • 특정 리소스에 권한이 있는지 확인 (등급 권한)

인증 (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>
  1. <Project Sdk = “…”>
    • 프로젝트 파일의 루트 요소이다. Sdk 속성은 이 프로젝트가 어떤 Sdk를 사용하고 있는지를 나타낸다.
  2. <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
        • 빌드 출력 파일들이 저장될 경로를 지정한다.
  3. <ItemGroup>
    • 참조나 추가할 파일들을 정의하는 그룹이다.
      • PackageReference
        • NuGet 패키지를 참조한다.
        • 여기서 Include는 패키지 이름, Version은 해당 패키지의 버전을 지정한다.
      • ProjectReference
        • 다른 프로젝트를 참조할 때 사용한다.
      • Compile
        • 소스 파일을 포함할 때 사용한다.
      • None
        • 빌드에 포함되지 않는 파일을 정의한다.

Project Sdk의 장점

  1. 자동화된 관리
    • 파일 포함, 빌드 구성 등의 작업이 자동으로 관리되어, 프로젝트 설정이 더 간단해진다.
  2. 코드 간결화
    • 필수적인 설정만 필요하며, 기본 설정은 자동으로 적용된다.
  3. 다양한 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/visualstudio/msbuild/msbuild-project-file-schema-reference?view=vs-2022

https://learn.microsoft.com/en-us/visualstudio/msbuild/common-msbuild-project-properties?view=vs-2022

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