Skip to Content
Suffering builds character
아카이브23.스프링 웹플럭스Java NIO, 네티네티3.이벤트 기반 프로그래밍

3.이벤트 기반 프로그래밍

Netty의 대표적인 특징 중 하나는 이벤트 기반 프로그래밍으로 이에 대한 설명은 다음과 같음

Note

이벤트 기반 프로그래밍

각 이벤트를 먼저 정의해두고 발생한 이벤트에 따라 코드가 실행되도록 프로그램을 작성하는 방식을 말함

이러한 이벤트 기반 프로그래밍은 전통적으로 사용자 인터페이스가 포함된 프로그램에 많이 사용됨

ex. 마우스를 클릭 이벤트가 발생하였을 경우 동작하는 코드

이처럼 각 이벤트들을 먼저 정의해두고 발생한 이벤트에 따라 코드가 실행되도록 프로그램을 작성하는 것을 이벤트 기반 프로그래밍이라고 함

네트워크 프로그램에서 이벤트가 발생하는 주체 중 하나는 소켓이며, 발생하는 이벤트는 크게 소켓 연결 및 데이터 송수신 등이 있다고 볼 수 있음

따라서 Netty는 이러한 소켓 통신 과정을 이벤트 구조로 추상화하여 프로그램을 작성할 수 있도록 제공함

논블로킹 소켓의 Selector를 사용한 I/O 이벤트 감시 역시 이벤트 기반 프로그램의 한 종류라고 볼 수 있음

Netty는 이러한 이벤트 기반 구조로 개발되어 있기 때문에, 커넥션 연결 수립, 데이터 송/수신 등과 같은 네트워크 이벤트들이 발생할 경우,

Netty는 이를 감지하고, 각 이벤트들을 실제로 처리할 코드가 작성된 핸들러를 호출하여 처리하는 방식으로 동작함

따라서 개발자는 네트워크 프로그램을 구현하기 위해 소켓을 직접 생성하고 로컬 주소를 바인딩하는 등의 처리를 저수준에서 직접 작성할 필요 없이,

Netty에서 제공하는 네트워크 이벤트별로 처리를 수행할 핸들러만 작성하면 빠르고 편하게 네트워크 프로그램을 작성할 수 있음

Last updated on