2009. 1. 8. 14:32

인터프리터의 역할

1. 프로그램 각행의 코드를 읽어 들인다.

2. 예약어 리스트와 코드를 비교 확인한다.

3. 변수의 존재 유무를 확인하고 장소를 알기위해 심볼 테이블을 만든다.

심볼 테이블이란, 인터프리터나 컴파일러가 프로그램의 변수나 그 밖의 프로그램에서 사용되는 데이터에 관한 정보를 저장하는 메모리의 영역을 말한다.

2009. 1. 8. 10:12

■ 값타입과 참조타입의 메모리 형성의 차이 ■

1.스택과 힙에 대해 말한다
 
스택이란 처리해야할 요청을 저장하는 데이터 저장소 또는 버퍼이다.
IBM의 컴퓨터 사전을 보면 스택은 항상 PUSHDOWN 목록이라고나와있는데 이는 새로운 요청이 들어오면 그것은 이전의 것을 밑으로 눌러 내린다는 의미이다.
스택을 바라보는 또다른 방법은 처리할 항목을 항상 스택의 최상위로부터 가져오는 프로그램이라고 이해하는 것이다.

힙은 프로그램이 실행될 때까지는 알 수 없는 가변적인 량만큼의 데이터를 저장하기 위해 프로그램의 프로세스가 사용할 수 있도록 미리 예약되어 있는 메인 메모리의 영역이다.
예를 들면 하나의 프로그램은 처리를 위해 한 명이상의 사용자로부터 서로 다른 양의 입력을 받을 수 있으며 즉시 모든 입력데이터에 대해 처리를 개시한다.
운영체계로부터 이미 확보된 일정량의 힙 저장공간을 가지고 있으면 저장과 관련된 처리를 좀 더 쉽게 할 수 있으며 일반적으로 필요할 때마다 운영체계의 운영체계에게 매번 저장공간을 요청하는 것보다 빠르다.
프로세스는 필요할 때 heap 블록을 요구하고 더 이상 필요 없을 때 반환하며 이따금씩 자투리모으기를 수행함으로써 자신에게 할당된 heap을 관리한다.
여기서 자투리모으기란 더 이상 사용되지 않는 블록들을 사용 가능한 상태로 만들고 또한 heap 내의 사용 가능한 공간을 인지함으로써 사용되지 않은 작은 조각들이 낭비되지 않도록 하는 것을 말한다.

힙은 이 용어는 분명히 다른 용어인 스택(stack)의 영향을 받았다.
스택은 블록들이 저장공간으로부터 어떤 순서에 입각하여 꺼내어지고 또 같은 방법으로 반환된다는 것을 제외하고는 heap과 비슷하다.


2.값타입과 참조타입의 메모리 형성의 차이

값타입과 참조타입은 메모리가 생성되는 부분이 다르다.
일반적으로 값타입(Value Type)은 스택(Stack)에 메모리가 생성되며 그리고 참조타입(Reference Type)은 힙 Heap)에 메모리가 생성된다고 생각한다.
하지만 참조타입은 스택과 힙영역을 동시에 사용하게 된다.

값타입과 참조타입은 참조타입의 경우 참조값은 스택에 실제의 메모리는 힙영역에 생성하는 되는 것이다.
우리가 특정 클래스를 이용하여 객체의 이름만 만들었다면 스택에 4바이트의 참조값을 위한 공간이 확보되는 것이다.
그리고 new 연산자로 객체의 메모리를 생성하였다면 그때에 힙영역에 해당 객체의 메모리가 생성되는 것이다.
이에 반해 값타입은 변수이름의 선언과 동시에 스택영역에 메모리를 확보하게 된다.

'C# .NET' 카테고리의 다른 글

실버라이트2 둘러보기  (0) 2009.01.08
인터프리터의 역할  (0) 2009.01.08
XAML은...  (0) 2008.12.23
애플리케이션과 비즈니스 기회의 새로운 패러다임 RIA to RxA  (0) 2008.12.23
UX란?  (0) 2008.12.23
2008. 12. 23. 17:27

XAML은...

확장 응용 프로그램 마크업 언어(Extensible Application Markup Language), 곧 XAML은 마이크로소프트사가 구조값과 객체를 초기화하는 데 사용하려고 만든 선언형 XML 기반 언어이다. 마이크로소프트사의 Open Specification Promise를 통해 사용할 수 있다. XAML은 원래 윈도 프레젠테이션 파운데이션의 코드 이름이기도 했던 Avalon에서 따와서 "Extension Avalon Markup Language"를 대표하는 말이였다.

XAML은 닷넷 프레임워크 3.0 기술에, 특히 윈도 프레젠테이션 파운데이션(WPF), 윈도 워크플로 파운데이션(WF)에 널리 쓰인다. WPF에서 XAML은 사용자 인터페이스 마크업 언어로 쓰이면서 사용자 인터페이스의 요소, 데이터 바인딩, 이벤트 등의 기능을 정의한다. 윈도 워크플로 파운데이션에서 워크플로는 XAML을 사용하여 정의할 수 있다.

XAML 요소는 공통 언어 런타임 객체 인터페이스에 직접 매핑할 수 있지만 XAML은 공통 언어 런타임 속성과 이벤트를 해당 객체로 매핑하는 데 사용한다. XAML 파일은 마이크로소프트 익스프레션 블렌드, 마이크로소프트 비주얼 스튜디오, 호스팅 가능한 윈도 워크플로 파운데이션 비주얼 디자이너와 같은 시각 디자인 도구로 만들고 편집할 수 있다. 표준 문서 편집기, XAMLPad와 같은 코드 편집기, Vectropy와 같은 그래픽 편집기로 만들어 편집할 수도 있다.

XAML을 추가하거나 그것으로 만든 어떠한 것이든 C#, 비주얼 베이직 닷넷과 같은 기존에 쓰여왔던 닷넷 언어를 사용하여 표현할 수 있다. 그러나 이 기술의 주된 측면은 XML 기반이기에 XAML을 처리하는 도구에 필요한 복잡성을 줄이는 것이다.[3] 그 결과 다양한 제품이 XAML 기반의 응용 프로그램을 만들 수 있는(특히 윈도 프레젠테이션 파운데이션) 공간에서 등장하고 있다. XAML은 단순히 XML 기반이므로 개발자들과 디자이너들은 컴파일을 하지 않아도 그들 사이에서 콘텐츠를 자유로이 공유하고 편집할 수 있다.

