1.Java NIO만으로 구현한 경우
java.NIO 패키지만 가지고 논블로킹 기반의 네트워크 서버 프로그램을 구현하기 위해서는 다음과 같은 차이가 존재함
1. 저수준(Low-level)의 처리 로직 구현 및 지식 필요
앞서 각각 블로킹 및 논블로킹 소켓으로 네트워크 프로그램을 구현해보았음
블로킹은 소켓으로, 논블로킹은 소켓채널로 구현했기 때문에 네트워크 입출력을 구현하기 위한 메서드 및 동작 방식이 다름
만약 운영 중인 프로그램의 블로킹을 논블로킹으로 변경하려면 구현한 소스 코드를 변경해야 함
2. 낮은 유지보수성
만약 소켓에 문제가 발생하거나 연결된 스트림에 문제가 발생하면
새로운 소켓을 생성하고 데이터를 전송하는 예외 처리 코드를 작성해야 함
네트워크 통신은 다양한 상황에서 문제가 발생할 수 있는데,
서버에서 데이터를 수신 대기하는 상황에서 발생하는 오류나
서버에 연결을 시도하는 과정에서 발생하는 오류 등 다양한 상황별로 예외처리가 필요할 수 있음
또한 이러한 코드는 데이터 송신 및 수신 처리 로직 사이사이에 구현해야 하며, 결과적으로 이러한 프로그램 구조는 코드의 중복을 증가시키고, 디버깅도 어려워지게 만듦
Last updated on