[WPF] WPF 개념

Posted by 알 수 없는 사용자
2015. 5. 29. 23:36 프로그래밍/WPF

WPF (Windows Presentation Foundation)


■ 기술발달과정

  • 1985년 GDI/USER 시스템을 기반으로 하는 윈도우 1.0 버전이 만들어짐.

  • 1990년대 초반, 2D/3D 그래픽을 다루는 프로그램에서 이용하는 실리콘 그래픽스사에서 만든 OpenGL이 선풍적인 인기를 끔.
    OpenGL을 통해 CAD, 가상현실 프로그램, 게임들을 개발하는데 이용함.

  • 1995년 마이크로소프트사에서 다이렉트X를 발표함. 2차원 그래픽, 입력장치, 커뮤니케이션, 사운드에서 고성능 기능을 구현할 수 있게 됨. 
    몇 년이 흘러, GDI와 다이렉트X에서 많은 기술적 진보가 이루어지고 GDI+로 발전.

  • 2002년, 매니지드 코드와 닷넷의 발표로, 개발자들은 윈도우나 웹 프로그램을 작성할 때 생산성이 높은 기술을 접하게 됨.

  • 닷넷의 여러 기술 중에서, GDI+를 쉽게 이용할 수 있게 한 윈폼(Windows Forms)은 C#, 비주얼베이직, C++ 개발자들이 윈도우의 새로운 사용자 인터페스를 만들기 위해 사용하는 중요한 기술이 됨. 그렇지만 GDI+와 USER 시스템의 근본적인 한계는 아직까지 존재함.


다이렉트X 9 버전이 소개된 이후, 마이크로소프트는 과거에 비주얼베이직을 위한 라이브러리를 만들어 배포했던 것처러 매니지드 코드를 위해서 다이렉트X 프레임 워크를 만들었고 이후 XNA 프레임워크로 발전시켰다. 이 프레임워크는 C# 개발자들이 복잡한 . NET/COM  상호운용성 문제를 다루지 않고도 다이렉트X를 다룰수 있도록 해 주었지만, 게임을 개발할때를 제외하곤 예전 프로그램 방식보다 특별히 쉬워진 것이 없었다.


마이크로소프트사는 GDI+와 USER 시스템의 한계를 탈피한 무엇인가 새로운 것이 필요하다고 인식을 했고, 현재 윈폼처럼 프레임워크 기반에서 사람들이 즐길 수
있을 정도로 생산성이 뛰어난 기술을 제공하기 시작했다. 그래서 WPF(Windows Presentation Foundation)는 난이도가 높고 기술적으로 어려운 문제들을 숙지하지 않고도 현대적인 사용자 겸험(User eXperience)을 개발하기 원하는 개발자나 디자이너에게는 하나의 대답이 될 수 있다.


WPF의 특징

  • 광범위한 통합성 - 2차원 그래픽, 3D, 비디오, 음성인식 기능등 여러 분야를 포함하면서도 일관성 있는 프로그래밍 모델과 개별 기술이 서로 잘작동하도록 긴밀한 통합성을 제공.
  • 해상도 독립성 - 해상도를 높이거나 DPI 값이 변경 되는 경우 작은 UMPC나 50인치 대형 TV같이 화면 크기에 상관없이 사용자 인터페이스가 상황에 맞춰 알맞게 보이는 것이 GDI 기반 인터페이스에서는 불가능하지만, WPF가 벡터기반으로 이루어져 이러한 것이 가능하기 때문에 사용자들은 해상도와 관계없이 화면상에 나타나는 것들을 쉽게 늘였다 줄였다 할수 있다.




  • 하드웨어 가속 기능 - WPF가 새로운 기술이긴 하지만, 실제적인 내용은 다이렉트 3D의 기반 위에서 만들어져, 특히 2D/3D 그래픽과 텍스트는 3차원의 삼각형, 텍스처 및 다른 다이렉트3D 객체로 전환되어 하드웨어(그래픽카드)에 의해서 렌더링된다. 그리하여 그래픽을 좀더 부드럽게 표현하기 위해 하드웨어 가속 기능을 사용함으로써 고사용을 요구하는 게임을 제외하곤 3D 기능에 중점을 둔 새로운 하드웨어나 드라이버에서 최대한의 기능을 맛볼 수 있게 해준다.
  • 선언형 프로그래밍(declarative programming) - 모든 닷넷 프로그램은 XML을 이용해서 리소스 파일과 환경설정을 정의하곤 한다. 그러나 WPF는 XAML(Extensible Application Markup Language)을 소개하고 이를 이용한 선언형 프로그래밍을 도입하였다. HTML로 사용자 인터페이스를 정의하는 것과 방식이 유사하지만, HTML에 비하면 놀라울 정도로 광범위하다.
     
  • 다양한 제작방식과 커스터마이징 - WPF 컨트롤들은 예전에 볼수 없던 놀라운 커스터마이징 기술을 제공한다. 예를들어 콤보박스를 애니메이션 버튼으로, 또는 메뉴를 동영상 화면으로 채울 수도 있다. 이처럼 심할 정도로 사용자 개인취향에 맞게 고칠 수 있다. 동일한 코드를 가지고, 외형을 아주 쉽게 바꿀 수 있는 '스킨' 기능을 가진 프로그램을 쉽게 만들 수 있다.

  • 쉬운 배포 - 윈도우즈 인스톨러나 클릭원스를 이용한 전통적인 배포방식과 웹 브라우저에서 프로그램을 실행시키는 방식을 지원한다.


정리 - WPF는 다이렉트X의 3D나 하드웨어 가속 기능, 윈폼의 생산성, 플래시 같은 강력한 애니메이션 지원 기능, 그리고 HTML처럼 간단한 선언형 마크업과 쉬운 배포등 좋은 장점들만을 취합하는 것을 목표로 한다. 하지만 아쉽게도 처음 시작할 때 로딩 시간이 너무 오래 걸리는 문제와 하드웨어 가속 기능을 지원하지 않는 시각적 효과 같은 성능 문제나 3D, 오디오 , 비디오처럼 대부분의 사람들이 선호하는 분야에서 아직 완벽하지 않다는 점들을 문제 삼을 수 있다. 하지만 WPF를 접하다 보면 과거 어떤 기술보다도 뛰어난 생산성과 강력한 기능을 발견할 수 있다.


이미지 출처(참고) - http://cafe.naver.com/mcutil/4206

참고 서적 - 에덤 네이선의 WPF 언리쉬드





'프로그래밍 > WPF' 카테고리의 다른 글

MVC, MVVM 코드 리뷰를 통한 차이점 설명  (5) 2015.07.05
[WPF] MVC, MVP, MVVM 차이점  (5) 2015.06.30
[WPF] XAML  (7) 2015.05.30