'C# .NET' 카테고리의 다른 글

인터프리터의 역할  (0) 2009.01.08
■ 값타입과 참조타입의 메모리 형성의 차이 ■  (0) 2009.01.08
애플리케이션과 비즈니스 기회의 새로운 패러다임 RIA to RxA  (0) 2008.12.23
UX란?  (0) 2008.12.23
Direct X  (0) 2008.12.23
2008. 12. 23. 16:31

애플리케이션과 비즈니스 기회의 새로운 패러다임 RIA to RxA

'C# .NET' 카테고리의 다른 글

■ 값타입과 참조타입의 메모리 형성의 차이 ■  (0) 2009.01.08
XAML은...  (0) 2008.12.23
UX란?  (0) 2008.12.23
Direct X  (0) 2008.12.23
GDI+  (0) 2008.12.23
2008. 12. 23. 16:21

UX란?

사용자 경험(User Experience)은 사용자가 어떤 시스템, 제품, 서비스를 직, 간접적으로 이용하면서 느끼고 생각하게 되는 총체적 경험을 말한다. 단순히 기능이나 절차상의 만족뿐 아니라 전반적인 지각 가능한 모든 면에서 사용자가 참여, 사용, 관찰하고 상호 교감을 통해서 알 수 있는 가치있는 경험이다. 긍정적인 사용자 경험의 창출은 산업 디자인, 소프트웨어 공학, 마케팅, 및 경영학의 중요 과제이며 이는 사용자의 니즈의 만족, 브랜드의 충성도 향상, 시장에서의 성공을 가져다 줄 수 있는 주요 사항이다. 부정적인 사용자 경험는 사용자가 원하는 목적을 이루지 못할 때나 목적을 이루더라도 감정적, 이성적으로나 경제적으로 편리하지 못하거나 부정적인 반응을 불러일으키는 경험을 하게 되는 경우 발생할 수 있다.

긍정적인 사용자 경험을 개발, 창출하기 위해서 학술적, 실무적으로 이를 만들어 내고자 하는 일을 사용자 경험 디자인이라고 하며 영역에 따라 제품 디자인, 상호작용 디자인, 사용자 인터페이스 디자인, 정보 아키텍처, 이용성 등의 분야에서 주로 연구 개발되고 있다. 그러나 사용자 경험은 다학제적이며 다분야의 총체적 시각에서 접근해나가야 하는 핵심적인 원리를 바탕으로 한다.

'C# .NET' 카테고리의 다른 글

XAML은...  (0) 2008.12.23
애플리케이션과 비즈니스 기회의 새로운 패러다임 RIA to RxA  (0) 2008.12.23
Direct X  (0) 2008.12.23
GDI+  (0) 2008.12.23
[ZDNet] 실버라이트 활용법  (0) 2008.12.19
2008. 12. 23. 13:59

Direct X

미국 마이크로소프트사가 1995년 윈도95와 윈도NT 4.0용으로 개발하였다. 윈도환경에 멀티미디어 기능과 오락기능을 강화시킨 프로그램들의 집합체이다. 2차원 및 3차원의 도형·음성·동화(動畵) 등 각종 미디어를 사용한 응용프로그램이 하드웨어 장치를 직접 접속한다고 해서 '다이렉트'라는 이름이 붙여졌다. 1995년에 X1을 발표한 이후에 기능을 계속 강화하여 1997년에 X5를 발표하였다.
컴퓨터 게임에 적합한 기능을 고루고루 갖추고 있다. 다이렉트 드로우(Direct Draw)는 그래픽 가속기 기능을 하며, 다이렉트 3D는 그래픽 가속기 없이 3차원 그래픽을 보다 자연스럽게 구현하게 해준다. 다이렉트 사운드는 사운드 기능을 직접 콘트롤하고, 다이렉트 3D 사운드는 3차원 사운드 기능을 콘트롤한다. 다이렉트 인풋은 조이스틱·마우스 등 게임에 필요한 보조장치들을 제어해 주고, 다이렉트 플레이는 멀티플레이·모뎀플레이 등을 통일된 규격상태로 즐길 수 있게 해준다.

다이렉트엑스는 멀티미디어, 특히 게임 프로그래밍에서 마이크로소프트 플랫폼에서 작업을 위한 API의 집합이다. 다이렉트엑스는 OpenGL, 단순 다이렉트미디어 계층(SDL)과 경쟁 관계에 있으며 마이크로소프트 윈도우, 세가 드림캐스트, 마이크로소프트 엑스박스 및 엑스박스 360을 위한 컴퓨터비디오 게임 개발에 널리 쓰인다.
다이렉트엑스는 또한 게임뿐 아니라 최근에 나온 3차원 그래픽 하드웨어를 사용하여 높은 품질의 3차원 그래픽을 빠르게 렌더링할 수 있기 때문에 소프트웨어 업계 전반에서 사용되기도 한다.
다이렉트엑스 런타임과 소프트웨어 개발킷은 무료이지만 개조는 할 수 없는 Closed Source 소프트웨어이다. 다이렉트엑스 런타임은 원래 컴퓨터 게임 개발자들에게만 공개되었으나, 최근에는 윈도에 포함되어 있다.
대중적으로 사용되는 버전은 2006년 12월에 배포된 다이렉트엑스 9.0c 버전이며, 이것은 윈도우 XP와 윈도우 서버 2003에서 이용할 수 있다. 다이렉트엑스 10은 윈도우 비스타 안에 포함되어 있지만, 다른 버전의 윈도에서는 사용할 수 없다.


◎ 다이렉트엑스의 구성 요소

아래에는 다이렉트엑스 그래픽스(아래 두 가지 API를 통합해 부르는 명칭)가 있다.

