여기에서는, Microsoft patterns & practices 의 Composite Application Guidance for WPF (Windows Presentation Foundation)이라고, 이것이 대처하는 개발 과제가 대범한 개요에 대해서 설명합니다.
복잡한 WPF 클라이언트 어프리케이션(application)을 빌드할 때에 직면하는 몇개의 문제점과, Composite Application Guidance for WPF 을 이용해서 이러한 문제점에 대처하는 방법에 대해서 설명하고, Composite Application Guidance for WPF 과 다른 동등한 어프로치를 비교합니다.
어프리케이션(application) 개발의 과제
일반적으로, 클라이언트 어프리케이션(application)의 개발자는 많은 과제에 직면합니다. 대부분의 엔터프라이즈 어프리케이션(application)은 상당히 복잡해져, 복수의 개발자가 필요하게 됩니다. 또, 개발자이외에도 사용자 인터페이스(UI)의 디자이너나 localizer―등이 관여하는 대규모인 개발팀이 될 것도 있습니다. 복수의 개발자나 서브팀이, 각양각색인 어프리케이션(application) 컴포넌트를 각각 독립해서 효과적으로 개발할 수 있음과 동시에, 개발한 컴포넌트를 어프리케이션(application)에 통합할 때 심리스(seamless)에 연계할 수 있는 것 같은 어프리케이션(application) 설계 수법을 정하는 것은 큰 과제가 될 가능성이 있습니다.
게다가, 어프리케이션(application)의 요건은, 시간의 경과와 함께 변화되어 갈 가능성이 있습니다. 새로운 사업기회가 생기거나, 비즈니스상의 과제가 출현하거나 할 가능성이 있습니다. 새로운 technology를 이용할 수 있게 될지도 모르겠습니다. 개발 사이클의 진행중에 유저에게서의 피드백이 있어, 어프리케이션(application)의 요건에 중대한 영향을 끼치는 것도 생각됩니다. 따라서, 유연성이 있어, 장기에 걸쳐 용이하게 변경 또는 확장할 수 있는 어프리케이션(application)을 빌드하는 것이 중요해집니다. 유지 관리(maintenance)가 용이한 설계를 실현되는 것은 곤란합니다. 어프리케이션(application)의 각 부분을 독립해서 개발 및 테스트할 수 있는 아키텍처, 어프리케이션(application)의 다른 부분에 영향을 주지 않고, 독립해서 변경 또는 갱신할 수 있는 아키텍처가 필요합니다.
” monolithic”스타일의 어프리케이션(application)을 설계 및 빌드하면, 유지 관리(maintenance)가 대단히 곤란해서, 효율이 나쁜 어프리케이션(application)이 될 가능성이 있습니다.이 경우의” monolithic”스타일의 어프리케이션(application)과는, 어프리케이션(application)의 각 컴포넌트가 서로 가까운 관계를 가지고, 각 컴포넌트를 명확히 분리할 수 없는 어프리케이션(application)입니다. 보통, 이 방법으로 설계 및 빌드된 어프리케이션(application)은, 개발자의 작업을 곤란하게 하는 많은 문제점을 생기게 합니다. 시스템에 새로운 기능을 추가하거나, 기존의 기능을 바꿔 놓거나 하는 것이 곤란합니다. 시스템의 다른 부분에 영향을 주게 하지 않고 버그를 해결하는 것이 곤란합니다. 테스트나 배치가 곤란합니다. 또, 개발자와 디자이너가 효과적으로 연계할 수 없게 됩니다.
복합 어프로치
이러한 과제를 효과적으로 해결하기 위해서는, 어프리케이션(application)을 몇개의 컴포넌트에 분할합니다. 그 때, 각 컴포넌트를 독립시켜, 상호의 결부를 적게 하고, 상호의존 관계를 절감하고, 어프리케이션(application)”셀”에 용이하게 통합할 수 있도록 하고, 일관성이 있는 솔루션을 형성합니다. 이러한 방법으로 설계 및 빌드된 어프리케이션(application)을” 복합 어프리케이션(application)”이라고 부릅니다.
복합 어프리케이션(application)에는, 다음과 같은 많은 메리트가 있습니다.
- 개발자나 서브팀이, 각 모듈을 각각 개별로 개발, 테스트,및 배치할 수 있습니다. 새로운 기능에 용이하게 변경 또는 확장할 수 있습니다. 그 결과, 어프리케이션(application) 자체를 용이하게 확장 및 유지 관리(maintenance)로 오겠습니다.
- 소결합 형식으로 상호작용하는 각양각색인 모듈로부터의 UI 컴포넌트에서 구성되는 공통 셀이 제공됩니다. 이것에 의해, 복수의 개발자가 UI 에 신기능을 추가 함으로써 생기게 하는 경합이 감소하고, 공통인 외관을 얻을 수 있습니다.
- 로그 기록이나 인증등의 어프리케이션(application)을 횡단하는 기능이나, 어프리케이션(application) 고유의 비즈니스 기능과 같은 종적의 기능의 재이용이 진행하고, 각각의 현안사항이 명확히 분리됩니다.
- 각 개발자나 서브팀은 각각의 중점분야나 전문분야에 따라서 특정한 작업이나 기능 부분에 집중할 수 있기 위해서, 역할을 분담할 수 있습니다. 특히, 어프리케이션(application)의 사용자 인터페이스와 비즈니스 로직을 명확히 분리할 수 있습니다. 즉, UI 디자이너는 좋은 【사용자 경험】를 만들어 내는 것만큼 전념할 수 있습니다.
복합 어프리케이션(application)은, 클라이언트 어프리케이션(application)이 광범위한 시나리오에 잘 적합합니다. 예를 들면, 많은 이종 back-end 시스템 위로 기능 풍부한 【엔도유자에쿠스페리엔스】를 작성하기 위해서는, 복합 어프리케이션(application)이 이상적입니다. 도1에 이 종류의 복합 어프리케이션(application)을 내보입니다.
도1
복수의 back-end 시스템과 연계하는 복합 어프리케이션(application)
이 종류의 어프리케이션(application)에서는, 유저에게 기능이 풍부해서 유연성이 있는 【유자에쿠스페리엔스】를 제공할 수 있습니다. 이러한 【유자에쿠스페리엔스】는, 복수의 back-end 시스템, 서비스,및 데이타 스토어 (각각 1개이상의 전용 모듈로 나타내집니다)에 미치는, 타스크(task)를 중심으로 하는 것에 중점을 둔 기능을 제공합니다. 어프리케이션(application) 로직과 사용자 인터페이스가 명확히 분리되기 때문, 어프리케이션(application)에서는 모든 구성 모듈간에서 일관성이 있으면서, 구별된 외관을 제공할 수 있습니다.
또, UI 안(속)에 개별로 개량을 더하여지는 컴포넌트가 있어, 이것들의 컴포넌트가 서로 밀접에 통합되어, 각각이 다른 팀에 의해 유지관리되는 것 같을 경우에도 복합 어프리케이션(application)이 유효합니다. 도2에 이 종류의 어프리케이션(application)의 스크린 숏을 내보입니다. 빨강테두리로 둘러싼 각 영역이, UI 로서 합성되는 개별의 컴포넌트를 나타내고 있습니다.
도2
Stock Trader Reference Implementation 복합 어프리케이션(application)
이 경우, 복합 어프리케이션(application)으로 하는 것으로, 어프리케이션(application)의 사용자 인터페이스를 동적으로 합성할 수 있습니다. 그 결과, 유연성이 있는 【사용자 경험】를 제공할 수 있습니다. 예를 들면, 실행시에 새로운 기능을 동적으로 추가할 수 있고, 최종사용자에 뛰어난 커스터마이즈와 확장의 기능을 제공할 수 있습니다.
아키텍처의 목표와 원칙
이하의 겉면에, Composite Application Guidance 팀의 고객자문위원회에 의해 최우선으로 여겨지고 있는 아키텍처상의 원칙을 내보입니다. 이것들의 원칙으로부터, 가이던스(guidance)가 어떻게 고안되어, 어느 분야에 중점이 두어졌는지를 판단할 수 있습니다.
품질 |
정의 |
---|---|
subset화의 용이성 |
Composite Application Library 의 일부를 이용할 수 있도록 하는 것입니다. 특정한 기능만을 선택할 수 있고, 기능을 증가하면서 이용할 수 있고, 기능 단위에 유효 또는 무효에 할 수 있습니다. |
학습의 용이성 |
Composite Application Library 을 사용하는 WPF 복합 어프리케이션(application)의 build 방법을 재빠르게 이해가 가도록 하는 것입니다. 이해하기 쉽고, 서로 의존하지 않는 작은 기능을 복수준비하는 것으로, 신속히 착수할 수 있게 됩니다. |
확장성 |
프레임워크나 어프리케이션(application)의 디자인을 다시 할 필요가 없고, 프레임워크의 구성 요소를 강화, 확장,또는 치환할 수 있도록 하는 것입니다. |
호환성 |
Composite Application Library 을 기존의 어프리케이션(application)에 채용할 수 있고, 다른 기존의 인프라스트럭처와 병용할 수 있습니다. 중핵이 되는 서비스는 교환가능합니다. |
단순성 |
Composite Application Library 은, 복잡함을 줄이기 위해서, 필요최저한의 방법으로 디자인되어 있습니다. Composite Application Library 은, 해야 할 것을 할 수 있는 최저한의 단순성을 추구하고 있습니다. |
테스트의 용이성 |
Composite Application Guidance 의 샘플 구현은, 프레젠테이션의 분리(Separated Presentation)패턴의 구현을 제공합니다. 이러한 패턴에 의해 UI 로직을 테스트할 수 있습니다. |
퍼포먼스 |
Composite Application Library 은, 어프리케이션(application) 실행중의 오버헤드를 최소한으로 억제하고 있습니다. |
스케일라 빌리터 |
어프리케이션(application)은, 증가하는 부하를 지원하게 스케일을 확대할 수 있습니다. |
업그레이드의 용이성 |
Composite Application Library 을 사용하게, 기존의 WPF 어프리케이션(application)을 업그레이드할 수 있습니다. |
도입【사용자 경험】
Composite Application Guidance 에는, 뛰어난 도입【사용자 경험】를 제공한다고 하는 명확한 목표가 있습니다. 이 목표를 실현되기 위해서, Composite Application Guidance 에서는 이하의 기능을 제공합니다.
- Composite Application Library 의 기능을” 선택” 및” 선택으로부터 제외”할 수 있습니다. 예를 들면, 필요한 서비스만을 이용할 수 있습니다.
- 기존의 WPF 어프리케이션(application)에 Composite Application Library 의 기능을 서서히 추가할 수 있습니다.
- 이하의 이유에 의해 안전성을 제공합니다.
- 코드내에서의 Composite Application Library 의 footprint가 제한되어 있습니다.
- Composite Application Library 의 커스텀 속성에의 의존도가 제한되어 있습니다. 계승보다도 구성을 우선하는 디자인에 의해, 기존의 라이브러리를 Composite Application Library 에 통합할 수 있습니다 (이것에 의해 Composite Application Library 의 클래스에서의 계승을 회피할 수 있습니다).
Composite Application Guidance 에서는 대처되지 않는 현안사항
Composite Application Guidance 에서는, 이하의 항목이 직접 대처되지 않으므로 주의해 주십시오.
- 단속적인 접속
- 이하를 포함하는 메시지 인프라스트럭처
- 클라이언트와 서버간의 통신
- 비동기통신
- 암호화
- 어프리케이션(application)의 퍼포먼스
- 인증과 승인
- 이하를 포함하는 백그라운드 갱신으로부터의 쓰레드 세이프에 관한 처리
- 데이타의 경합
- 데이타의 동기
- 복수의 쓰레드로부터의 UI 갱신의 처리(Composite Application Library 에서는 이 일부의 측면에 대처합니다)
- 버젼 관리
- 에러 처리와 fault tolerance
이것들의 토픽의 상세에 대해서는, 이하의 리소스를 참조해 주십시오.
- Smart Client Architecture and Design Guide (영어)
- Occasionally Connected Systems Architecture:The Client (영어)
- Occasionally Connected Systems Architecture:Concurrency (영어)
Composite Application Guidance 을 선택할 때의 고려사항
Composite Application Guidance 은, 복잡한 WPF 어프리케이션(application)을 설계하는 것이 목적입니다. Composite Application Guidance 의 사용을 고려해야 할 시나리오는 이하 대로입니다.
- 통합 사용자 인터페이스를 사용하고, 복수의 소스로의 정보를 표시하는 복합 어프리케이션(application)을 빌드한다.
- 다른 모듈과는 무관계에 모듈을 개발, 테스트 및 배치한다.
- 복수의 공동 작업팀에서 어프리케이션(application)을 개발한다.
이러한 시나리오를 1개이상 필요로 하지 않는 어프리케이션(application)에는, Composite Application Guidance 이 적절하지 않을 경우도 있습니다. Composite Application Guidance 에는 WPF 을 실제로 사용한 경험이 필요하게 됩니다. WPF 에 관한 전반적인 정보가 필요할 경우는, 이하의 소스를 참조해 주십시오.
- MSDN 의 Windows Presentation Foundation
- Sells, Chris, Ian Griffiths 공저 『Programming WPF: Building Windows UI with Windows Presentation Foundation』 (Second Edition), O'Reilly Media, Inc. ,2007년
- Nathan, Adam 저 『Windows Presentation Foundation Unleashed』 Indianapolis, IN: Sams Publishing, 2006년
'CAG for WPF > CAG - 개요' 카테고리의 다른 글
P&P로부터의 복합 UI 의 성과물을 선택할 때의 가이드 라인 (0) | 2009.09.25 |
---|---|
개요 (0) | 2009.09.25 |