업로드 모드(ORAF, OROF, EXTS, AWSS3)
DEXTUploadX5 제품은 파일을 업로드하는 방법을 세 가지(ORAF, OROF, EXTS)로 나누고 있고, Amazon Web Services 중 S3(Simple Storage Serivce)에 파일을 업로드할 수 있도록 AWSS3(4.0.0.0부터) 모드를 추가로 지원한다.
기본 값은 ORAF이며, 업로드 모드를 변경하고자 한다면, setUploadMode 함수를 사용하여 변경한다.
EXTS는 기존의 EXNJ와 같은 대용량 파일 업로드를 의미하며, 둘 다 사용이 가능하다.
var dx = dx5.get("component-id");
// ORAF, OROF, EXTS, AWSS3로 업로드 모드를 설정한다.
dx.setUploadMode("ORAF");
- ORAF
-
ORAF(기본)는 업로드할 파일 모두를 하나의 요청에 담아 전송한다.
만약 업로드할 파일이 10개가 있다면, 한 번의 요청으로 서버에 10개의 파일을 모두 전송하게 된다.
통상 HTTP multipart 데이터는 최대 2GB 바이트를 넘을 수 없도록 서버에서 제한된 경우가 많기 때문에, 10개의 파일의 합은 2GB보다 작아야 한다.
서버에서 업로드 과정이 끝나면 응답 데이터는 한 번만 돌려 받는다.
구분 설명 장점 한 번에 모든 파일이 전송이 되므로, 서버 측에서 처리할 때, 모든 파일이 있거나, 혹은 아예 없거나 두 가지 경우만 처리하면 된다.
전송 과정에서 서버 혹은 네트워크 상에 문제가 발생하면, 롤백이 쉽다. (임시 파일이 생성되는 부분은 고려하지 않음)
서버 측 개발(코드가 간결)이 쉽다.
단점 전체 파일의 합이 통상 2GB를 넘을 수 없다.
많은 파일을 한꺼번에 전송할 때, 데이터의 크기가 커지므로 네트워크 트래픽을 장시간 점유하는 문제가 발생한다.
트래픽이 큰 정보가 장시간 점유를 하면 서버의 응답성이 떨어지므로, 동시 사용환경에서 체감 성능이 떨어진다.
- OROF
-
OROF는 업로드할 파일의 개수 만큼 요청이 이루어진다.
만약 업로드할 파일이 10개가 있다면, 개별 파일마다 동일한 주소로 요청하여 서버로 파일을 전송하게 된다.
하나의 파일이 업로드가 완료되면 다음 파일을 업로드하는 순차적인 방식을 따르기 때문에 모든 업로드가 완료되면, 응답 데이터는 파일의 개수 만큼 생성된다.
통상 HTTP multipart 데이터는 최대 2GB 바이트를 넘을 수 없도록 서버에서 제한된 경우가 많기 때문에, 파일당 크기는 2GB보다 작아야 한다.
구분 설명 장점 전체 파일 크기의 합은 제한이 없다.
ORAF 업로드 모드에 비해 서버의 응답성이 높아 전체 체감 성능이 향상된다. (개별 파일의 크기가 작은 경우)
한 번에 하나의 파일만 전송이 되므로, 서버 측에서 처리할 때, 루프(loop) 작업이 없다.
단점 파일의 개수 만큼 서버로의 요청이 있으므로, 서버에서는 요청 정보만으로 업로드할 파일의 개수 및 전체 크기를 파악할 수 없다.
전송 과정에서 서버 혹은 네트워크 상에 문제가 발생하면, 서버에 먼저 업로드된 파일들이 남아 있을 수 있다.
개별 파일의 크기가 크다면 역시 데이터의 크기가 커지므로 네트워크 트래픽을 장시간 점유하는 문제가 발생한다.
서버 측 개발이 ORAF보다 복잡하다.
- EXTS
-
EXTS는 대용량 업로드를 위한 방식으로서, 개별 혹은 전체 파일의 크기가 2GB를 넘는 경우에 사용한다.
OROF처럼 여러 요청에 걸쳐 파일을 업로드 하는 방식은 동일한다.
그러나 파일 개수 만큼 업로드 요청을 나누는 것이 아니라, 정해진 블럭(청크) 단위로 업로드 요청을 나눈다.
요청에 대한 응답의 수는 블럭 수 만큼 발생하지만, 실제로 운영을 위해 사용해야 할 응답 데이터는 파일의 개수 만큼 생성된다. (자사 서버 컴포넌트와 연동하는 경우)
var dx = dx5.get(id); // 업로드 방식을 대용량으로 설정한다. dx.setUploadMode("EXTS"); // 파일을 분할하는 블록 크기를 바이트 단위로 설정한다. dx.setUploadBlockSize(10 * 1024 * 1024);EXTS 모드를 지원하려면 서버는 DEXTUpload Pro(4.0.0.0 버전 이상), DEXTUpload.NET Pro(5.0.0.0 버전 이상), DEXTUploadNJ 제품이 필요하다. 좀 더 자세한 내용은 '대용량 파일 업로드' 문서를 참고한다.
구분 설명 장점 개별 및 전체 파일 크기에 대한 제한이 없다.
ORAF 또는 OROF 업로드 모드에 비해 서버의 응답성이 높아 전체 체감 성능이 크게 향상된다.
블럭 단위를 조절하여 서버 자체 용량 필터에 걸리지 않도록 처리할 수 있다.
이어 올리기가 가능하다.
단점 블럭 개수 만큼 서버로의 요청이 있으므로, 서버에서는 요청 정보만으로 업로드할 파일의 개수 및 전체 크기를 파악할 수 없다.
블럭 단위가 작아질수록 요청의 수가 늘어난다.
전송 과정에서 서버 혹은 네트워크 상에 문제가 발생하면, 서버에 먼저 업로드된 파일들이 남아 있을 수 있다.
쪼개진 블럭을 합쳐야 하는 문제가 있어, 서버 측 개발이 매우 복잡한다. (자사 서버 컴포넌트를 사용하면 쉽게 처리된다.)
- AWSS3
-
Amazon Simple Storage Service에 파일을 업로드하기 위한 업로드 방식을 가리킨다.
자세한 내용은 'AWS S3 대용량 파일 업로드' 문서를 참고한다.