다이렉트 드로우(DirectDraw)
2차원 그래픽을 그리는 데에 쓰이며, 8 이후로 다이렉트 그래픽으로 통합되면서 쓰이지 않고 있다.  
다이렉트3D (Direct3D)
3차원 그래픽을 그리는 데에 쓰인다. 다이렉트 그래픽에 통합되었다.
다이렉트 인풋(DirectInput)
게임 콘트롤러 등의 조작 장치를 제어할 때 쓰인다.(다이렉트엑스 10으로 넘어오면서 엑스인풋으로 이름이 바뀜).
다이렉트 플레이(DirectPlay)
네트워크 게임을 위한 API 제공, 다이렉트엑스 8 이후로 개발이 중단되었다.
다이렉트 사운드(DirectSound)
게임 중 음향 효과에 쓰인다.
다이렉트 사운드3D(DirectSound3D)
3차원 사운드를 위한 API.
다이렉트 뮤직(DirectMusic)
다이렉트 뮤직 프로듀서에 의해 만들어지는 사운드 트랙 재생.

'C# .NET' 카테고리의 다른 글

애플리케이션과 비즈니스 기회의 새로운 패러다임 RIA to RxA  (0) 2008.12.23
UX란?  (0) 2008.12.23
GDI+  (0) 2008.12.23
[ZDNet] 실버라이트 활용법  (0) 2008.12.19
MS LINQ 란??  (0) 2008.12.18
2008. 12. 23. 11:57

GDI+

윈도우XP가 소개되면서 등장한 C++ 기반의 GDI+는 GDI의 뒤를 이었다. GDI+는 앤티 에일리어싱, 부동 소수점 좌표 체계, 그라디언트, JPEG나 PNG 등의 포맷 지원(GDI에서는 지원되지 않음), 아핀변환 등의 향상된 2D 그래픽 환경을 제공한다. GDI+는 색을 나타내는데 ARGB 값을 사용한다. 이러한 특징들은 윈도 XP의 사용자 인터페이스 체계나, 마이크로소프트 그림판, 윈도 사진 및 팩스 뷰어, 내 그림 슬라이드쇼 등에서 잘 보인다. GDI+ 동적 라이브러리는 하위 버전의 윈도에서도 작동한다. GDI+는 애플사의 Quartz 2D라는 하위 시스템과 비슷하다.

흔히 GDI라고 불리는 그래픽 장치 인터페이스는 마이크로소프트 윈도우에서 사용자 인터페이스를 위한 API 가운데 하나이다. GDI는 그래픽 객체를 표시하고 모니터나 프린터와 같은 출력 장치로 전송한다. GDI는 직선이나 곡선, 글꼴을 그리기나 팔레트를 다루는 등의 일을 한다. 하지만 직접 창이나 메뉴 등을 그리지는 않는다. 창이나 메뉴를 그리는 일은 user32.dll와 GDI로 짜여진 시스템에서 한다. GDI는 애플사의 퀵드로우(QuickDraw)와 비슷하다. GDI에서 가장 중요한 기능은 목적 장치의 추상화이다. GDI를 사용하면 화면이나 프린터 등의 다양한 장치에 원하는 그림을 매우 쉽게 그릴 수 있다. 빠른 그래픽 처리를 요구하지 않는 간단한 게임들은 GDI를 통해 만들어지기도 한다. 하지만 GDI는 프레임버퍼 동기화 없이는 애니메이션을 구현할 수 없고, 3D 래스터화가 부족하다. 그래서 요즘의 게임들은 더 많은 하드웨어 기능 접근을 가능하게 하는 DirectX나 OpenGL을 쓴다.

2008. 12. 19. 11:08

[ZDNet] 실버라이트 활용법

 원문 : http://www.zdnet.co.kr/builder/dev/web/0,39031700,39160544,00.htm 

한용희(롯데정보통신 정보기술연구소 근무)   2007/08/28  

최근 정부기관들이 앞장서서 액티브X의 배제에 노력하면서 사회 전반에서도 액티브X에 대한 관심이 뜨겁다. 정부기관의 노력으로는 신규 발주 사업의 제안 요청서에 특정 제품을 지원하지 않도록 명시하여 표준을 따르지 않는 기술의 제안을 차단하는 것 등이다. 5부에서는 액티브X 컨트롤의 대안으로 MS가 내놓은 실버라이트 활용법에 대해 알아보자.

요즘은 브라우저 하나만 있으면 거의 모든 작업을 할 수 있다. 기업 내에서 사용하는 ERP 애플리케이션도 브라우저 하나로 돌아가고 은행 거래나 쇼핑, 공공기관 증명서 발급 등 모든 작업을 브라우저 안에서 할 수 있다. 하지만 이는 브라우저가 가진 기본적인 기능에서 액티브X 컨트롤을 이용하여 그 능력을 확장했기에 가능한 기능들이다.

이에 따라 이제는 기존 브라우저가 가진 단순 정보 표현 기능 말고도 더 새로운 사용자의 다양한 욕구를 충족시켜줄 수 있는 새로운 프레임워크가 필요하다. 시대는 그러한 기능을 요구했고, 사람들은 그러한 기능을 수행할 수 있는 새로운 대안을 찾아 다녔다. 그렇다고 기존에 웹이라는 세상이 만들어 놓은 네트워크 구조를 무너뜨릴 생각은 없었다. 오히려 이를 그대로 이용하면서 그 위에서 다양한 기능을 수행 할 수 있는 무엇인가가 필요했다.

그래서 찾은 것이 단순 애니메이션 기능으로 사용하였던 플래시였다. 플래시는 브라우저위에 액티브X 컨트롤로 만들어진 별도의 플러그인을 한 번만 설치하면 플래시로 만든 모든 응용 프로그램을 구동할 수 있다. 즉, 새로운 기능을 제공하는 새 프레임워크를 발견한 것이다. 사람들은 이 플래시를 단순 애니메이션 도구가 아닌 새로운 응용 프로그램을 만들 수 있는 도구로 재평가하기 시작했고, 플래시는 그러한 기능을 하나 둘씩 추가해 나갔다.

플래시는 본격적인 응용프로그램 개발 툴로 끌어올린 플렉스(FLEX)라는 제품을 발표하면서 본격적으로 리치 인터넷 애플리케이션(Rich Internet Application) 서비스를 하게 된 것이다.

액티브X 컨트롤을 대체하려면 무엇보다 브라우저가 가진 기능을 확장할 수 있어야 하며, 웹이 만들어 놓은 네트워크라는 세상 안에서 그 기능을 수행해야만 한다. 또한 특정 OS나 특정 브라우저가 아닌 모든 환경에서 사용가능 해야만 한다. 이러한 조건을 충족시키기 위해서는 기존 브라우저 위에서 플래시처럼 한 번의 플러그인을 설치하면 모든 응용 프로그램을 구동시킬 수 있는 기술이 필요했던 것이다. 그래서 탄생한 것이 바로 실버라이트(코드명: WPF/e)이다.

