본문 바로가기

IT 살이/04. 기술 - 프로그래밍

[연재 03] 원격 데이터 읽기 때로는 원격에 있는 데이터 파일을 읽어야 하는 경우가 있다. 예를 들어 동적으로 생성되는 데이터를 미리 웹 서버에 캐싱해두고 클라이언트 머신에서 읽어 오려는 경우가 있을 것이다. 달봉이가 지금 참여하고 있는 프로젝트에서는, 클라이언트에서 시스템이 구동될 때 항상 데이터베이스에서 메뉴를 조회해와서 출력해주는 구조로 되어 있다. 그러나 시스템의 운영시에는 메뉴의 수가 너무 과도해져서 시스템의 구동 시간이 길어질 것으로 예상되고 있다. 해서 메뉴가 변경될때마다 XML형태로 해서 웹 서버에 저장해놓고 클라이언트의 시스템이 구동될 때 그 파일을 바로 읽어 오는 방식을 고려하고 있다. 이 포스트에서는 이런 경우 사용할 수 있는 .NET의 API를 소개한다. HTTP를 통해서 원격의 파일 접근하기 다음은 웹 서버에 .. 더보기
[연재 02] 로컬 데이터 파일 읽기 앞의 포스트에서는 ClickOnce 배포로 로컬 PC에 데이터 파일을 저장하는 방법에 대해서 알아봤다. 이번에 그 저장된 파일을 읽는 방법에 대해서 알아본다. 2. 로컬 데이터 파일 읽기 ClickOnce 애플리케이션과 함께 배포되는 데이터 파일은 데이터 디렉토리(Data Directory)에 저장되는데, 그 디렉토리 경로는 애플리케이션 인스톨시 동적으로 결정된다고 했다. 따라서 직접적으로 그 물리적 경로를 기반으로 해서는 그 파일을 읽어들일 수 없다. 그래서 .NET 프레임워크에서는 데이터 파일이 저장되는 데이터 디렉토리에 접근(Read/Write)할 수 있는 API를 제공하고 있다. 데이터 디렉토리에서 읽고 쓰기 우선 데이터 디렉토리에서 파일을 읽고 쓰기 위해서는 ClickOnce 애플리케이션에는 디.. 더보기
[연재 01] 데이터 파일, ClickOnce 애플리케이션과 함께 배포하기 ClickOnce 애플리케이션을 작성하다 보면 텍스트 파일, XML 파일 또는 MS 액세스 DB 파일(.mdb)같은 데이터 파일을 각 클라이언트로 배포할 필요도 생기게 된다. 이번 포스트에서는 이런 데이터 파일을 ClickOnce에 포함시켜 클라이언트로 배포하는 방법을 알아본다. 그리고 클라이언트 애플리케이션에서 그 데이터 파일에 접근하는 방법을 알아본다. 1. 데이터 파일, ClickOnce 애플리케이션과 함께 배포하기 ClickOnce 애플리케이션이 클라이언트 PC에 인스톨되면 각 버전의 애플리케이션마다 자신만의 데이터 디렉토리(Data Directory)를 할당받게 된다. 데이터 디렉토리 경로가 미리 정해지지는 않는다. 애플리케이션마다 인스톨될 때 동적으로 정의된다. VS.NET의 배포 디자이너 폼.. 더보기
[연재 06] 서비스 컨트랙트 정의하기 혹시 여러분은 Windows Live Writer라는 프로그램을 아시나요? 브라우저를 통해서 블로그에 직접 로그인하지 않고도 이 프로그램에서 포스트를 작성해서 바로 블로그로 글을 올릴 수 있습니다. 호오 정말 편합니다. 한번 이 프로그램을 검색해서 알아보세요. 마이크로소프트에서는 이 프로그램에 대한 SDK를 배포하고 있습니다. 직접 애플리케이션에서 이런 기능을 구현할 수 있다는 것이죠. 호오...지금 이 포스트도 이 프로그램으로 작성해서 올리고 있습니다. 서비스 컨트랙트를 정의한다는 것은 외부로 노출되는 전체 서비스에 대한 왁구(토목 현장에서 많이 쓰는 말이다 -_-;)를 만드는 일이라고 볼 수 있다. 메타 정의(?)라고나 할까. 구현(implementation)과는 구분되는 단계이다. 서비스 컨트랙트는.. 더보기
[연재 05] WCF 관련 용어들 앞에서는 "Hello world WCF 버전"을 제작해 봄으로써 WCF 애플리케이션을 작성하는 단계를 하나씩 짚어봤다. 그 과정에서 나온 용어들을 몇개 정리해 보고자 한다. l 엔드 포인트(endpoint) 엔드 포인트들은 메세지를 주고 받는 종점으로서 메세지 교환에 필요한 정보를 정의한다. WCF 서비스는 하나 또는 이상의 애플리케이션 엔드 포인트를 노출시킨다. 클라이언트는 서비스가 노출시킨 엔드 포인트와 상호작용할 수 있는 엔드 포인트를 사용해야 한다. l 바인딩(binding) 바인딩(binding)은 "엔드 포인트(endpoint)에 연결하는데 필요한 것들을 지정하기 위해서 사용되는 객체들"이라고 정의할 수 있겠다. 바인딩은 엔드 포인트가 어떻게 바깥 세계와 통신을 하는지를 정의한다. 바인딩을 구.. 더보기
[연재 04] Hello world WCF 버전 3 4. WCF 클라이언트 프락시 클래스 및 config 파일 생성 WCF 서비스가 만들어졌으니 이제 Service Model Metadata Utility 툴(Svcutil.exe)을 이용하면 앞에서 말한 것처럼 클라이언트측 프록시 클래스와 설정 파일을 만들수 있다. /config 스위치를 사용하면 생성되는 설정 파일의 이름을 지정할 수 있다. 먼저 서비스 프로그램을 실행시킨다. 그런 다음, VS.NET을 설치하면 함께 설치되는 명령 프롬프트에서 다음 명령을 실행시킨다. svcutil /language:C# /config:app.config http://localhost/HelloService C 드라이브의 루트 폴더를 보면 프락시 클래스 파일과 환경 설정 파일이 생성되어 있을 것이다. 프락시 클래스파일은.. 더보기
[연재 03] Hello world WCF 버전 2 3. WCF 서비스 구동하기 그림처럼 config 파일을 추가한다. 추간된 config 파일에 다음 내용을 복사해 넣는다. Main() { // 서비스 타입에 맞는 ServiceHost인스턴스를 생성한고, 베이스 주소를 제공한다. using (ServiceHost serviceHost = new ServiceHost(typeof(HelloService))) { try { // ServiceHostBase를 오픈하면 리스너를 생성하고 메세지를 리스닝하기 시작한다. serviceHost.Open(); // The service can now be accessed. Console.WriteLine("서비스 작동중"); Console.WriteLine("서비스를 종료하려면 를 치세요."); Console.Wri.. 더보기
[연재 02] Hello world WCF 버전 1 걍, 바로 샘플 얘기로 들어가자. WCF(Windows Communication Foundation)가 뭔지, 장점이 뭔지 하는 얘기는 MSDN 등 기타 사이트에 “WCF”를 키워드로 해서 검색을 해 보면 수두룩하게 쏟아져 나온다. 간단히 얘기하자면, .NET3.0에서의 새로운 Communication 프로그래밍 모델로서, 웹 서비스나 .NET 리모팅을 대신할 수 있는 기술이다. 어떤 통신 프로그래밍에서든지 Communication 기능을 작성하기 위해서 하는 공통된 절차가 있다. 초 간단하게 절차를 얘기하자면 다음과 같을 것이다. “서버 프로그램을 작성하고, 서비스를 제공할 수 있는 환경을 구성하고 그런 다음 그것을 인식할 수 있는 클라이언트 프로그램을 작성한다”는 것이다. “Hello world” W.. 더보기
[연재 01] WCF 연재를 시작하면서... 오랜만에 포스트를 올립니다. 이번에는 WCF( Windows Communication Foundation)에 대한 연재를 올려보려고 합니다. 달봉이도 지금 공부하고 있는 중이여서, 혹시나 틀린 부분이 있다면 코멘트 부탁드립니다. 이번 연재는 달봉이의 생각대로 재정리하는 것이 아니라 해외 아티클을 번역하는 방식으로 할 생각입니다. 나름대로 쉽게 배워갈 수 있는 순서와 절차에 입각해서 아티클을 배치하도록 하겠습니다. 그럼 시작하겠습니다. 다음 아티클들이 연재될 예정입니다. 그러나 지금 투입된 프로젝트 때문에 다 끝낼 수 있는 여력이 될 지 모르겠습니다. WCF “Hello world”버전 만들기 (MSDN) What You Need To Know About One-Way Calls, Callbacks, An.. 더보기
MSDN Magazine 한글판 MSDN Magazine이 한글판으로 서비스된다고 정성태 님이 알려오셨습니다. 한글판은 이곳에서 볼 수 있습니다. 더보기
Soap 익스텐션(SoapExtension)을 고한다. 클라이언트와 서버와의 통신에 웹 서비스를 사용하고 있는 스마트클라이언트 애플리케이션을 제작하면서 처음 Soap 익스텐션이라는 것을 알게 되었다. 이 녀석을 사용하면 개발자의 코드를 거의 수정없이 웹 서비스 기능을 추가, 확장활 수 있게 된다. Soap 익스텐션은 클라이언트측에서는 웹 서비스에 대한 프락시 클래스의 메소드가 호출될때 그리고 서버측에서는 웹 서비스 메소드가 호출될때마다 활성화되어 추가적인 역할을 수행하게 된다. 웹 서비스에 대한 요청 또는 응답시 웹 서비스의 기능을 확장할 수 있는 수단이라는 점에서는 ASP.NET의 Http Handler, Http module과 유사한 개념이라고 볼 수 있다. Soap익스텐션을 사용할 수 있는 예로는 웹 서비스 호출 전 후에 로깅을 한다든지 또는 SOAP .. 더보기
똑똑한 웹 파일 다운 로드 구현하기 웹 애플리케이션을 작성하다보면, 고객으로부터의 파일 업다운로드에 대한 요구는 자주 있는 일이다. 그 중에서 파일 다운 로드에 대한 내용을 잘 설명해 놓은 아티클이 있다. Build Smarter ASP.NET File Downloading Into Your Web Applications http://msdn.microsoft.com/msdnmag/issues/06/09/WebDownloads/ 텍스트 파일, Html 파일을 브라우저로 출력하는 대신에 다운받을 수 있는 방법, 대용량 파일을 다운하는 시나리오에 대한 솔루션 그리고 HTTP, IIS를 이용해서 다운로드해야 하는 경우 알고 있어야 하는 사항등을 설명하고 있다. 더보기
Orcas를 이용해서 오프라인 스마트클라이언트 App 작성하기 Orcas( Vista 용 개발환경인 Visual Studio 2007 코드 네임)를 이용해서 오프라인(가끔씩 네트워크에 연결되는 ) 애플리케이션을 작성하는 글 발견. Orcas enables easy offline client apps( http://blogs.msdn.com/brada/archive/2007/03/24/orcas-enables-easy-offline-client-apps.aspx) Orcas CTP 버전 다운받는곳. Microsoft Pre-release Software Visual Studio Code Name "Orcas" - January 2007 Community Technology Preview (CTP) 더보기
.NET 프레임워크 설치 여부 확인하는 방법 http://blogs.msdn.com/junfeng/archive/2004/02/05/67815.aspx 이 링크를 보면 .NET 프레임웤이 설치되었는지를 확인해볼 있는 레지스트리 키에 대해 나와 있다. How to detect .NET Framework installed or not If you search google how to detect .Net Framework, this(http://support.microsoft.com/default.aspx?scid=kb;%5BLN%5D;315291) page ranks very high. Ignore all the details in the KB articles. It basically asks you to check this reg keys & va.. 더보기
CLR 버전 선택하기, 어셈블리 바인딩 리다이렉트시키기 기존의 애플리케이션이 다른 버전의 CLR로 제작된 경우, 때로는 애플리케이션이 실행될 CLR 버전을 변경시킬 필요가 있다. 이런 경우 애플리케이션의 config 파일에 다음 설정을 추가함으로써 원하는 CLR 버전을 선택할 수 있다. Forces the v1.0 CLR to be run. If the v1.0 CLR is not installed, the app will fail to run. 현재 실행되는 어셈블리가, 현재 설치되어 있는 CLR 버전보다 최신 버전에서 개발된 경우에는 "BadImageFormatException" 예외를 발생시킬 수 있다. 자세한 내용은 New Assembly, Old .NET (and Vice-Versa)를 참고한다. 다음은 바인딩시 다른 버전으로 어셈블리 바인딩을 유도.. 더보기
IIS 7 관리 닷넷 Microsoft.Web.Administration 클래스(펌) 닷넷 코드로 직접 IIS7.0을 제어할 수 있게 되었다고 합니다. 웹사이트 생성 ServerManager iisManager = new ServerManager(); iisManager.Sites.Add("NewSite", "http", "*:8080:", "d:\\MySite"); iisManager.Update(); 응용프로그램 디렉토리 생성 ServerManager iisManager = new ServerManager(); iisManager.Sites["NewSite"].Applications.Add("/Sales", "d:\\MyApp"); iisManager.Update(); 가상디렉토리 생성 ServerManager iisManager = new ServerManager(); Applica.. 더보기
.NET3.0을 부트스트래퍼로 설치시 발생하는 에러 .NET3.0으로 제작된 어플리케이션을 ClickOnce로 배포하는 경우, 부트스트래퍼로 .NET 3.0을 미리 설치할때 나는 에러라 한다. 아직 체크해 보지 않았지만 북마크해둔다. Using ClickOnce With .NET Framework 3.0 더보기
마이크로소프트의 공짜 eLeanring 다음 링크 페이지를 보면 마이크로소프트에서 제공하는 공짜 강의를 들을 수 있다. 만료 기간은 1년이다. Would you like some free training from Microsoft? 하지마안~~ 영어로 진행된다는 거엇! 더보기
WPF 어플리케이션 데모 목록 다음 링크 페이지에서 WPF 어플리케이션을 실행시켜 볼 수 있다. 많은 어플리케이션들이 ClikOnce로 배포되거나 XBAP 애플리케이션이서 쉽게 실행시켜 볼 수 있다. Nice list of demo-able WPF applications 더보기
Why Vista Matters to Developers Why Vista Matters to Developers A good article on the importance of Vista for developers. I particularly like this article because you hear from customers and partners directly on what Windows Vista means to them and their business. A few good quotes: "Perhaps even more profound, if somewhat less groundbreaking, is that the .Net Framework 2.0—on which 3.0 sits—is also included, thus making Vista.. 더보기