Server

Server/ASP.NET Core Web Server

[ASP.NET Core Web API Server] ASP.NET Core Overview

ASP.NET Core에서 앱을 빌드하기 위한 기본 코드는 Program.cs에서 시작한다. Program.cs는 프로그램의 시작점으로 호스트를 빌드하고, 필요한 서비스들과 미들웨어를 추가하는 작업을 한다. Program.cs를 통해 ASP.NET Core의 전반적인 동작 과정을 파악해보자. ASP.NET Core 웹 어플리케이션을 만들기 위한 웹 프레임워크의 크로스 플랫폼 버전이다. 따라서, 윈도우, 맥, 리눅스 등 다양한 플랫폼에서 실행된다. Program.cs Program.cs 파일에 어플리케이션 시작 코드를 포함한다. 즉, C의 main함수와 같은 프로그램의 진입점이라고 할 수 있다. 앱에서 요구하는 서비스를 구성한다. 앱의 요청 처리 파이프라인이 일련의 미들웨어 구성 요소로 정의된다. Main..

Server/Multithreading

[Object Pool] SList를 사용한 Object Pool 구현(2)

SList(Interlocked Singly Linked List)를 활용하여 Object Pool을 구현해봤다. Poolable Object Pool을 통해 관리할 객체들은 Poolable 클래스를 상속받아야 한다. Poolable 객체는 Object Pool에 의해 관리된다. operator new와 delete를 오버로딩하여 object pool을 사용한 할당과 해제방식으로 변경했다. new 연산자에서는 object pool에서 객체를 하나 꺼내오고, delete 연산자에서는 object pool에 사용한 객체를 넣는다. Object Pool Object Pool은 SList를 통해 구현했다. Push는 리스트에 Poolable 객체를 넣는 메소드다. InterlockedPushEntrySList ..

Server/Multithreading

[Object Pool] SList를 사용한 Object Pool 구현(1)

SList를 사용해서 Object Pool을 구현해 보려고 한다. 구현에 앞서 SList에 대해 알아보자 Interlocked Singly linked list(SList) MS에서 제공하는 연결 리스트로 atomic operation을 지원한다. 모든 항목은 MEMORY_ALLOCATION_ALIGNMENT boundary에 정렬되어야 한다. 정렬되지 않은 항목은 예측할 수 없는 결과를 초래할 수 있다고 한다. 따라서, 할당시 _aligned_malloc을 사용해야 한다. SList의 헤더는 SLIST_HEADER, 엔트리는 SLIST_ENTRY 타입이다. SLIST_HEADER SList의 헤더로, 맨 처음에 위치한 아이템을 가리킨다. depth는 SList에 포함된 데이터의 개수를 의미한다. seq..

Server/ASP.NET Core Web Server

[Web Server] 01 : HTTP

HTTP = Hypertext Transfer Protocol www(world wide web), 즉 인터넷 상에서 데이터를 주고 받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고 받는데 사용된다. 서버와 클라이언트 사이에 이루어지는 요청/응답 프로토콜이다. 클라이언트가 Request(요청)를 보내면, 서버는 이 요청에 Response(응답)한다. 예를 들어, 클라이언트인 웹 브라우저가 HTTP를 통해 웹페이지(HTML)을 요청하면, 서버는 해당 웹 페이지에 대한 데이터를 사용자에게 전달하여 응답한다. Connections HTTP는 TCP/IP를 사용해서 데이터를 주고 받는다. TCP/IP를 사용하기 때문에 신뢰성이 보장된다. 클라이언트와 서버의 연결 과정은 다음과 같다. 1. 클라이언트의 웹 ..

Server/Socket Server

[I/O Models] SELECT 모델

Non-blocking 소켓을 사용하되, 준비되었을 때를 미리 파악할 수 있도록 하자! Multiplexing I/O Model select 모델은 Multiplexing I/O 모델로 분류된다. Multiplexing 모델은 먼저 소켓 리스트들을 등록하고, 등록된 소켓 리스트들 중에 send나 recv와 같은 I/O 작업이 수행 가능한 준비 상태의 소켓들을 알려주는 API를 제공한다. I/O가 가능한 소켓에 대해서만 I/O 함수를 호출하기 때문에 스레드가 blocking되지 않고 실행 결과를 바로 받을 수 있다. 따라서, 적은 수의 스레드로도 다중 접속을 처리할 수 있다. Multiplexing I/O Model에는 select, poll, epoll이 있다. 이 중 windows와 linux 두 운영..

Tuesberry
'Server' 카테고리의 글 목록