플래시와 비슷한 개념이고 기능도 비슷하지만 내부를 들여다보면 그 개발 환경은 사뭇 다르다. 플래시는 태생이 애니메이션을 위한 도구로 출발한 것인 반면에 실버라이트는 출발부터 디자이너와 개발자를 위한 새로운 플랫폼으로 출발한 기술이다.

  개발자와 디자이너를 위한 협업

개발자와 디자이너는 서로 다른 세계를 살아가는 사람들이다. 개발자가 숲 보다는 나무를 보고 일하는 사람이라면 디자이너는 나무 보다는 숲을 보고 일하는 사람들이다. 서로의 보는 관점 자체가 다르다. 이렇게 서로 다른 시각을 가진 사람들이 일을 하다보면 서로 의사소통이나 표현의 문제로 서로 대립되는 경우는 비일비재하다.

이러한 문제가 가장 크게 대두 되면서 만연했던 시기가 바로 ASP 시절이다. 일면 스파게티 코드로 유명한 ASP 코드는 디자이너의 코드와 개발자의 코드가 뒤섞여 있다. 자고 일어나면 상대방이 수정을 해서 디자인이 헝클어지거나 기능이 제대로 동작하지 않는 경우가 있었다. 이럴 때면 서로 네 탓이니 내 탓이니 하면서 싸우기 일쑤였다.

이러한 문제는 ASP.NET 기술이 등장하면서 디자이너의 코드와 개발자의 코드를 분리하면서 어느 정도 해결이 되었다. 하지만 사용자의 편의성을 높이기 위한 기능들은 클라이언트 쪽에서 구동되어야 하는데, 이는 별도의 스크립트라는 언어로 개발을 해야만 했다.

디자이너는 자신의 상상 속에서 사용자의 편의성을 높이기 위한 디자인을 내 놓지만 개발자가 그러한 디자이너의 상상 속의 세상을 스크립트로 구현하기란 좀처럼 쉽지 않았다. 그래서 디자이너와 개발자의 중간에 위치한 UI개발자라는 별도의 직업까지 생길 정도였다.

사용자의 요구사항은 이제 점점 웹을 단순한 정보를 표현하는 도구가 아닌 사용자와 서로 편하게 대화할 수 있는 환경으로 만들어 주기를 원했다. 이제 웹은 정보를 보여주는 도구가 아닌 정보를 생산하는 도구가 된 것이다. 따라서 사용자의 UI를 편하게 만드는 것이 보다 좋은 웹사이트를 만드는 척도가 되었다.

이제는 디자이너가 꿈꾸고 있는 상상속의 이미지를 그대로 표현해 주는 새로운 기술이 필요해 졌다. 기존의 HTML은 정보를 보여주는 데 적절한 언어이지 정보를 생산하는 데에는 적합하지 않았다. 따라서 HTML이 아닌 다른 새로운 표준이 필요했고 그래서 나온 것이 바로 XAML(eXtensible Application Markup Language, 재믈)이다.

이를 통해서 디자이너가 생각하는 기능과 표현을 XML 기반의 새로운 태그 언어로 표시한 것이다. XAML에 대해서는 자세히 설명하지는 않을 것이다. 이미 여러 차례 마이크로소프트웨어에서 소개되었기 때문이다(2007년 1월호 특집 기사 참조).

이제 디자이너는 XAML을 생성해 주는 새로운 도구를 이용해서 디자인을 해야만 한다. 그래서 MS에서는 익스프레션 제품군을 새로 만들어 판매하고 있다. <표 1>은 2007년 1월호 특집 기사에 실린 익스프레션 제품군과 어도비의 디자인 프로그램 비교표이다.


