1. pipeline(파이프라인)
- 명령어를 읽어 순차적으로 실행하는 실행하는 프로세서에 적용되는 기술로 한번에 하나의 명령어만
실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하는 식으로 동시에
여러개의 명령어를 실행하는 기법
2. Channel
- 읽기, 쓰기, 연결(connect), 바인드(bind)등의 I/O 작업을 할 수 있는 요소 또는 네트워크 연결
모든 I/O 작업은 비동기 -> ChannelFuture
핵심 메소드
ChannelFuture write(Object obj)
ChannelFuture flush(Object obj)
ChannelFuture writeAndFlush(Object obj)
ChannelFuture closeFuture()
ChannelPipeline pipeline()
SocketAddress remoteAddress()
3. ChannelFuture
- Channel의 I/O 작업의 결과
ChannelFutureListener를 등록 결과에 따른 작업
핵심 메소드
ChannelFuture addListener(GenericFutureListener listener);
Channel channel();
boolean isSuccess();
Throwable cause();
ChannelFuture await()
ChannelFuture sync()
4. ChannelHandler
- Netty의 핵심 요소!
Netty의 I/O 이벤트를 처리하는 인터페이스
ChannelInboundHandlerAdapter
ChannelOutboundHandlerAdapter
전체 메소드
void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)
void handlerAdded(ChannelHandlerContext ctx)
void handlerRemoved(ChannelHandlerContext ctx)
5. ChannelHandlerContext
- ChannelHandler는 ChannelHandlerContext를 통해
다음 ChannelHandler에게 이벤트를 넘기거나,
동적으로 ChannelPipeline을 변경할 수 있음 - [실습4]
핵심 메소드
Channel channel()
ChannelPipeline pipeline()
ChannelFuture write(Object msg)
ChannelHandlerContext fireChannelActive(Object msg)
ChannelHandlerContext fireChannelRead(Object msg)
6. ChannelPipeline
- Channel에 드나드는 inbound / outbound 이벤트를 처리
Intercepting Filter 패턴 처리, ChannelHandler 리스트
주요 메소드
ChannelPipeline addLast(ChannelHandler... handlers)
ChannelPipeline addLast(String name, ChannelHandler handler)
ChannelHandler remove(String name)
<T extends ChannelHandler> T remove(Class<T> handlerType)
7. EventLoop
- 등록된 Channel들의 모든 I/O 작업을 처리
구현체 NioEventLoopGroup를 주로 사용
주요 메소드
boolean inEventLoop()
<T> Future<T> submit(Callable<T> task)
<V> Promise<V> newPromise()
<V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
<Channel관련 인터페이스 전체 구조>
EventLoop -> Channel -> ChannelPipeline -> ChannelHandler -> ChannelHandler2 -> ChannelHandler N
-> Channel
-> Channel
컴퓨터 프로그래밍에서 event-driven programming은 사용자 동작 (마우스 클릭, 키 누름), 센서 출력 또는
다른 프로그램 / 스레드의 메시지와 같은 이벤트에 의해 프로그램의 흐름이 결정되는 프로그래밍 패러다임입니다.
이벤트 중심 프로그래밍은 사용자 입력에 응답하여 특정 동작을 수행하는 것을 중심으로하는 그래픽 사용자
인터페이스 및 다른 애플리케이션 (예 : 자바 스크립트 웹 애플리케이션)에서 사용되는 주요 패러다임입니다.
사건 기반 프로그래밍(영어: Event-driven programming; EDP)은 비주얼 베이직과 같이, 사용자의 명령·마우스 클릭·다른 프로그램의
메시지·키보드 글쇠 입력 등의 ‘사건’에 따라, 제어 흐름이 결정되어 일을 하도록 하게끔 만들어진 프로그래밍 언어 방식을 뜻한다
등잔 밑의 Event-Driven 코드
$("button").on("click", function(event) {
console.log(event);
alert("클릭");
});
Netty의 핵심 인터페이스
Channel
ChannelFuture
ChannelHandler
ChannelHandlerContext
ChannelPipeline
EventLoop
<netty 관련 사이트>
1. http://atin.tistory.com/462 -> netty와 mina 관련 사이트 모음
2. http://ikpil.com/1338 -> netty 원문 번역 설명
3. https://github.com/hatemogi - 김대현 블로그
4. http://hatemogi.github.io/netty-startup/#1 - Netty 시작
5. http://hatemogi.github.io/netty-startup/2.html#/1 - Netty 시작하기 (2)
6. http://netty.io/4.1/api/index.html - Netty 4.1 JavaDoc
7. http://javafactory.tistory.com/1525 - Netty 기초강좌(필독)
'Java Programming > Netty' 카테고리의 다른 글
netty 설명 (0) | 2018.02.13 |
---|