Q&A 게시판에 올라온 질문중에서 “ClickOnce 배포에서 애플리케이션을 게시할때마다(기본적으로 게시 버전은 계속 높아진다), 어셈블리는 변경이 없더라도 다시 다운받는가” 라는 질문이 있었다. 이에 대해서 간단히 테스트를 해 봤다. 달봉이의 테스트 노트북 환경은 이렇다.
▶.NET 2.0 설치
▶HTTP를 통한 어셈블리 다운 관찰 툴 : IE Inspector(http://www.ieinspector.com/index.html)
테스트를 해 본 결과 ClickOnce 애플리케이션의 버전은 올라가도 그 구성 어셈블리들은 버전이 동일하면 다운되지 않음을 알 수 있었다.
■ 테스트 #1 : 최초 다운 로드 모습
먼저 로컬 머신에 이미 다운된 ClickOnce 어셈블리들을 mage.exe –cc 명령을 통해서 모두 삭제한 후의 다운로드 모습이다. 당연히 모든 파일들을 다 다운받는다.
<그림 1>(클릭하면 선명한 그림이 뜹니다)
■ 테스트 #2 : 애플리케이션 버전 업, 어셈블리 버전 변함 없음
다음은 애플리케이션의 버전은 높이고, 구성 어셈블리들의 버전은 동일한 경우의 다운되는 모습이다.
<그림2>(클릭하면 선명한 그림이 뜹니다)
■ 테스트 #3: 애플리케이션 버전 업, 어셈블리 버전 업
다음은 애플리케이션의 버전도 높이고, 특정 어셈블리의 버전을 하나 1.0.0.0->2.0.0.0으로 업시켜서 다시 게시를 했다. 그러나 그 내용은 변경되지 않았다. 그런 다음 다운되는 모습을 캡쳐한 것이다.
<그림3>(클릭하면 선명한 그림이 뜹니다)
버전이 변경된 어셈블리만 추가로 다운되는 것을 볼 수 있습니다.
■ 테스트 #4 : 애플리케이션 버전 업, 어셈블리 버전 변화 없음, 어셈블리 내용 변경
다음은 어셈블리 버전은 변화가 없으나 어셈블리의 내용은 변경된 경우입니다.
<그림4>(클릭하면 선명한 그림이 뜹니다)
어셈블리 버전은 변경이 되지 않았지만 그 내용이 변경된 경우도 마찬가지로 해당 어셈블리만 다운되는 것을 볼 수 있다.
■ 결론
ClickOnce 애플리케이션의 버전은 업되더라도, 구성 어셈블리들은 버전과 내용이 동일한 경우는 다운되지 않는다.
■ 추측
ClickOnce에서는 배포될 어셈블리들에 대한 정보를 매너페이스 파일에 기록한다. 지난 포스트를 참조하길 바란다.
2009/04/23 - [01. 기술-APP] - [연재 04] ClickOnce : Look Into The Internals
애플리케이션 매너페스트 파일(.exe.manifest)에는 애플리케이션 구성 어셈블리들과 그리고 각 어셈블리들에 대한 해쉬값을 값을 가지고 있다. 클라이언트측 ClickOnce 엔진은 클라이언트측의 해쉬값과 서버측 해쉬값을 비교함으로써 그 어셈블리 다운 여부를 결정할 것으로 보인다.
클라이언트 머신에서는, 수정이 없는 같은 내용의 어셈블리라고 해서 여러 버전의 그 어셈블리를 공유하지는 않는다. 애플케이션별로 모든 어셈블리를 별도의 공간(디렉토리)에 동일한 어셈블리의 복사본을 관리한다. 즉 버전이 동일해서 다운을 받지 않았다고 해서 이전의 어셈블리를 다른 버전의 애플리케이션과 공유하지는 않는다. 그렇다면 .NET 프레임워크에서는 지능적으로 동일한 버전의 어셈블리는 서버측으로부터 다운하는 대신에 클라이언트 머신상에서의 로컬 복사가 이뤄질 것이라는 예상을 해 본다.
'IT 살이 > 04. 기술 - 프로그래밍' 카테고리의 다른 글
01 WPF로 사용자 경험(User Experience) 높이기 (0) | 2009.04.23 |
---|---|
[연재 03] 원격 데이터 읽기 (0) | 2009.04.23 |
[연재 02] 로컬 데이터 파일 읽기 (0) | 2009.04.23 |