새로운 툴로 전향하기 싫은 사람들을 위해서도 별도의 변환 툴을 제공한다. 현재는 다음과 같은 두 가지 변환 도구가 출시되어 있다.

 SWF to XAML Converter(http://www.mikeswanson.com/swf2xaml)
: 플래시 SWF 파일을 XAML 파일로 변환
 Adobe Illustrator to WPF/XAML Export Plug-In(http://www.mikeswanson.com/xamlexport)
: Illustrator에서 XAML 파일로 저장해주는 플러그 인

MS에서는 이렇게 사용자의 편의성을 높여주는 일련의 활동을 UX(User Experience,사용자 경험)라고 정의하고 있다. 이제 디자이너는 마음껏 사용자의 편의성을 향상시키기 위하여 자신만의 언어를 사용할 수 있게 되었으며, 개발자도 자연스럽게 이를 수용할 수 있는 준비가 된 것이다.

  웹을 위한 종합선물세트, 실버라이트

요즘 기술 트렌드를 대변 하는 말 중에 유행하는 말이 한 가지 있다. 그것은 바로 ‘종합선물세트’라는 것이다. 요즘 기술의 추세는 특정한 기능에 편중되지 않고 모든 기능을 포함하는 것이 유행이다. 필자가 처음 실버라이트의 아키텍처를 보고 제일 먼저 머리에 떠오른 단어도 ‘종합선물세트’이었다. 실버라이트는 요즘 유행하는 모든 기술을 거의 다 담았다고 해도 과언이 아니다.

실버라이트는 현재 두 가지 버전이 있다. 1.0 베타와 1.1 알파 버전이다. 1.0 버전은 올 여름에 출시될 예정이고, 1.1 버전은 아직 미정이다. 1.0과 1.1의 가장 큰 차이점은 1.1에서는 닷넷 프레임워크 프로그래밍 모델을 지원한다는 것이다.

즉, C 비주얼 베이직을 이용하여 관리코드(Managed Code)를 작성할 수 있다. 닷넷 프로그래밍 모델을 지원하면 앞으로 실버라이트의 개발이 훨씬 용이해 질 것이다. 1.0 버전에서는 자바 스크립트만 지원한다. 이제 실버라이트의 주요 특징을 차례로 알아보자.

<그림 1> 실버라이트 application structure


●크로스 브라우저(Cross-browser), 크로스 플랫폼(Cross-platform)
실버라이트의 가장 큰 특징은 한 마디로 크로스 브라우저와 크로스 플랫폼이다. 현재 지원 가능한 브라우저는 IE와 모질라, 파이어폭스, 애플 사파리와 오페라다. 운영체제는 윈도우와 애플의 Mac OSX를 지원한다.

●경량화(Lightweight browser plug-in)
이름에서도 알 수 있듯이 실버라이트의 브라우저 플러그인은 경량화를 지향한다. 현재 실버라이트 1.0 베타 버전의 런타임은 1.38MB정도 한다. 최종 런타임도 3MB를 넘지 않을 것이라고 한다. 참고로 플래시 9.0의 런타임은 현재 2.2MB이다.

●멀티미디어 지원
실버 라이트는 오디오와 비디오 재생을 위한 자체적인 스트리밍 플레이 기능을 가지고 있는 덕분에 별도의 플레이어 없이 자체적으로 재생할 수 있다. 비디오는 윈도우 미디어 콘텐츠인 WMV와 WMA 포맷을 지원하며, HDTV 수준의 비디오 해상도도 지원한다.

오디오로는 MP3 포맷을 지원한다. 현재 www.Silverlight.net 사이트에 가면 폭스 무비(Fox Movie)의 영화 예고편을 실버라이트로 만들어 놓은 것을 확인해 볼 수 있다. 상당한 수준의 해상도를 지원하는 영화 예고편을 감상 할 수 있다.

●WPF, XAML 지원
실버라이트는 프레젠테이션 기술로 WPF(Windows Presentation Foundation)를 채택하였다. WPF는 윈도우 비스타의 닷넷 프레임워크 3.0에 포함된 기술인데, 디자인을 표현하는데 있어 XAML을 이용한다. 이에 대한 자세한 내용 역시 2007년 1월호 특집 기사를 참고하길 바란다.

실버라이트의 초창기 코드명은 WPF/e였다. 여기서 e는 Everywhere 즉, 어디서나 WPF 응용프로그램을 사용하자는 취지로 만들어진 코드명이다. 때문에 실버라이트는 3D 기능을 제외한 대부분의 WPF 기능을 제공한다. 플래시와 마찬가지로 벡터 기반이기 때문에 확대하거나 축소를 하더라도 이미지의 손실 없이 부드럽게 표현되는 것도 빼놓을 수 없는 특징이다.

●닷넷 프로그래밍 모델 지원
실버라이트 1.1버전부터는 닷넷 프로그래밍 모델도 지원한다. CLR 전부를 지원하는 것은 아니지만, CLR 대부분의 기능을 지원할 예정이다. 사용 할 수 있는 언어로는 C#과 비주얼 베이직, IronPython, Ruby, Managed JScript 등이 있다.

이중에 C#과 비주얼 베이직은 기존에 있던 언어이지만 새롭게 동적 언어인 IronPython, Ruby, Managed JScript 지원을 추가했다. 스크립트 언어가 가진 높은 생산성을 더 이상 무시할 수 없었던 것이다. 현재 ASP.NET도 IronPython과 같은 동적언어를 추가할 예정이다(http://www.asp.net/downloads/futures/default.aspx?tabid=62).

●기존 응용프로그램 지원
실버라이트는 자바스크립트와 서로 연동할 수 있다. 자바 스크립트 뿐만 아니라 ASP.NET AJAX와도 쉽게 연동할 수 있다. 한 예로 http://www.thewpfblog.com/examples/wpfe/microbe/Default.html에 가면 WPF/e와 플래시가 서로 연동되는 데모를 볼 수 있다. 공이 튀는 하나의 화면에서 움직이는 것 같지만 사실 왼쪽은 WPF/e로 만든 것이고, 오른쪽은 플래시로 만든 것이다. 서로 데이터를 주고받으면서도 부드러운 움직임을 보여준다.

<화면 1> WPF/e와 플래시가 서로 연동한 데모


●압축 지원
XAML 파일은 텍스트 기반이기 때문에 그 용량이 상당히 크다. 따라서 이를 그대로 웹에 올리려면 용량이 문제가 된다. 플래시의 경우도 개발 시에는 FLA 파일 포맷을 사용하지만 실제 배포할 때에는 압축된 SWF 포맷을 사용한다. 실버라이트도 이러한 압축 기술을 지원할 예정이다.

<그림 2> 실버라이트의 압축 패키징


  실버라이트와의 조우, Hello World!

새로운 언어를 배울 때 언제나 등장하는 것이 바로 ‘Hello World’를 출력하는 예제일 것이다. 실제로 이 예제를 만들어 봄으로써 실버라이트의 개발 환경을 느껴보자. 실버라이트를 개발하는데 있어 여기에서는 1.1 알파 버전을 사용할 것이다. 1.0 버전 버전은 닷넷 프레임워크를 아직 지원하지 않기 때문에 다양한 기능을 보여주기에는 부족한 점이 있다.

1.1 알파 버전은 http://msdn2.microsoft.com/en-us/asp.net/bb187452.aspx에서 다운로드 받아서 설치하면 된다. 웹 페이지에 접속하면 다음과 같은 프로그램들 목록이 표시된다.

• Microsoft Silverlight 1.1 Alpha.브라우저 플러그 인
• Microsoft Silverlight 1.1 Alpha Software Development Kit(SDK)개발 툴 킷
• Microsoft Expression! Blend 2 PreviewXAML 디자인을 위한 디자인 툴
• Microsoft Visual Studio Code Name "Orcas" Beta 1.비주얼 스튜디오 차기 버전인 Orcas Beta1 버전
• Microsoft Silverlight Tools Alpha for Visual Studio Code Name "Orcas" Beta 1.Orcas Beta1 버전에서 실버라이트를 개발하기 위한 프로젝트 템플릿

설치할 프로그램이 많은 편이다. 이 프로그램들은 모두 무료로 다운로드 받을 수 있으므로 전부다 다운로드 받아서 설치를 한다.

먼저 C# 기반의 실버라이트 응용 프로그램을 만들어 보자. 비주얼 스튜디오를 실행하고 새 프로젝트에서 C# 밑에 있는 실버라이트 프로젝트를 선택한다.

<화면 2> 실버라이트 프로젝트 선택하는 화면


프로젝트를 생성하면 <화면3>과 같은 프로젝트가 만들어 진다.

<화면 3> C# 기반의 실버라이트 프로젝트


화면을 표시하는 페이지는 TestPage.html이다. 기존의 MS 방식대로라면 확장자를 htm으로 사용하겠지만, html을 사용한 것으로 봐서는 크로스 브라우저를 지향하려는 의도가 엿보인다. TestPage.html 코드를 보면 별다른 코드가 없다.

 <리스트 1> TestPage.html의 일부


실버라이트의 런타임 자체도 액티브X 컨트롤로 만들어져 있는데, 작년에 이올라스 패치 문제가 있었듯이 한 파일 안에서 같이 실행하면 액티브X 컨트롤이 활성화되지 않는 탓에 별도의 파일로 분리하는 것이 좋다. Silverlight.js 파일은 모든 브라우저에서 실버라이트가 동작하도록 만들어 놓은 자바스크립트 라이브러리다. TestPage.html.js는 Silverlight.js에 있는 실버라이트 생성 컨트롤을 호출하면서 XAML 파일을 연동시켜주는 역할을 한다.

 <리스트 2> TestPage.html.js


Page.xaml 파일을 보면 단순히 Canvas 하나를 그리는 구문만이 존재 한다.

 <리스트 3> Page.xaml


이 구문에서 x:Class라는 부분이 바로 닷넷 프로그래밍 모델로 만든 어셈블리를 연동하는 부분이다. 클래스명과 경로를 적어주어야 한다. DLL로 만든 클래스의 네임스페이스와 이름을 표기하고 실제 DLL 파일의 경로를 적어 준다. Loaded에는 초기에 로드 되면서 호출할 메소드 이름을 적어준다.

디자이너는 이 XAML 파일을 수정하고 개발자는 이 XAML에 연동된 파일(여기에서는 xaml.cs)을 각각 수정하면 된다.

 <리스트 4> Page.xaml.cs


현재까지는 각각의 코드가 아무런 일도 하지 않는다. 이제 익스프레션 블랜드를 이용해서 Hello World! 텍스트 박스 하나를 그려보자. <화면 4>처럼 비주얼 스튜디오에서 바로 블랜드를 호출할 수 있다.

<화면 4> Blend를 여는 메뉴


 

<화면 5> Hello World! 텍스트 박스를 추가한 모습


<화면 5>를 보면 Hello World! 텍스트 박스를 추가한 모습을 볼 수 있다. 블랜드에서는 비주얼 스튜디오와 마찬가지로 옆에 프로젝트 리스트가 나오며 블랜드에서 아예 프로젝트를 새로 만들 수도 있다. 이러한 기능은 개발자와 디자이너가 보다 긴밀하고 효과적인 협업을 할 수 있도록 만들어진 기능이라고 할 수 있다.

<화면 6> 블랜드에서 프로젝트 만들기


이제 저장을 하고 비주얼 스튜디오로 돌아와서 실행을 하면 Hello World! 텍스트가 잘 나올 것이다. 단 아직 한글 지원이 미비한 관계로 블랜드에서 언어 관련 코드는 삭제해 주어야만 한다.

 <리스트 5> Page.xaml에 Hello World! 텍스트 박스 추가한 결과


<화면 7> Hello World!를 실행한 화면


이번에는 디자이너 부분이 아닌 개발자 부분에서 코드를 수정해 보자. 위의 TextBlock에 이름을 다음과 같이 지정한다.

x:Name="block" Width="156" Height="37" Canvas.Left="133" Canvas.Top="23" TextWrapping="Wrap">
Hello World!


이를 Page.xaml.cs 코드에서 다음과 같이 수정해 보자.

block.Text = "Welcome to the Silverlight";

즉, Page_Loaded 이벤트에서 block이라는 이름의 TextBlock의 내용을 바꾸었다. 이를 실행해 보면 Hello World!에서 ‘Welcom to the Silverlight’로 바뀐 것을 볼 수 있을 것이다.
이번에는 IronPython을 이용해서 똑같은 결과물을 만들어 보자. 위의 Page.xaml에서 동적언어에 대한 내용을 <리스트 6>과 같이 추가한다.

 <리스트 6> 동적언어 지원을 위한 Page.xaml


이번에는 닷넷 프레임워크 어셈블리가 필요 없으므로 x:Class도 선언할 필요가 없다. 대신 x:Code라는 태그를 통해서 동적언어를 설정한다. 기능은 앞의 예제와 동일하게 텍스트의 내용을 바꾼다.

 <리스트 7> Page.xaml.py


결과를 보면 파이썬으로 만들어도 동일한 결과를 볼 수 있다. 그렇다면 ASP.NET처럼 이러한 관리코드나 동적코드는 서버 사이드에서 실행되는 것일까? 우리가 어떤 버튼을 클릭하면 서버에 가서 그 이벤트를 처리하고 결과를 돌려주는 방식일까? 그것은 아니다. 실버라이트는 어셈블리나 동적언어 코드를 직접 클라이언트에 모두 로딩 한다. 따라서 서버에 특정 네트워크 통신을 따로 하지 않는 이상 라운드 트립은 없다.

  실버라이트의 추가적인 특징들

실버라이트의 주요 특징과 간단한 샘플 프로그램도 만들어 보았다. 이번에는 실버라이트의 추가적인 특징들에 대해 알아보자.

●DRM(Digital Right Management)
콘텐츠에 대하여 DRM 기능을 쉽게 적용할 수 있도록 지원되는 기능이다. 이를 이용하면 자신의 실버라이트의 콘텐츠에 대하여 저작권 보호 기능을 사용할 수 있다. 아직 구체적인 예제는 없지만, 예를 들면 복사를 제한하는 등의 기능이 추가될 것으로 예상된다.

●LINQ(Language Integrated Query)
LINQ에 대해서는 2006년 1월호 ‘C#의 미래’라는 글을 참고하길 바란다. 간단히 설명하자면 DB나 XML과 같은 데이터의 쿼리 구문을 수행하는데 있어 기존에는 문자열을 조합하여 쿼리 구문을 만들거나 별도의 객체를 이용해서 쿼리 구문을 수행하였다. 쿼리 구문이 언어와 독립적인 탓에 통일성 있는 개발이 어려웠던 반면에, 이제는 이러한 쿼리 구문 자체를 언어에 포함시켰다. 따라서 이제는 쿼리 구문을 언어 차원에서 보다 쉽게 만들 수 있는 것이다. 현재 이 기능은 C 포함될 예정이다. 비주얼 스튜디오 Orcas에는 이 기능이 이미 들어있다.

●격리된 스토리지(Isolated storage)
로컬 파일 시스템에 어떤 데이터를 저장해야 할 경우가 있을 것이다. 이때 아무 폴더나 접근 가능하게 하면 기존 액티브X 컨트롤의 보안 문제와 같은 위험을 내포하게 된다. 따라서 안전하게 격리된 별도의 저장 공간을 사용함으로써 이에 따른 보안 이슈를 해결할 수 있다. 실버라이트에서는 이러한 별도의 독립적인 저장 공간인 Isolated storage를 지원한다. Isolated storage에 대해서는 http://msdn2.microsoft.com/en-us/library/ffbfac6a-5c25-41de-830b-b7d0c1225f83.aspx을 참조하거나 2006년 7월호 ‘Enterprise Library2.0’기사를 참고하기 바란다.

●파일 관리
안전한 파일 열기 다이얼로그 박스를 지원한다. 실버라이트는 HTTP POST를 이용한 웹서비스도 지원하므로 파일 업로드/다운로드 기능을 구현할 수 있다. 실제로 실버라이트 1.1 QuickStarts 샘플에 보면 파일 업로드 다운로드 샘플이 있다. 기존에 많은 파일 업로드/다운로드 기능들이 액티브X 컨트롤로 구현이 되어 있는데, 앞으로 실버라이트를 이용한 업로드/다운로드 컨트롤의 가능성에 대해서도 검토해 볼 수 있을 것이다.

●JSON 지원
JSON은 JavaScript Object Notation의 약자이다. 한마디로 자바스크립트에서 사용하는 객체 기술 방법이다. XML과 비슷하게 텍스트 기반의 트리형식으로 데이터를 표시한다. XML은 범용 적이긴 하지만 파싱을 하기 위한 부하가 있고 수많은 꺽쇠 기호‘<’, ‘>’로 인하여 사이즈가 크다. 그래서 등장한 것이 경량화 되고 자바스크립트에서 바로 객체로 인식 가능한 데이터 형식인 JSON이다. 플랫폼에 종속적이지 않기 때문에 어디에서나 자유롭게 사용할 수 있다. 보다 자세한 내용은 http://www.ietf.org/rfc/rfc4627.txt?number=4627을 참조하길 바란다.

●POX 지원
POX는 Plain Old XML의 약자이다. XML 데이터를 주고받는데 있어 일반적으로는 SOAP 프로토콜을 이용한 방식이 권장된다. 하지만 SOAP 프로토콜은 부가적인 정보를 많이 포함해야 하므로 상당히 무겁다. POX는 단순한 XML 데이터를 전송하므로 상대적으로 가벼워지는 효과가 있다. 따라서 SOAP 프로토콜이나 WS-* 표준에 해당하는 기능을 사용하지 않을 거라면 단순한 POX 방식의 메시지가 유용할 것이다.

●XML 라이브러리
스크립트에서 XML DOM 객체를 이용해서 XML 데이터를 처리하는 것은 쉬운 일이 아니다. 실버라이트는 닷넷 프레임워크를 그대로 사용할 수 있으므로 닷넷 프레임워크에 있는 XMLReader나 XMLWriter 클래스를 바로 사용할 수 있다. 또한 XLinQ 기능을 이용하면 보다 쉬운 쿼리 구문도 만들 수 있다.

  실버라이트의 성능

실버라이트의 그래픽 렌더링 성능에 대해 벤치마크 할 수 있는 재미있는 사이트가 있다. 바로 http://bubblemark.com다.

<화면 8> 실버라이트, DHTML, Flex 그래픽 렌더링 성능 테스트


여러 개의 공을 표시하고 렌더링 하면서 초당 몇 프레임이 나오는지 계산하는 프로그램이다. 동일한 프로그램을 DHTML이나 플래시, 실버라이트를 이용해서 테스트를 수행할 수 있다. 실제로 사용자가 직접 할 수 있으므로 상당히 흥미로운 사이트다. 필자가 직접 테스트한 결과도 있는데 <표 2>는 올해 2월에 WPF/e로 수행한 결과이다.


결과를 보면 실버라이트의 렌더링 성능이 플렉스 못지않음을 확인할 수 있을 것이다. 이 결과 외에 여러 사람들이 테스트한 결과를 댓글로 올려놓았다. 관심 있는 독자들은 참고하길 바란다.

  실버라이트의 미래

WPF의 부분 집합 기능을 가지는 실버라이트는 점점 더 그 기능을 추가해 나갈 것이다. 현재 1.1 알파 버전에서 사용할 수 있는 컨트롤이 다양하지는 않지만 앞으로 많이 추가될 것이다. 아래는 WPF와 실버라이트의 특징을 비교한 표이다. 아래 표 내용은 미국 라스베가스에서 열린 MIX07에서 발표한 내용의 일부이다.


 


 


<표 3>~<표 5>를 보면 정식 1.1 버전이 나올 때쯤이면 상당히 유용한 기능들이 추가될 것으로 예상된다. 위의 기능들 중 한 가지 아쉬운 것은 1.1 버전에서도 DataGrid 기능은 고려되고 있지 않다는 점이다. 일반적인 응용 프로그램을 만드는데 있어 그리드 기능은 상당히 많이 사용된다. 그리드 기능만 있어도 웬만한 게시판 프로그램도 쉽게 만들 수 있을 것이다. WPF에서는 그리드 컨트롤을 써드파티 제품으로 제공하는데 실버라이트에서는 사용자 정의 컨트롤 기능을 지원하므로 다른 업체들이 이러한 그리드 컨트롤을 만들어서 제공할 수 있을 것으로 예상된다.

실버라이트의 발전 과정을 보고 있으면 마치 영화에서나 보았던 꿈에 그리던 미래의 컴퓨팅 환경이 상상이 되곤 한다. 기존 브라우저의 한계를 뛰어 넘는 자유로운 사용자 인터페이스는 새로운 웹 환경을 만들어 나갈 수 있을 것이다. @


참고자료
1) Silverlight 공식 사이트,http://www.microsoft.com/silverlight/default.aspx
2) Silverlight 커뮤니티 사이트, http://silverlight.net
3) Silverlight 개발자 센터, http://msdn2.microsoft.com/en-us/asp.net/bb187358.aspx


