본문 바로가기

전체 글

스마트클라이언트 디버깅 툴 소개 스마트클라이언트 애플리케이션은 디버깅하기가 상당히 까다로운 면이 있다. 특히 IE 브라우저 임베딩 타입의 스마트클라이언트 애플리케이션의 경우는 디버깅에 상당한 어려움을 느끼는 경우가 많다. 이제 기본적인 디버깅 툴들을 소개한다. 이런 툴들을 언제 사용해야 할지를 알고 적절한 시기에 적절한 툴을 사용할 수 있도록 해야 할 것이다. ■ 어셈블리 다운로드 캐시 뷰어 외부의 배포 서버에서 다운된 어셈블리는 어셈블리 다운로드 캐시(assembly download cache)에 저장이 된다. 그 저장 결과를 그림처럼 윈도우 탐색기를 이용해서 볼 수 있다. 다음 명령을 실행하면 뷰어가 구동된다. 시작->실행->”assembly” 어셈블리 다운 여부에 대한 결과만을 확인하고 싶다면 윈도우 탐색기를 이용해서 어셈블리 다.. 더보기
Understanding the Excel Object Model from a .NET Developer's Perspective Understanding the Excel Object Model from a .NET Developer's Perspective - msdn 더보기
트리구조 정보표시 / 쿼리로부터 테이블(start with connect by prior) 트리구조 정보표시 / 쿼리로부터 테이블(start with connect by prior) 더보기
.NET Framework 3.0으로 이름 변경 .NET Framework 3.0으로 이름 변경 - 안재우개인 블로그 http://blogs.msdn.com/somasegar/archive/2006/06/09/624300.aspx 더보기
URL에 의한 ClickOnce 애플리케이션 구동시 문제 1 에러 상황 다음은 현재 달봉이가 투입된 프로젝트에서 발생하는 현상이다. ClickOnce로 배포된 EXE 타입의 .NET 애플리케이션을 링크 URL 호출을 통해서 구동하는 형태의 시스템 구조이다. 문제는 URL에 첨부한 파라미터가 EXE 애플리케이션으로 전달되지 않는다는 것이다. http://***/Container/LemContainer.application?userid=lem15 url로 넘기는 GET 파라미터 userid 값이 전달되지 않는다는 것이다. fiddler를 통해서 HTTP 요청을 캡쳐해보니 다음 그림처럼 원래의 요청외에도 계속 다른 요청이 추가되는 것이었다. 두번째의 HTTP 요청에는 GET 파라미터가 삭제된다는 것을 확인 할 수 있었는데, 결국 문제는 두번째 요청이 왜 발생하는지에.. 더보기
URL을 이용한 ClickOnce 애플리케이션 구동 절차 현 프로젝트의 구조 및 구동 달봉이가 현재 투입된 프로젝트에서는 스마트클라이언트 기술을 사용해서 기업의 ERP 시스템을 개발하고 있다. 스마트클라이언트 애플리케이션의 배포 방식은 ClickOnce 방식과 NTD 방식을 혼용하고 있다. 우선 업무 화면의 컨테이너 역할을 하는 MDI 컨테이너 및 공통 모듈은 ClickOnce 방식으로 배포한다. 그리고 업무용 화면은 사용자가 메뉴를 클릭했을 경우 해당 메뉴의 화면이 포함된 어셈블리를 On-Demand 형식으로 NTD를 사용해서 다운하고 있는 것이다. 다음 그림은 현재 프로젝트에서 사용하고 있는 스마트클라이언트 애플리케이션의 구조와 배포 방식을 나타내고 있다. 현 스마트클라이언트 시스템의 구조와 배포 방식 이 시스템의 구동은 URL을 통해서 하고 있다. Vis.. 더보기
What's new in security for v2.0 What's new in security for v2.0? 더보기
FullTrust means Full Trust 뉴스가 아닌가? FullTrust means Full Trust 더보기
[연재 09] ClickOnce 애플리케이션의 필수 프로그램 배포 - 부트스트래퍼(Bootstrapper) 프로덕트 XML 파일 부트스트래퍼(Bootstrapper)는 ClickOnce 애플리케이션이 구동되기 전에 애플리케이션에서 필요로 하는 필수 프로그램(prerequisties)이 먼저 설치되어 있는지를 확인하는 작은 부피의 프로그램을 말한다. Visual Studio.NET 2005에는 내장된 부트스트래퍼 기능이 있다. 우리는 이 기능을 사용하여 ClickOnce 애플리케이션이 실행되기전에 필요한 다른 컴포넌트를 설치할 수 있다. 달봉이는 지금까지 알고 있는 방법중에서 이전의 COM 컴포넌트나 .NET 어셈블리나 가리지 않고 클라이언트로 배포를 할 수 있는 가장 쉬운 방법중의 하나로 여기고 있다. 단점은 ClickOnce에서만 가능하다는 것이다.[현재 2006.09.16] VS.NET의 부트스트래퍼 기능.. 더보기
[연재 08] ClickOnce 보안 모델( 두번째 이야기 ) ■ ClickOnce 애플리케이션의 권한 설정 VS.NET으로 ClickOnce용 애플리케이션을 게시할 때 사용하는 프로젝트 디자이너를 다시 보여주고 있다. 그림은 보안 페이지에서 설정하는 모습이다. 달봉이는 처음에 이 설정이 계속 마음에 걸렸고, 결국은 달봉이가 이 그림이 뭔지 이해하지 못하고 있다는 것을 알게 되었다. 달봉이가 처음 의문을 갖게 된 사연을 보면 다음과 같다. 먼저, “ClickOnce 보안 설정 사용”이라는 선택을 하고 있는데, 이것이 뭔지 이해가 안 갔다. “ClickOnce 보안”이라는 것이 별도로 있다는 것인가? 그리고 “완전 신뢰 응용 프로그램”과 “부분 신뢰 응용 프로그램”이라는 말도 이해가 가지 않았다. 기존의 모델이라면 “완전 신뢰 어셈블리”, “부분 신뢰 어셈블리”이어야.. 더보기
[연재 07] 비관리형 파일의 배포 ▶ .NET 애플리케이션에서도 여전히 비관리형 파일을 사용하는 경우가 있다. 다음 url의 문서들은 unmanaged 파일을 배포하는 방법에 대해서 설명하고 있다. 참조 문서 Versioning/Deploying Unmanaged Files - Suzanne Cook's blog http://blogs.msdn.com/suzcook/archive/2004/10/28/249280.aspx HOW TO: Deploy COM Interop Programs to Internet Explorer - msdn http://support.microsoft.com/?kbid=311297 Escape DLL Hell Simplify App Deployment with ClickOnce and Registration-Fr.. 더보기
[연재 06] ClickOnce 보안 모델 어셈블리가 로딩될 때, 어셈블리의 근원지가 로컬 PC가 아닌 경우 즉 로컬 PC의 외부에서 유입된 모든 어셈블리에서 대해서는 기본적으로 CAS가 적용된다. 달봉이는 처음에 보안(권한)과 관련해서, 로컬 PC에서 실행되는 일반 애플리케이션과 “온/오프라인용” 모드로 설치된 ClickOnce의 차이점이 궁금했다. ClickOnce 애플리케이션은 “온/오프라인용”으로 설정되면 로컬에 캐시된 애플리케이션이 구동된다. 이런 경우 스마트클라이언트 애플리케이션은 로컬 PC에서 구동되는 애플리케이션과 어떻게 구분되어서 적절한 보안 정책을 적용시킬 수 있게 되는 것일까? 이 포스트를 읽고 나면 답이 나올 것이다. ■ ClickOnce 애플리케이션 권한 설정 ClickOnce 애플리케이션의 권한은 애플리케이션 메너페스트(.. 더보기
[연재 05] HOW TO : Upate ClickOnce Application 이곳에서는 ClickOnce 애플리케이션의 업데이트와 롤백(roll-back) 그리고 업데이트를 선택적으로 하거나 필수적으로 설정할 수 있는 방법에 대해서도 알아본다. 1. 업데이트 2. 버전 롤백 3. 선택적 업데이트 참조 문서 ClickOnce Deployment Manifest - msdn http://msdn2.microsoft.com/en-us/k26e96zf.aspx http://msdn2.microsoft.com/en-us/t7050f3w(VS.80).aspx ClickOnce Deployment Technology - Peter Bromberg http://www.wise.com/Library/ClickOnce.pdf ClickOnce : Bringing Ease and Reliabilit.. 더보기
[연재 04] ClickOnce : Look Into The Internals 앞의 포스트까지는 "보이는대로, 하라는대로" 했다. 이제 그 이면에서 무슨 일들이 일어나는지에 포커스를 두겠다. 주로 다음 3가지 주제를 다루려고 한다. - ClickOnce와 관련된 메너페스트 파일(애플리케이션 메너페스트, 배포 메너페스트) - 클라이언트측 캐시 - 애플리케이션 구동 메커니즘 1. 메너페스트 파일 Visual Studio.NET 2005를 이용하면 애플리케이션에 포함된 파일을 지정된 곳으로 복사할뿐만 아니라 몇 개의 메너페스트(manifest) 파일을 자동 생성해준다 : 배포 메너페스트(.application), 애플리케이션 메너페스트(.exe.manifest). ClickOnce 애플리케이션은 인스톨 패키지가 없이 이 두 메너페스트 파일에 애플리케이션 인스톨에 필요한 모든 정보가 기술.. 더보기
[연재 03] ClickOnce : Enjoy The Appearance 2 "보이는대로 하라는대로" 하면서 ClickOnce를 즐기는 두번째 시간이다. 앞 포스트에서 본 것처럼 다음 메뉴를 선택하면 Visual Studio.NET 2005의 게시마법사를 만날 수 있다. 프로젝트 선택->빌드 메뉴->게시 선택 프로젝트 오른쪽 클릭->게시...선택 이런 메뉴를 통해서 게시 마법사를 바로 실행할 수 있지만, Visual Studio.NET에서는 그전에 여러가지 설정을 할 수 있도록 하고 있다. 이 포스트에서는 게시전에 여러 가지 설정들을 수행할 수 있는 Visual Studio 2005의 게시 디자이너를 소개한다. 배포할 EXE 프로젝트 오른쪽 클릭->속성->게시탭 이 순서대로 수행하면 다음과 같은 게시용 디자이너가 출력된다. 게시 디자이너 각 설정들을 알아보면 다음과 같다. 게시 .. 더보기
[연재 02] ClickOnce : Enjoy The Appearance 1 이번 포스트부터는 되도록이면 목차를 자세히 잡더라도 좀 짧게 할려고 한다. 포스트가 너무 길면 지쳐서 또는 질려서 끝까지 읽어보는데도 상당한 수고가 필요할 것이라는 생각에서다. 이번 포스트에서는 ClickOnce 배포를 위해서 Visual Studio.NET 2005에서 지원해주는 내용을 "보이는대로 하라는 대로" 따라 하면서 즐기는 시간이다. 이름하여 "Enjoy The Appearance"이다. 다음 포스트도 마찬가지일 것이다. 그런 다음 그 보이는 이면을 이해하는 시간을 갖게 될 것이다. 이름하여 "Look Into The Internals" 시간을 갖겠다. 1. ClickOnce 작업 절차 개요 애플리케이션이 ClickOnce 배포 방식에 의해서 최종적으로 사용자 PC까지 다운되기 까지의 절차를 .. 더보기
[연재 01] What is ClickOnce 1. What is ClickOnce? ClickOnce! 최초 한번만 클릭하는 수고를 해 주면 모든 것을 알아서 해 주겠다는 말인데, 이제 그 속 사정을 알아보도록 하자. ClickOnce나 NTD(No-Touch Deployment)는 배포 기술이다. 개발에 의해 제작된 실제 애플리케이션은 Windows Forms애플리케이션과 동일하다고 보면 된다. 즉 Windows Forms 애플리케이션을 어떻게 클라이언트로 배포할것인가에 대한 솔루션인 것이다. 클라이언트로의 배포는 항상 말도 많고 탈도 많은 여러모로 비용이 많이 드는 프로세스이다. 모든 클라이언트 PC에 초기 배포/설치뿐 아니라 애플리케이션이 수정되면 다시 모든 클라이언트 PC에 업데이트 버전이 설치되도록 해야 한다. 어떻게 해서든지 최종적인 목.. 더보기
이벤트 핸들링 패턴 요즘은 달봉이가 맡았던 업무를 전산실 직원에게 백업을 하는 것이 주요 하루 일과다. 오늘 백업도중 어쩌다 .NET의 이벤트 핸들링 패턴에 대한 얘기가 나왔었다. 예전에 달봉이가 처음 이벤트를 배울려고 했을때 잘 이해하지 못했던 부분이 있었는데, 생각난 김에 함 정리를 해 볼려고 한다. 우리는 어떤 이벤트를 이용하기 위해서 사용하는 방법에 대해서 알고 있다. - 이벤트( 멤버)에 이벤트 핸들러를 등록하거나 - 또는 해당 이벤트 On이벤트 메소드를 오버라이드하기 이 두 방법의 차이점은 무엇일까? 이 두 방법을 모두 이용할 수 있는 것은 .NET의 이벤트 핸들링 패턴 때문이다. 다음 코드는 이벤트 "Loaded"라는 것을 정의해서 이 이벤트에 대한 핸들링을 하는 두 방법을 보여주고 있다. 다시 한번 상기시키면.. 더보기
[개발환경구성] Deploying Microsoft .NET Framework Version 3.0 프로젝트 진행시, .NETv3.0 배포와 관련된 정보가 있습니다. http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=1&pageno=0&detail=1&wid=350 더보기
[개발환경구성] 대규모 사이트의 Web Application Projects 구조 잡기 가이드 대규모 사이트의 Web Application Projects 구조 잡기 가이드 [정성태] http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=1&pageno=0&detail=1&wid=349 Visual Web Developer Team Blog http://blogs.msdn.com/webdevtools/archive/2006/11/27/part-3-of-3-creating-sub-projects-with-web-applicaiton-projects-and-built-in-asp-net-development-server.aspx 더보기