ASP.NET 2.0 의 배포 방법
ASP.NET 2.0 으로 웹 사이트를 만들고 난 후 실제 웹 서버에 배포 하는 방법은 여러 가지가 있다.
1. ASP.NET 1.x 환경의 배포
기본적으로 기존 1.x 버전에서는 Visual Studio 에서 웹 사이트 빌드를 하게 되면 코드 비하인드 파일들을 묶어서 하나의 DLL 로 내 뱉었다.
결국 웹 서버에 다음과 같은 파일들을 저장하게 된다. (config 등의 설정파일은 제외)
- aspx 파일들
- bin 폴더의 dll 파일
결국 aspx 파일은 최초 사용자의 요청 시 cs 파일의 내용과 연관되는 컴파일 과정을 거치게 된다.
2. ASP.NET 2.0 환경의 배포
2.0 에서는 Pre-Complication 을 지원한다.
즉, 완전히 컴파일 해서 dll 만 웹 서버에 배포하는 방식이다.
이렇게 하면 최초 요청자 마저 컴파일 시간을 기다릴 필요가 없게 되는 것이다
이외에도 2.0 에서는 다양한 형태로 배포를 할 수 있도록 지원하는데 하나씩 살펴 보자.
2.1 웹 사이트 복사
가장 단순한 형태의 배포에 해당한다.
모든 파일(cs 파일 포함)을 웹 서버로 복사하는 방법이다.
VS 상단 메뉴의 ‘웹 사이트 -> 웹 사이트 복사’ 를 선택하거나 프로젝트 우 클릭 후 ‘웹 사이트 복사 항목’을 선택하면 아래와 같은
파일을 전송할 수 있는 화면이 나온다.
여기서 로컬 폴더나 네트워크 드라이버, ftp, http 로 파일들을 전송하면 된다.
단, 한가지 생각해 보아야 할 것은 cs 파일을 웹 서버에 배포를 할 것인가에 대한 보안적인 측면을 고려해 보아야 할 것이다.
2.2 웹 사이트 게시
미리 컴파일 된 형태로 배포를 하고 싶을 경우 웹 사이트 게시를 이용하면 된다.
상단 메뉴에 ‘빌드 -> 웹 사이트 게시’ 메뉴나 프로젝트 우 클릭으로 ‘웹 사이트 게시’를 선택하면 아래와 같은 게시 옵션 창이 뜬다.
옵션에서 기준이 되는 것은 ‘aspx 파일 분리 유/무’와 ‘컴파일 되는 범위’ 이다.
1) 미리 컴파일 된 이 사이트를 업데이트 할 수 있도록 허용
이 항목은 aspx 파일은 업데이트가 가능하도록 소스를 남겨두겠냐는 옵션이다
이 옵션이 체크되면,
1.x 때와 유사하게 cs 파일들은 컴파일 되어서 dll 로 만들어 지고 aspx 파일들은 여전히 남게 되어 웹 서버에 aspx 파일들과
dll 파일을 배포하면 된다.
‘업데이트 할 수 있도록 허용’ 이라는 말을 풀이해 보면 aspx 파일의 소스가 유지되도록 하여 향후 수정할 수 있도록 한다고 할 수 있겠다
2) 고정된 이름을 사용하고 페이지당 하나의 어셈블리만 만들기
1) 의 과정에서 생기는 dll 파일은 해당 프로젝트의 모든 cs 파일을 단일 dll 로 컴파일 하는데 반해,
이 옵션이 선택되면, 페이지 하나당 하나의 dll 이 생긴다. 즉 페이지 수만큼 dll 이 생기는 것이다
이렇게 배포를 하면 특정 cs 파일 하나만 업데이트 할 경우 해당하는 dll 만 업데이트 하면 되므로 유지/보수성이 좋아 질 수 있다.
또한 컴파일 되어 생성된 어셈블리 이름은 파일이름을 그대로 포함한 형태가 된다.
마지막 옵션은 컴파일된 어셈블리에 강력한 이름을 부여하는 옵션으로 자세한 사용 빈도가 그리 크지 않으므로 설명은 생략하도록 한다
결국 1) 과 2) 의 옵션 조합으로 배포를 할 수 있게 되는데 이 둘을 조합하게 되면 두 옵션의 조합으로써 말로 풀어 써 본다면,
Aspx 는 별도로 두고 (dll 에 포함시키지 않으면서 페이지 당 컴파일된 어셈블리(dll) 하나 씩 생성되는 것이다.
다음 그림은 웹 사이트 게시를 선택했을 때 나타나는 속성 창이다
2.2.1 옵션 조합 별 생성 파일 예시
웹 프로젝트에 다음과 같이 3개의 페이지가 있다고 가정하고 옵션을 조정해 가며 결과물을 보자.
- Default.aspx, Default.2aspx, Default.3aspx
1) 미리 컴파일 된 이 사이트를 업데이트 할 수 있도록 허용 만 체크
Aspx 파일은 수정 가능하도록 남겨두고 모든 cs 파일은 단일 어셈블리로 컴파일 하도록 한다
즉, aspx 파일의 소스는 그대로 남아 있게 된다. (1.x 때의 배포와 동일한다)
Bin 폴더 :
2) 고정된 이름을 사용하고 페이지당 하나의 어셈블리만 만들기 만 체크
Aspx 파일은 cs 파일과 같이 컴파일 되고 페이지 별로 컴파일 하도록 한다
Bin 폴더 :
이 경우 aspx 파일은 cs 와 같이 컴파일 된다.
그러나 여전히 aspx 파일들은 남아있기는 하지만, aspx 파일을 열어 보면 소스는 없어지고 다음과 같은 메시지만 존재한다.
‘이 마커 파일은 미리 컴파일 도구에서 생성한 것으로서 삭제하면 안 됩니다.’
즉 운용을 위해서만 존재할 뿐 소스는 모두 없어졌다는 말이 된다.
또한 각 페이지별로 컴파일이 되어 페이지 당 1개의 dll 이 생성되었음을 알 수 있다
3) 두 옵션 모두 체크
Aspx 파일을 수정 가능하도록 남겨두고 cs 파일은 페이지 별로 컴파일 하도록 한다.
Bin 폴더:
이 경우에는 aspx 파일을 열어 보면 소스가 그대로 남아 있다
4) 두 옵션 모두 해제한 경우.
이렇게 하면 모든 aspx파일과 cs 파일은 단일 어셈블리로 컴파일 되도록 하는 것이 된다.
이렇게 하면 웹 사이트의 모든 소스를 숨길 수 있게 된다.
* 결론
지금 까지 살펴 본 대로, ASP.NET 2.0 에서는 다양한 형태의 배포 모델을 지원한다.
서비스의 성격 및 유지보수성 등을 고려하여 적절한 배포 방법을 선택하는 것이 좋을 것 이다.
즉, 현재의 배포환경 및 제약조건뿐만 아니라 향후 유지/보수성 및 확장성을 고려하여 적절한 배포 방법을 선택해야 할 것이다.
다음의 msdn 에서는 웹 게시와 관련된 상세한 내용을 담고 있습니다.
꼭 한번 읽어보기를 강추 합니다~~
참고 url : http://www.microsoft.com/korea/msdn/library/ko-kr/dnaspp/html/aspnet_merge_exe.aspx
출처 : http://mkex.pe.kr/