2008. 12. 18. 17:37

MS LINQ 란??

LINQ 하나로 모든 데이터 (DataSet 이나 SQL 같은 데이터베이스, XML, 일반 .NET 개체) 를 통일된 문법으로 쿼리할 수 있다.

LINQ 를 기능적으로 분류하면 다음과 같다.
▶ LINQ to Objects
▶ LINQ to XML
▶ LINQ to DataSet
▶ LINQ to SQL

.NET 개체나 XML, 데이터베이스에서 데이터를 통합된 문법을 조회할 수 있도록 해 주는게 LINQ (Language Integrated Query) 다.

VS 2008의 IDE에서 보면,  LINQ to SQL이라는 클래스 템플릿이 제공 된다.
해당 파일을 생성한 후, 서버탐색기에서 Table 혹은 SP에 대해서 드래그 앱 드랍시, 자동으로 클래스가 생성되어지는데, 해당 클래스에서 리턴되는 DataContext 녀석을 DataSouce로 사용하게 된다.

Table에  relation을 준 후,  Join을 했을경우, Auto Generate 된 코드를 보면 여러개의 테이블 및 컬럼에 대한 정보를 담고 있는 것을 확인 할수 있습니다. 
그런데, SP의 경우 멀티셋을 리턴하는 케이스에서는 첫번째 Select 에 대해서만 Generate 되는것을 볼수 있다. 물론, sqlMetal이라는 유틸을 통해서 가능하겠지만...

