본문 바로가기

전체보기

(4) WCF Endpoint 프로그래밍 maxBufferSize="65536"maxReceivedMessageSize="65536"messageEncoding="Text"textEncoding="utf-8"> Configuration 설정 Custom Binding그럼 Custom Binding의 예제를 살펴보도록 하겠다. Custom Binding을 구현하기 위해서는 분산 통신에 대한 완벽한 이해가 있어야 할 뿐만 아니라 통신의 각 요소들을 직접 구현해야 하므로 분산 기술에 대한 깊은 이해가 있어야 한다. 다음 Configuration은 Custom Binding을 구현하는 설정의 예제이다. Custom Binding Configuration 설정 Address(Where?)Address는 서비스를 제공하는 주소이다. Address는 URI.. 더보기
(3) WCF 아키텍쳐 WCF 아키텍처의 개요WCF의 기본적인 개념부터 살펴보도록 하겠다. WCF에서 서비스와 클라이언트는 EndPoint를 통해서 통신을 하게 된다. 서비스에서는 여러 개의 EndPoint가 존재 할 수 있으며, 그 EndPoint를 통해서 메시지를 주고 받게 된다. Endpoint를 통한 WCF의 통신WCF에서는Endpoint만 잘 알고 있으면 WCF를 쉽게 다룰 수 있다. Endpoint는 다음과 같이 구성된다. Endpoint의 구성Endpoint는Address, Binding, Contract로 구성된다. WCF에서 반드시 알고 있어야 하는 구성들이다. 즉, 어디에서 무엇을 어떻게 보낼 것인지에 대한 규약이라고 보면 된다. 다음 그림은 WCF와 Endpoint의 관계를 잘 표현해 주고 있다. WCF를 .. 더보기
(2) WCF (Windows Communication Foundation)의 소개 월간 마이크로소프트웨어에 기고한 기사입니다. WCF는Windows Communication Foundation의 약자로, 기존에 Indigo라고도 불리기도 했었다. WCF의 등장배경부터 자세한 개념을 이번 강의실에서 살펴 볼 것이다. 먼저 간단하게 WCF의 개념을 정리하자면 WCF는 MS의 여러 분산 프로그래밍들을 하나로 통일 시키기 위한 통일된 서비스 프로그래밍 정도로 개념을 알고 WCF를 살펴보도록 하자.WCF의 등장배경2000년도에 이르러서SOA(Service-Oriented-Architecture) 기술이 큰 유행이 불게 되었다. 다음 그림을 살펴보자. 프로그래밍 패러다임의 변화개발자들에게는OOP(Object-Oriented-Programming)나CBD(Component-Based-Develop.. 더보기
(1) 닷넷 프레임워크 3.0의 소개 월간 마이크로소프트웨어에 기고한 강좌입니다. Windows Vista가 드디어 RTM 버전까지 발표가 되었다. 닷넷 프레임워크 3.0도 Vista에 종속적이기 때문에 Windows Vista와 더불어 RTM 버전이 발표된 것이다. 그럼 Windows Vista와 닷넷 프레임워크 3.0은 어떤 관계를 가지고 있는지 또한 닷넷 프레임워크 3.0의 구조는 어떻게 되었는지 이번 강의에서 살펴볼 것이다, 더불어 WCF의 정의와 기본적인 아키텍쳐를 살펴 보도록 하겠다. 닷넷에 열정을 가지고 여러 세미나에 두루 참석하거나 MS에서 발표한 기술자료를 열심히 살펴 본 독자라면 WinFX라는 코드명을 들어 본 적이 있을 것이다. 얼마전 WinFX는 닷넷 프레임워크 3.0으로 이름을 바꾸고 이제는 사용되지 않는 명칭이다. .. 더보기
닷넷의 리버스 엔지니어링과 CIL 2009년 2월호로 월간 마이크로소프트웨어에 기고한 내용입니다. 지면상 내용을 간추리려고 노력했습니다. 리버스 엔지니어링은 소프트웨어 공학의 한 분야로 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다. 역 어셈블리 공학이라고도 부르는 이 리버스 엔지니어링 기술을 보는 시각이 곱지 못하다. 왜냐하면 대부분 다른 이의 소프트웨어를 저작자의 동의 없이 제3의 프로그램을 만들어 내는 것이 가능하기 때문이다. 대표적인 예로 크랙과 같은 프로그램을 만드는 것이 여기에 해당된다. 하지만 리버스 엔지니어링을 좋은 방향으로 잘 이용한다면 여러 방면으로 유용할 수 있다. 먼저 닷넷의 경우 소스코드가 없는 어셈블리를 수정할 수 있을 뿐만 아니라 수정하고 싶지만 미숙한 닷넷 .. 더보기
C# nullable 타입의 동작원리 일반적으로 컴퓨터의 언어에서는 데이터의 부재를 “null”이라는 예약어를 이용해서 표현해 왔다. C#에서 또한 null 타입이 존재하지만 닷넷의 데이터 구조상 null을 표현하기에는 다소 모호한 부분이 있다. 그렇기 때문에 이 null 타입에 대한 이슈는 닷넷 1.0 시절부터 상당히 많이 논의되어왔던 내용이다. 그럼 C#에서 null 타입의 모호한 부분이 무엇이며 null타입의 올바른 사용 방법들에 대해서 살펴보도록 하겠다. null의 진정한 의미 null에 대한 정의를 내리기 전에 먼저 닷넷의 데이터 타입에 대해서 살펴보도록 하겠다. 닷넷의 CTS(Common Type System)에서는 모든 것이 객체다. 여기에는 우리에게 익숙한 int, char, double 등의 간단한 타입부터 string과 같.. 더보기
COM+와 분산 트랜잭션의 이해 이번 강좌에서는 엔터프라이즈급 솔루션을 설계하기 위해서 반드시 알고 있어야 하며 닷넷 프로젝트 설계에 있어서 기본적으로 알고 있어야 하는 개념인 분산 트랜잭션의 개념과 COM+의 개념을 집중 해부 해보고자 한다. 이 글을 읽는 독자는 닷넷과 트랜잭션의 개념은 이미 알고 있다고 가정아래 썰을 풀도록 하겠다. MTS(Microsoft Transaction Server)의 이해 분산 트랜잭션에 대한 이야기를 다루기 전에 10년 전 과거로 올라가 보고자 한다. 마이크로소프트는 엔터프라이즈급 규모로 확장 가능한 서버 애플리케이션 개발 환경을 지원하기 위해 마이크로소프트 트랜잭션 서버(MTS)를 1996년에 만들어 발표하였다. MTS는 COM과 DCOM으로 개발된 기업용 어플리케이션 시스템을 위한 실행 환경을 가지.. 더보기
가비지 컬렉터의 동작원리 흔히 닷넷기반의 환경을 관리되는(Managed) 환경으로 부르곤 한다. 그렇다면 도대체 무엇이 관리가 된다는 것인가? 그 관리의 주체는 바로 메모리이다. 이전 Native 시대에는 메모리를 할당하고 해제하는 부분을 개발자가 직접 처리하였지만 닷넷은 그 부분을 자동으로 관리해주는 것이다. 닷넷이 관리되는 환경의 수행이 가능할 수 있는 것은 바로 “가비지 컬렉터(Garbage Collector)”가 닷넷에 존재하기 때문이다. 관리환경의 장점을 최대한 활용하고 사용하기 위해서는 가비지 컬렉터에 대해서 잘 알아 두어야 하고 동작원리를 파악하고 있어야 한다. 필자는 가비지 컬렉터의 원리에 대한 내용을 2002년도 “Chappell의 .NET 여행”이라는 책에서 처음 접했었고, 이 내용은 닷넷의 메모리 관리를 이해.. 더보기
(11) 컨트롤 명령과 데이터 바인딩의 이해 WPF 컨트롤 명령의 이해 이번에는 명령(command)에 대해서 살펴보도록 하자. WPF는 컨트롤 명령을 이용한 신기한 이벤트 모델을 지원해주고 있다. 알다시피 닷넷의 이벤트는 기본 클래스에 정의되어 있고 클래스나 클래스로부터 파생되어 작성될 수 있다. 또한 닷넷 이벤트는 클래스들과 강하게 결합되어 있다. 반면에 WPF 컨트롤 명령은 이벤트처럼 특정 컨트롤에 지정하긴 하지만 다양한 형태로 여러 컨트롤들에게 지정하는 것이 가능하다. 예를 들어 WPF는 Copy, Paste, Cut과 같은 명령들을 지원하고 있고 이러한 명령을 여러 UI 개체들에게 지정해줄 수 있다는 것이다. 또한 Ctrl+C, Ctrl+V와 같은 키도드 단축키와 같은 명령을 이용할 수도 있다. 윈도우 폼과 같은 다른 UI 프로그램에서 역.. 더보기
(10) 패널을 이용한 레이아웃의 구성 실제로 WPF 애플리케이션은 창안에 많은 UI들이 다양한 형태로 그룹화 시킬 수 있다. 뿐만 아니라 배치한 UI요소들의 창이 리사이징 될 때 전체 크기를 조절할 수 있고 아니면 부분적으로 크기를 조절할 수도 있다. 이러한 기능을 지원하기 위해서 WPF는 여러가지 패널들을 지원하고 있다. 이전 장에서 언급했듯이 Window에는 단 하나의 개체만 추가할 수 있다. 만약 Window 개체에 바로 Button 개체가 달랑 추가되어 있다고 가정해보자. 이 때 창의 사이즈가 변경되어도 버튼의 크기는 변경되지 않고 같은 곳에 계속 위치하게 될 것이다. OK 만약 개체 아래에 여러 개의 개체를 선언하게 되면 컴파일시에 마크업 에러가 발생하게 될 것이다. 그 이유는 앞에서 언급한 것처럼 Window 객체의 Content.. 더보기
(9) WPF 컨트롤 다루기 Button 컨트롤 동작 지금까지 의존성 속성과 이벤트 라우틴에 대해서 살펴보았고 이 내용을 통해서 WPF 컨트롤을 보다 쉽게 이해할 수 있을 것이다. 그럼 버튼(Button) 컨트롤부터 살펴보도록 하겠다. 본능적으로 우리는 이미 버튼 컨트롤의 역할에 대해서 알고 있다. 버튼 컨트롤들은 마우스를 눌렀을 때나 키보드에서 엔터키를 눌렀을 때 그리고 버튼에 포커스가 왔을 때 각각의 UI를 가지고 있다. WPF에서는 ButtonBase라는 클래스가 존재하고 이 클래스는 Button, RepeatButton, ToggleButton와 같은 컨트롤들로 파생된다. ButtonBase 클래스 어떤 부모 클래스들과 마찬가지로 ButtonBase 클래스는 파생한 컨트롤들에게 여러 가지 모양의 인터페이스를 제공하고 있다 또.. 더보기
(8) 의존성 속성과 이벤트 라우팅의 이해 의존성 속성 이해 WPF(Windows Presentation Foundation) API들은 classes, structures, interfaces, delegates, enumerations과 같은 각각의 닷넷 클래스들의 멤버를 이용하고 있고 또한 properties, methods, events, constant data/read-only 와 같은 멤버들을 이용하고 있다. 하지만 WPF는 의존성 속성(Dependency Property)라는 새로운 용어와 새로운 프로그래밍 메커니즘을 소개하고 있다. 의존성 속성들은 WPF를 위해서 설계된 문법이라 할 수 있다. 현재까지 닷넷이 아닌 다른 언어를 이용할 경우 특정 속성을 정의하기 위해서 네이티브 문법을 이용해서 특정 속성을 정의해야 했었다. 하지만 .. 더보기
(7) WPF 컨트롤 라이브러리의 분해 WPF 프로그래밍 모델에 대해서 살펴보았고 Window와 Application 객체에 대해서 살펴보았다. 또한 XAML(Extendable Application Markup Language)에 대한 문법들과 여러 가지 이슈들에 대해서 살펴보았다. 이번 장에서는 WPF 컨트롤들에 대해서 살펴볼 것이고 WPF 컨트롤의 구조에 대해서도 살펴 볼 것이다. 그리고 의존 속성과 이벤트 라우팅에 대한 내용 또한 살펴볼 것이다. 앞에서 이미 기본적인 프로그래밍 모델에 대해서 살펴보았고 이번 장에서는 WPF 컨트롤들을 이용하는 방법에 대해서 살펴볼 것이다. 예를 들어 다양한 WPF 컨데이너들이(Canvas, Grid, StackPanel, WrapPanel등) 어떻게 동작되는지 살펴볼 것이고 또한 툴바, 메뉴, 상태바와.. 더보기
(6) 비주얼 스튜디오를 이용하여 WPF 애플리케이션 만들기 지금까지의 예제들은 텍스트 편집기와 명령 프롬포트, XAML패드와 같은 도구를 이용해서만 만들어 왔었다. 이렇게 별도의 툴없이 작업을 진행해 온 이유는 WPF 애플리케이션의 기본적인 문법에 초점을 맞추기 위해서였다. 하지만 이번에는 비주얼 스튜디오가 얼만큼 개발을 간단히 할 수 있게 지원해 주는지 살펴보도록 하겠다. WPF 프로젝트 템플릿 비주얼 스튜디오의 새로운 프로젝트 대화상자를 열어보면 Visual C# 이란 메뉴의 Window 라는 소메뉴를 클릭해보면 WPF 프로젝트가 정의되어 있는 것을 볼 수 있다. 다음 [그림16] 에서처럼 WPF 프로젝트를 선택할 수 있을 뿐만 아니라 WPF 사용자 정의 컨트롤, WPF 사용자 지정 컨트롤, WPF 브라우저 응용프로그램(XBAP)과 같은 프로젝트를 선택할 수.. 더보기
(5) XAML의 문법부터 이해하기 앞에서 언급했듯이 직접 손으로 XAML 코드를 작성하게 되지는 않을 것이다. WPF 애플리케이션애 개발할 때 UI 부분은 아마도 비주얼 스튜디오 2008이나 익스프레션 블렌드와 같은 툴을 이용해서 XAML을 만들게 되는 경우가 대부분일 것이다. 그럼에도 불구하고 XAML의 문법에 대해서 어느 정도 이해하고 있다면 XAML이 꼬이거나 특정 부분을 손으로 수정할 때 많은 도움을 받을 수 있을 것이다. 그리고 WPF를 더 깊게 이해할 수 있을 것이다. 그렇기 때문에 XAML의 기본적인 문법에 대해서 몇 가지 예제와 함께 살펴볼 것이다. XAML패드를 이용한 XAML 연습 XAML에 대해서 공부할 때 XAML패드를 이용하면 간단하고 빠르게 XAML에 대한 UI를 확인해 볼 수 있다. Microsoft Windo.. 더보기