대한민국의 거의 대부분의 개발자들이 업/다운로드 컨트롤을 개발하는데 ActiveX 내지는 브라우저에 종속되는 플러그-인 형식으로 시작을 합니다.
그냥..뭐...남들이 다 그렇게 하니까.
바나나 프레임워크 개발진들은 생각을 바꾸어 보았습니다.
왜? 우리는 항상 생각없이 남들과 똑같이 만들려고 하고 있을까?
웹 브라우저에 종속적이지 않고 브라우저 고유의 기능을 있는 그대로 유지할 수 있는 방법은 없을까?
그렇게 탄생한 결과물이 custom protocol 기반의 업/다운로드 컨트롤입니다.
그럼, custom protocol은 무엇이며 기존의 ActiveX 및 플러그-인 프로그램과 비교하여 어떠한 장점이 있을까요?
해답은 아래에 있습니다.
- Windows OS의 버전이나 웹 브라우저의 종류 및 버전에 구애받지 않고 자유롭게 구현이 가능합니다.
- 바나나 프레임워크의 강력한 암호로 구성된 payload를 사용하므로, 제 3자가 서버에 존재하는 파일의 위치(논리적인 위치 조차도)를 알 수가 없습니다.
- 다운로드 매니저는 Windows Form 기반의 GUI 화면을 제공하고 있음에도 불구하고, ActiveX, 플러그인 혹은 Extension을 통하여 호출되지 않으므로 웹 브라우저에 종속적이지 않습니다.
- ClickOnce를 통해서 한 번 등록된 프로토콜은 영구적으로 업데이트를 할 필요가 없습니다.
- 웹 브라우저에 설치되는 응용 프로그램이 존재하지 않으므로, 사용자의 웹 브라우저 및 OS를 깨끗하고 안전하게 관리할 수 있습니다.
바나나 파일 업/다운로드 컨트롤 데모를 보시려면, 아래 링크를 클릭하세요.
파일 업로드 컨트롤 데모 사이트 방문하기
아래는 바나나 파일 업로드 컨트롤만의 강력한 기능을 설명하고 있습니다.
『No ActiveX, No 플러그인, No Extension』
바나나 파일 업로드는 웹 페이지에서 로컬 컴퓨터에 설치된 응용 프로그램을 호출하는 방식이 다릅니다.
웹 브라우저에 설치하는 컴포넌트가 아니므로, 인터넷 익스플로러, 크롬, 사파리, 파이어폭스, 오페라 등 어떠한 웹 브라우저에서도 동작을 보증할 수 있습니다.
웹 페이지에서 로컬 컴퓨터에 설치되어 있는 Windows Forms 기반의 에이전트 호출이 가능합니다.
『다운로드 매니저의 각종 기능들을 업로드 서버 컨트롤로 제어』
업로드 서버 컨트롤에서 사용자의 로컬 컴퓨터에 설치되어 있는 다운로드 매니저 및 도큐먼트 뷰어(Windows Form GUI)의 각종 기능들을 제한할 수 있습니다.
제한할 수 있는 기능들은 아래와 같습니다.
- 다운로드 할 수 있는 기본 폴더 제한
- 다운로드 할 수 있는 최상위 폴더 제한
(예: 이 설정을 내 문서로 해 놓으면, 사용자는 다운로드할 수 있는 폴더를 내 문서의 하위 폴더로는 변경할 수 있어도 상위 폴더, 즉 D드라이브나 혹은 기타 폴더로는 변경할 수 없습니다.)
- 다운로드 매니저의 각종 버튼 비/활성화 처리
- 다운로드 완료 후, 특정 프로그램(.exe, .bat 등) 호출
바나나 에이전트를 통하여 개발자가 원하는 프로그램을 무엇이든지 실행할 수 있습니다.
- 도큐먼트 뷰어의 각종 버튼 비/활성화 처리
이 모든 기능들은 바나나 에이전트라는 285kb짜리 조그만 실행파일(.exe)과 서버간의 암호화된 payload 통신 프로토콜이 그 기능을 수행합니다.
『암호화된 파일 정보의 송수신』
서버와 통신하는 payload의 정보들은 모두 Triple-DES로 암호화 되어서 송수신됩니다.
Payload의 송수신은 http 프로토콜을 통하여 이루어지기 때문에 별도의 포트를 허용하는 등의 번거로움이 없습니다.
웹 서버가 사용하는 포트 그대로 사용하게 됩니다.
『서버 컨트롤로서의 기능을 완벽하게 구현』
ASP.NET의 가장 강력하고 기본이 되는 포스트백과 뷰스테이트를 100% 활용할 수 있습니다.
스크립트 기반의 HTML5 업로드 컨트롤들이 요구하는 제네릭 핸들러(.ashx) 파일을 통한 서버 처리는 번거롭습니다.
특히나 닷넷 초급 개발자에게는 http 프로토콜을 통해서 전달이 되는 개체의 파싱이 힘들고 어려운 작업이 될 수 있습니다.
바나나 파일 업로드 컨트롤은 해당 컨트롤이 존재하는 페이지의 비하인드 코드(.cs)에서, 파일 업로드 서버 컨트롤에 접근하여 업로드된 파일들의 정보를 완벽하게 엑세스 할 수 있습니다.
파일 업로드 프로세스는 async로 이루어지고 있음에도 불구하고, 업로드가 완료되고 난 후 포스트백을 발생시키는 async-wait 기술이 완벽하게 구현되어 있습니다.
『프로토콜 등록을 위한 ClickOnce 소프트웨어 설치를 자동으로 제공』
바나나 에이전트가 사용하는 custom protocol이 사용자의 컴퓨터에 등록되어 있는지 여부를 확인하여 자동으로 ClickOnce 설치 화면을 로드해 줍니다.
(구글의 크롬 브라우저 설치 기술과 동일)
이 과정에서 어떠한 ActiveX, 플러그-인 혹은 Extension도 사용하지 않습니다.
순수한 html과 javascript만으로 크로스 브라우저 환경에서 구동이 됩니다.
『HTML5 기반의 업로드 컨트롤 제공』
파일을 끌어서 놓기(drag & drop), 여러 개의 파일들 한 번에 업로드 등 HTML5의 강력한 기능들을 모두 지원합니다.
각 파일의 전송 프로그레스를 프로그레스 바를 통하여 실시간으로 확인하실 수 있습니다.
업로드 중간에 특정 파일들을 업로드 취소할 수 있습니다.
Async를 통한 멀티 업로드를 지원하므로, 타 업로드 컨트롤에 비해서 월등하게 빠른 업로드 속도를 자랑합니다.
『각종 업로드 정책 제한』
파일 업로드 서버 컨트롤에서는 다음과 같은 업로드 정책들을 제한 할 수 있습니다.
- 개별 파일 업로드 용량 제한
- 전체 파일 업로드 용량 제한
- 한 번에 업로드할 수 있는 파일의 갯수 제한
- 업로드 할 수 있는 파일의 확장자 제한
이러한 정책들은 서버 컨트롤의 다중 계층 속성창(property windows)을 이용하므로, 초급 개발자도 쉽게 적용할 수 있습니다.
복잡한 xml 형식의 환경설정을 할 필요는 없습니다.
『각 단계별 javascript 콜백을 클라이언트 브라우저로 전송』
실제 파일이 업로드 되는 시점을 전/후로해서 클라이언트 브라우저로 업로드되는 파일들에 대한 각종 정보들을 전달해 줍니다.
해당 콜백 함수들을 이용해서 개발자는 업로드에 대한 피드백을 쉽게 받을 수 있습니다.
『국내 최초로 에이전트, 다운로드 매니저 및 도큐먼트 뷰어를 오픈 소스로 공개』
바나나 프레임워크 개발진들이 오랜 기간 동안 심혈을 기울여서 개발한 소프트웨어입니다만, 더 많은 의견을 듣고 더 높은 호환성을 위하여 소스를 오픈하기로 결정을 하였습니다.
https://infinihance.visualstudio.com/BANANA.Demo에서 공개된 소스를 확인하실 수 있습니다.
오픈 소스를 활용하시면, 파일을 다운로드 받고 나서 개발자가 원하는 어떠한 작업이라도 실행할 수 있습니다.
다만, 파일 업로드 서버 컨트롤의 소스는 바나나 프레임워크 전반에 걸쳐 있기 때문에 오픈이 불가한 점을 양지해 주시기 바랍니다.