2008. 12. 18. 17:12

AJAX , WPF ,WCP, WP , 실버라이트 , orcas , LINQ 이것이 각각 무엇이고 어떤 기능들을 하는지 간략하게...

    1-1 AJAX (Asynchronous JavaScript and XML)

        - 대화 식 Web Application를 만들기 위한 Web 개발 방법dl다.

        - 비동기식으로 JavaScrip를 사용해 Client로 부터 페이지 리로딩 없이 데이터를 처리할수있는 방법dl다.

        - 기존에 사용되던 기술로 신기술이라 보기 어렵고 2005년 구글에 의해 새롭게 부각된 기술이다.


    1-2 WPF(Windows Presentation Foundation) Code Name : Avalon

        -  Microsoft Windows Vista의 새로운 GraphicInterface를 지원한다.

        -  닷넷 프레임워크 3.0의 그래픽 하부 시스템 기능(WinFX)이며, XAML과 직접 관련이 있다.

        - WPF는 User Interface / Raster graphics / 3D Draw / Animation / DataBinding / Vector graphics의  Service Host를 통합 한다.

        # : Xbap(Xaml Browser APplication)

              - Xbap을 이용하면 WPF로 만든 것을 그대로 웹으로 올릴수 있다. (단 IE에서만 가능하다.).


    * AIR(Adobe Intergrated Runtime) Code Name : Appolo

    - 웹 애플리케이션을 데스크톱에서 운영할 수 있게 하는 플러그 인 기술


    1-3 WCF(Windows Communication Foundation)

        - Microsoft 의 차세대 데이터 통신 인프라다.

        - Webservice와 Remoting 이 주류를 이끌고 있는 현제 .NET 플랫폼에서 이들을 통합하고 SOA(Service-Oriented Architecture)를 기반으로 연동되는 기술

        - WCF 프로그래밍 모델은 웹 서비스, 닷넷 리모팅, MTS, 그리고 메시지 쿼리를 하나의 서비스 지향 프로그래밍으로 통합한다.

  

    1-4WF( Windows Workflow Foundation)

        - 간단한 순차 Workflow부터 정교한 사용자 상호 작용을 포함하는 복잡한 상태 컴퓨터 기반 Workflow에 이르기까지 광범위한 시나리오를 충족하는 Workflow를 구축할 수 있다.

           

    1-5 WPF/E(Windows Presentation Foundation / EveryWhere)  - Siverlight

        - Web브라우저 안에 인스톨되어 동작하며, 단순한 HTML 등에서는 실현하기 어려운 풍부한 유저 인터페이스를 가진 소프트웨어를 작성할 수 있는, Flash와 비슷한 기술이다

        - WPF의 일부기능을 제외하고 아주 탄력적이며 가볍게 구성된 기술이다.

        - Adove의 Flex와 경쟁 구도에 있다.


    1-6 Visual Studio 9.0 (.NET 2008) Code Name : Orcas

        - .NET의 대표적인 툴이다.

 

    1-7 LINQ(.NET Language Integrated Query)

        - LINQ는 데이터 소스 뿐만 아니라 개발을 위한 데이터 접근을 표준화하려는 MS의 이니셔티브라고 요약해서 말할수 있다.

        - LINQ는 기존의 ADO와는 틀을 달리 하는 Database 접근 방식이며 보다 빠른 DataAccess를 가능하게 해준다.

        - LINQ로 인한 알려진 장점으로는 Boxing과 Unboxing으로 인한 성능 소모를 Generic의 고도화된 활용으로 성능비를 높힌다에 있으며 우선 관계형 데이터베이스 테이블 뿐만 아니라 텍스트 파일, XML 파일, 그리고 동일한 구문을 사용하는 데이터 소스에 질의를 할 수 있다는 점을 들 수 있다.


  # : AJAX 같은 경우 Web 2.0 의 대표적인 기술로 페이지 리로딩 없이 데이터 처리.

  # : WCF / WPF / WF  - .NET Framework 3.0 부터 점차 발전 되가고 있는 기술.

  # : WPF / E ( Siverlight ) 개인 적인 생각입니다만 Adove 의 Flex의 시장성에 말미암아 MS 에서 급하게 내려놓은 기술이 아닌가 싶다. Cross Flatform을 지원. WPF의 파생기술.

  # : Orcas : 그냥 툴이름.

  # : LINQ : .NET 3.0 에서 추가된 강력한 Data Access 기술.

 

'C# .NET' 카테고리의 다른 글

[ZDNet] 실버라이트 활용법  (0) 2008.12.19
MS LINQ 란??  (0) 2008.12.18
WPF, Silverlight 에 대해서...  (0) 2008.12.18
C#과 .NET Framework  (0) 2008.12.16
c# 도형그리기  (0) 2008.11.20