티스토리 뷰
개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
POWERUMC 2012. 8. 2. 12:39본 아티클은 MSDN 에 eBook으로 공개된 문서를 블로그 아티클로 편집하였습니다. VSTS 팀블로그에 의해 작성된 문서의 원문 및 여러 가지 기술 문서는 아래의 링크에서 PDF로 다운로드 받을 수 있습니다. 그리고 본문의 특정 버전을 지칭하는 개발툴 버전 번호는 모두 Visual Studio로 변경되었음을 참고하십시오. (예- Visual Studio 20xx는 Visual Studio로 표기함 )
VSTS 팀블로그 MSDN 기술 문서 : http://msdn.microsoft.com/ko-kr/gg620748
필자 소개 Microsoft Visual Studio ALM MVP 엄준일
Visual Studio Korea Team Blog | 감수 : 강성재 부장
도움주신 분 : 김남영 부장 |
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가?
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개
7. Visual Studio Modeling SDK
Vual Studio 2010 SDK(Software Development Kit)은 기존의 Visual Studio의 기능을 확장할 수 있는 도구를 지원해 주고 있습니다. 이 내용에 대해 자세한 내용은 필자의 블로그의 다음의 글을 참고 하십시오.
참고 [VSX] 1. Visual Studio Extensibility,, 그 시작 |
7.1. 개발 환경 및 설치 요구 사항
Visual Studio 모델링 프로젝트를 확장하기 위해 먼저 Visual Studio SDK를 설치해야 합니다. Visual Studio SDK 는 아래의 다운로드 주소를 통해 다운로드 받으실 수 있습니다.
Visual Studio SDK 다운로드 |
시스템 요구 사항
- Supported Operating Systems: Windows 7;Windows Server 2003 R2 (32-Bit x86);Windows Server 2003 R2 x64 editions;Windows Server 2003 Service Pack 2;Windows Server 2008 R2;Windows Server 2008 Service Pack 2;Windows Vista Service Pack 2;Windows XP Service Pack 3
- Windows XP (x86) with Service Pack 3 - all editions except Starter Edition
- Windows Vista (x86 & x64) with Service Pack 2 - all editions except Starter Edition
- Windows 7 (x86 and x64)
- Windows Server 2003 (x86 & x64) with Service Pack 2 - all editions
- Users will need to install MSXML6 if not already present
- Windows Server 2003 R2 (x86 and x64) - all editions
- Windows Server 2008 (x86 and x64) with Service Pack 2 - all editions
- Windows Server 2008 R2 (x64) - all editions
Visual Studio 2010 요구 사항
- Visual Studio 2010 Professional or better
7.2. Layer Diagrams 확장하기
Visual Studio SDK와 Visual Studio 2010 Visualization & Modeling Features Pack을 설치하면 Layer Diagrams을 확장할 수 있는 프로젝트 템플릿이 설치가 됩니다.
새 프로젝트 만들기에서 모델링 프로젝트->Extensibility 를 선택하면 세 가지의 새로운 템플릿이 생성이 된 것을 확인할 수 있습니다.
각 템플릿은 Layer Diagrams을 확장하기 위해 아래와 같은 기능을 수행하는 템플릿입니다.
- Command Extension
Layer Diagrams에 특정 컨텍스트 메뉴를 통해 명령을 수행할 수 있는 확장 기능을 만들 수 있습니다. - Gesture Extension
Layer Diagrams으로 끌어오기 동작 등의 확장 기능을 만들 수 있습니다. - Validation Extension
Layer Diagrams과 코드의 구조가 유효한지 검사하는 확장 기능을 만들 수 있습니다.
7.2.1. 레이어 개수를 세는 Command Extension 만들기
7.2.1.1. Layer Diagrams Command Extension 프로젝트 생성
우선 간단한 Command Extension을 만들기 위해 Command Extension 템플릿으로 프로젝트를 생성합니다. 프로젝트의 이름을 CustomLayerCommand (또는 희망하는 이름으로) 프로젝트를 생성합니다.
간단히 생성된 프로젝트를 실행 또는 디버깅 하기 위해서 생성된 Command Extension 프로젝트를 선택하여 마우스 오른쪽 버튼을 클릭하여 시작 프로젝트로 설정합니다.
그런 다음 F5 키를 눌러 디버깅을 시작합니다. F5키를 눌러 디버깅을 시작하면 Visual Studio 2010은 별도의 레지스트리를 사용하는 Experimental 모드로 실행을 하게 되어 기존의 Visual Studio 2010에 영향이 없도록 동작하게 됩니다.
7.2.1.2. Layer Diagrams에 명령 코드 만들기
Visual Studio 의 새로운 확장 기능은 .NET Framework 4.0에 포함되는 MEF(Managed Extensibility Framework)를 사용하여 확장 기능을 만들 수 있습니다. 모델링 확장 기능 또한 MEF를 사용하여 확장할 수 있으며 MEF에 대한 자세한 내용은 필자의 블로그를 참고 하시기 바랍니다.
참고 MEF(Managed Framework Extensibility) 연제 |
우선 클래스의 선언은 다음과 같이 되어 있습니다 아래와 같이 ExportAttribute을 사용하여 ICommandExtension 형식을 Visual Studio 모델링에서 인식할 수 있도록 컴포넌트 계약을 합니다. 그리고 LayerDesignerExtensionAttriburte을 추가하면 Layer Diagrams에서 ICommandExtension 확장 기능을 사용할 수 있도록 합니다.
[Export(typeof(ICommandExtension))] |
클래스 내부에 Import된 IDiagramContext는 현재 다이어그램의 컨텍스트 개체로 이 개체를 이용하여 특정 명령을 내릴 때 다양한 작업을 수행할 수 있습니다.
|
ICommandExtension의 인터페이스는 Text 속성을 구현해야 하는데 이 속성은 다이어그램 컨텍스트 메뉴에서 표시되는 메뉴 이름입니다.
|
ICommandExtension의 인터페이스는 QueryStatus를 구현해야 하는데, 현재 상태에서 컨텍스트에 표시될 수 있는지 여부를 나타내게 됩니다. 조건에 따라 다른 표시/보이기 등의 동작이 필요하다면 아래의 코드를 수정하시면 됩니다.
|
마지막으로 ICommandExtension의 Execute 메서드를 구현합니다. 이 메서드는 Layer Diagrams의 레이어 개수를 계산하기 위해 재귀 호출을 통해서 레이어 요소의 개수를 카운트합니다.
|
7.2.1.3. Layer Diagrams 코드 실행 결과
먼저 작성된 코드를 실행하기 위해 Visual Studio 에서 Command Extension을 시작 프로젝트로 설정한 후에 F5 키를 눌러 Visual Studio Experimental 모드로 실행을 할 수 있습니다. 만약 디버깅이 필요하지 않다면 Ctrl+F5 키를 눌러 디버깅 없이 실행하여 실행 속도를 높일 수 있습니다.
위의 코드는 다음과 같이 Layer Diagrams에서 마우스 오른쪽 버튼을 눌러서 활성화할 수 있습니다. 다음과 같이 Text 속성의 반환 값이 메뉴의 이름이 되는 것을 확인할 수 있습니다.
해당 메뉴를 클릭하면 Execute 메서드가 실행이 되고 메시지 상자에 Layer Diagrams에 포함된 모든 레이어의 개수를 표시해 줍니다.
7.2.2. 폴더 구조를 DRAG&DROP 하는 Gestures Extension 만들기
7.2.2.1. Geatures Extension 프로젝트 만들기
새로운 프로젝트를 생성하는 메뉴에서 모델링 프로젝트->Extensibility 항목에서 Layer Designer Gesture Extension 을 선택하고 확인을 클릭합니다.
이 후 설정은 Layer Diagrams Command Extension 프로젝트 생성 항목을 참고하십시오.
7.2.2.2. 폴더를 Drag&Drop 하는 코드 만들기
Gesture Extension 은 IGestureExtension 인터페이스를 구현합니다. 이 인터페이스를 상속하는 클래스를 만든 후에 ExportAttribute을 통해 Visual Studio 2010의 모델링 Geature Extension과 계약 관계를 형성합니다.
|
폴더를 Drag&Drop 하는 코드 전체는 다음과 같습니다.
|
7.2.2.3. 폴더를 Drag&Drop 하는 Gesture Extension 코드 실행 결과
먼저 테스트로 진행할 모델링 프로젝트를 생성한 후에 Layer Diagrams 항목을 추가 합니다.
그리고 윈도우 탐색기를 열어 드래그할 폴더를 다음과 같이 선택합니다.
선택할 폴더 항목을 Visual Studio 2010의 다이어그램 디자이너에 Drag하여 Drop합니다.
Drop 결과 해당하는 폴더의 이름대로 Layer Diagrams의 레이어 요소가 생성이 되는 결과를 확인할 수 있습니다.
'Enterprise Architecture > Architecture' 카테고리의 다른 글
AOP 프레임워크 이해와 개발 (0) | 2018.08.28 |
---|---|
개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개 (1) | 2012.08.02 |
개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack (0) | 2012.08.02 |
개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램 (0) | 2012.08.02 |
개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기 (0) | 2012.08.02 |
- Total
- Today
- Yesterday
- ***** MY SOCIAL *****
- [SOCIAL] 페이스북
- [SOCIAL] 팀 블로그 트위터
- .
- ***** MY OPEN SOURCE *****
- [GITHUB] POWERUMC
- .
- ***** MY PUBLISH *****
- [MSDN] e-Book 백서
- .
- ***** MY TOOLS *****
- [VSX] VSGesture for VS2005,200…
- [VSX] VSGesture for VS2010,201…
- [VSX] Comment Helper for VS200…
- [VSX] VSExplorer for VS2005,20…
- [VSX] VSCmd for VS2005,2008
- .
- ***** MY FAVORITES *****
- MSDN 포럼
- MSDN 라이브러리
- Mono Project
- STEN
- 일본 ATMARKIT
- C++ 빌더 포럼
- .
- POWERUMC
- 엄준일
- 팀 파운데이션 서버
- TFS
- Visual Studio
- c#
- Team Foundation Server 2010
- umc
- monodevelop
- .NET Framework 4.0
- MEF
- 땡초
- Silverlight
- Windows 8
- Visual Studio 2008
- Visual Studio 2010
- Team Foundation Server
- testing
- 비주얼 스튜디오 2010
- github
- Managed Extensibility Framework
- Visual Studio 11
- .NET
- LINQ
- ALM
- ASP.NET
- TFS 2010
- 비주얼 스튜디오
- mono
- test