SlideShare a Scribd company logo
Umc.Core Framework
엄준일
http://blog.powerumc.kr
Framework.IoC 개요
Component A Component B
Component D
Component C
Component A
Component B
Component D
Component C
INTERFACE
• 예전의 컴포넌트 기반의 개발 방법 • 인터페이스 기반의 계약 기반의 개발 방법
개발 방식 • 컴포넌트 기반의(Component Based) 양산 방식 • 인터페이스를 통한 계약(Contract) 방식
재사용성
• 현 시스템 종속적이 대부분이라 재사용성이 극히
낮음
• 인터페이스를 기반의 계약으로 재사용을 위한 방안
마련이 쉬움
시스템 통합
• 비슷한 컴포넌트가 시스템마다 존재, 통합의 어려
움
• 계약 기반으로 스그너처가 동일하면 다양한 형태로
재사용, 인터페이스 상속/재사용/확장 가능
아키텍처 • 단조로운 기능별 컴포넌트의 집합
• 장기적으로 SOA(Services Oriented Architecture) 로
서비스의 조합/분리/라우팅/서비스 가상화가 가능
시스템 운영
측면
• 컴포넌트간의 거미줄 같은 종속성으로 버그의 전
이/전파/증식이 매우 쉬움
• 컴포넌트간의 완벽한 종속성 분리로 다른 컴포넌트
로 인한 파생 버그가 적은편
통합 빌드
• 개별 빌드는 성공하나, 시스템이 커지고 업무가
복잡해 질수록 상호참조로 통합 빌드가 불가능
• 일관성 있는 통합 빌드가 가능
PresentationLayer
통합 IoC 컨테이너 프레임워크 개요 (1)
• 문제 : 오픈 소스의 IoC 프레임워크는 각각 기능의 지원, 사용 방식이 다릅니다.
만약, 아래와 같은 형태로 개발을 하게 된다면 IoC 컨테이너의 이중적인 처리 비용/리
소스/개발지식이 필요하게 되는 문제가 발생됩니다.
EnterpriseLibrary기반
DataAccessLayer
NHibernate기반
BusinessLayer
기타등등…
문제점
Enterprise Library NHibernate
IoC 컨테이너는 Unity
Application Block 기
반임
Lazy Loading, Proxy
개체가 필요한 경우
Castle/Spring.NET/Fi
nfu IoC 종속
Unity 는 내부의
Object Builder 기반
의 Dynamic Proxy
라이브러리 종속
Log4Net 종속
iBatis.NET
Castle Dynamic
Proxy 종속,
Log4Net 종속
Spring.NET Data
필요에 따라
NHibernate 필요
• IoC 프레임워크별 IoC 컨테이너, Dependency Injection 방식과 스키마가 틀림
Unity Application Block Castle Windsor
통합 IoC 컨테이너 프레임워크 개요 (2)
IFrameworkContainer
FrameworkContainerForUnity FrameworkContainerForCastle
ILifetimeMapping
LifetimeMappingForUnity LifetimeMappingForCastle
• IoC 컨테이너 통합
• Injection 통합
• 객체 수명주기 관리 통합
• 객체/스키마 통합
• 인터페이스 통합
LinFu, Spring IoC 등 지원 가능
Framework.Data.Transaction 개요
• 기존 트랜잭션 처리 방식의 문제점 (장점은 제외함)
문제점
SQL Transaction 비즈니스 레이어의 트랜잭션 처리가 곤란함
ADO.NET Transaction 로컬 트랜잭션만 지원
COM+ Transaction
• 2-Phase 의 분산 트랜잭션으로 동작 -> 트랜잭션 성능이 가장 느림
• 실제 컨설팅 수행 사례 - 256개의 인터페이스를 넘을 경우 알 수 없는 문제 발생(http://support.microsoft.com/kb/890425)
• 디버깅이 어렵다.
• Transaction Scope 는 클래스 단위로만 가능
• Microsoft 의 업데이터가 더 이상 없음
System.Transaction 트랜잭션 처리를 위한 코드가 증가하고 코드 블록 Depth 가 높아짐 (단, 로컬/분산 트랜잭션 지원)
• 해결 방안
AOP(Aspect-Oriented Programming) 또는 Interception 기법 by Runtime-Time IL(Intermidiate Language) 기법 By
Compile-TimeVirtual Method 기법 Interface 구현 기법 ContextBoundObject 기법
방식 Dynamic Proxy 방식 어셈블리 재작성 방식
구현 방식
• Virtual Method 를 동적 클래스
로 상속하여 Override 하는 방
법
• Interface 를 동적 클래스로
재 구현하는 방식
• .NET Remoting 프락시 생성
API 를 이용하는 방법
• IL 코드를 바이너리스 삽입하는
방식
단점
• 반드시 Virtual Method 로 선언
해야 함
• 반드시 Interface 를 구현한
클래스여야 함
• 클래스 범위에만 적용 가능
• Nested Call Method 는 적용할
수 없음
• 성능이 가장 느림
• 빌드 시 컴파일이 느림
• 특정 컨테이너에서 객체를 조작/꺼내는 방식 이여야 함
장점 • 구현 및 적용이 다소 쉬움
• 성능이 가장 빠름
• 객체를 new 키워드로 생성해도
적용 가능
Framework.Data.Transaction 구현
• Dynamic Proxy 기법 • 빌드시 IL 삽입 기법
컨테이너
or
프락시 생성 객체
container.Resolve<IBiz>().SaveData();
객체 또는 타입 메서드
객체의 타입 정보(Metadata) 를 꺼내어
Object Type
New Object
New Object
클래스와 메서드의 Stub 을 재구현 또는 Override
빌드
IL 명령어 삽입
Delivery
Method by
Delegate

More Related Content

Viewers also liked

Testing 엄준일의 slide_share
Testing 엄준일의 slide_shareTesting 엄준일의 slide_share
Testing 엄준일의 slide_share
준일 엄
 
CV
CVCV
Introducing symfony
Introducing symfonyIntroducing symfony
Introducing symfony
Wildan Maulana
 
2005 8th Grade Formal Dance
2005 8th Grade Formal Dance2005 8th Grade Formal Dance
2005 8th Grade Formal Dance
kfink
 
CHONDROSARCOMA
CHONDROSARCOMACHONDROSARCOMA
CHONDROSARCOMA
Bridget McClarey
 
Museum Quiz
Museum QuizMuseum Quiz
Museum Quiz
Scottish CILT
 
Tutorial 2 sobre LIM
Tutorial 2 sobre LIMTutorial 2 sobre LIM
Tutorial 2 sobre LIM
jserrano
 
Inside the mind of the chinese consumer
Inside the mind of the chinese consumerInside the mind of the chinese consumer
Inside the mind of the chinese consumer
Aditya Jaitly
 
Патріотичний захід
Патріотичний західПатріотичний захід
Патріотичний захід
Natalia Yushkova
 
La passiva
La passivaLa passiva
La passiva
Ainoaim
 
The silent way
The silent wayThe silent way
The silent way
Elif Güllübudak
 
Workplace Interiors TURN-KEY Project -Office Interior
Workplace Interiors TURN-KEY Project -Office InteriorWorkplace Interiors TURN-KEY Project -Office Interior
Workplace Interiors TURN-KEY Project -Office Interior
Deon Botha
 
Claudia
Claudia Claudia
Claudia
isarevi
 
Converting with custom transformer
Converting with custom transformerConverting with custom transformer
Converting with custom transformer
Hasan Syed
 

Viewers also liked (14)

Testing 엄준일의 slide_share
Testing 엄준일의 slide_shareTesting 엄준일의 slide_share
Testing 엄준일의 slide_share
 
CV
CVCV
CV
 
Introducing symfony
Introducing symfonyIntroducing symfony
Introducing symfony
 
2005 8th Grade Formal Dance
2005 8th Grade Formal Dance2005 8th Grade Formal Dance
2005 8th Grade Formal Dance
 
CHONDROSARCOMA
CHONDROSARCOMACHONDROSARCOMA
CHONDROSARCOMA
 
Museum Quiz
Museum QuizMuseum Quiz
Museum Quiz
 
Tutorial 2 sobre LIM
Tutorial 2 sobre LIMTutorial 2 sobre LIM
Tutorial 2 sobre LIM
 
Inside the mind of the chinese consumer
Inside the mind of the chinese consumerInside the mind of the chinese consumer
Inside the mind of the chinese consumer
 
Патріотичний захід
Патріотичний західПатріотичний захід
Патріотичний захід
 
La passiva
La passivaLa passiva
La passiva
 
The silent way
The silent wayThe silent way
The silent way
 
Workplace Interiors TURN-KEY Project -Office Interior
Workplace Interiors TURN-KEY Project -Office InteriorWorkplace Interiors TURN-KEY Project -Office Interior
Workplace Interiors TURN-KEY Project -Office Interior
 
Claudia
Claudia Claudia
Claudia
 
Converting with custom transformer
Converting with custom transformerConverting with custom transformer
Converting with custom transformer
 

Similar to Umc.Core Frameworks

오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
중선 곽
 
요즘 웹 배포
요즘 웹 배포요즘 웹 배포
요즘 웹 배포
명호 박
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
KwangSeob Jeong
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
Terry Cho
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservices
Seong-Bok Lee
 
2015 oce specification
2015 oce specification2015 oce specification
2015 oce specification
uEngine Solutions
 
Introduction to scalability
Introduction to scalabilityIntroduction to scalability
Introduction to scalabilitypolabear
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
Terry Cho
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
NAVER D2
 
Bounded Context
Bounded ContextBounded Context
Bounded Context
HyeonSeok Choi
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
uEngine Solutions
 
MSA 세미나.pptx
MSA 세미나.pptxMSA 세미나.pptx
MSA 세미나.pptx
ssuser89c688
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
SangIn Choung
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
Terry Cho
 
Scalable web architecture
Scalable web architectureScalable web architecture
Scalable web architecture
Steve Min
 
Better Scalable Flexible Soa Platform 0.8.0
Better Scalable Flexible Soa Platform 0.8.0Better Scalable Flexible Soa Platform 0.8.0
Better Scalable Flexible Soa Platform 0.8.0
Kidong Lee
 
Pg day seoul 2016 session_02_v1.0_ff
Pg day seoul 2016 session_02_v1.0_ffPg day seoul 2016 session_02_v1.0_ff
Pg day seoul 2016 session_02_v1.0_ff
PgDay.Seoul
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
NAVER D2
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
VMware Tanzu Korea
 

Similar to Umc.Core Frameworks (20)

오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
요즘 웹 배포
요즘 웹 배포요즘 웹 배포
요즘 웹 배포
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservices
 
2015 oce specification
2015 oce specification2015 oce specification
2015 oce specification
 
Introduction to scalability
Introduction to scalabilityIntroduction to scalability
Introduction to scalability
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
Bounded Context
Bounded ContextBounded Context
Bounded Context
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
 
MSA 세미나.pptx
MSA 세미나.pptxMSA 세미나.pptx
MSA 세미나.pptx
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
Scalable web architecture
Scalable web architectureScalable web architecture
Scalable web architecture
 
Better Scalable Flexible Soa Platform 0.8.0
Better Scalable Flexible Soa Platform 0.8.0Better Scalable Flexible Soa Platform 0.8.0
Better Scalable Flexible Soa Platform 0.8.0
 
Pg day seoul 2016 session_02_v1.0_ff
Pg day seoul 2016 session_02_v1.0_ffPg day seoul 2016 session_02_v1.0_ff
Pg day seoul 2016 session_02_v1.0_ff
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
 

More from 준일 엄

Understanding open api service 엄준일
Understanding open api service 엄준일Understanding open api service 엄준일
Understanding open api service 엄준일
준일 엄
 
배포 아키텍처_2011-09-16_엄준일
배포 아키텍처_2011-09-16_엄준일배포 아키텍처_2011-09-16_엄준일
배포 아키텍처_2011-09-16_엄준일
준일 엄
 
배포 프로세스_퀵스타트_20111027_엄준일
배포 프로세스_퀵스타트_20111027_엄준일배포 프로세스_퀵스타트_20111027_엄준일
배포 프로세스_퀵스타트_20111027_엄준일
준일 엄
 
.NET 장애 개선 로드맵
.NET 장애 개선 로드맵.NET 장애 개선 로드맵
.NET 장애 개선 로드맵준일 엄
 
.NET 장애 개선 로드맵
.NET 장애 개선 로드맵.NET 장애 개선 로드맵
.NET 장애 개선 로드맵준일 엄
 
Build Team Foundation Architecture
Build Team Foundation ArchitectureBuild Team Foundation Architecture
Build Team Foundation Architecture준일 엄
 
Understanding Open Api Service
Understanding Open Api ServiceUnderstanding Open Api Service
Understanding Open Api Service준일 엄
 
엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육준일 엄
 
컨설팅 프로세스
컨설팅 프로세스컨설팅 프로세스
컨설팅 프로세스준일 엄
 
Umc 와 함께하는 asp.net 해킹하기 (1)
Umc 와 함께하는 asp.net 해킹하기 (1)Umc 와 함께하는 asp.net 해킹하기 (1)
Umc 와 함께하는 asp.net 해킹하기 (1)준일 엄
 
개발자가 알아야 할 .NET Framework 하이라이트 2.0 에서 3.5 SP1 까지…
개발자가 알아야 할 .NET Framework 하이라이트 2.0 에서 3.5 SP1 까지… 개발자가 알아야 할 .NET Framework 하이라이트 2.0 에서 3.5 SP1 까지…
개발자가 알아야 할 .NET Framework 하이라이트 2.0 에서 3.5 SP1 까지… 준일 엄
 
Visual Studio 2008 SP1
Visual Studio 2008 SP1Visual Studio 2008 SP1
Visual Studio 2008 SP1준일 엄
 
Visual studio team system with agile tech days 2010
Visual studio team system with agile tech days 2010Visual studio team system with agile tech days 2010
Visual studio team system with agile tech days 2010준일 엄
 
Visual Studio 해부학
Visual Studio 해부학Visual Studio 해부학
Visual Studio 해부학준일 엄
 
[GAT/GAX] Guidance Automation Extensions
[GAT/GAX] Guidance Automation Extensions[GAT/GAX] Guidance Automation Extensions
[GAT/GAX] Guidance Automation Extensions준일 엄
 
[Visual studio camp #1] Enterprise Software Testing
[Visual studio camp #1] Enterprise Software Testing[Visual studio camp #1] Enterprise Software Testing
[Visual studio camp #1] Enterprise Software Testing준일 엄
 
Managed Extensibility Framework
Managed Extensibility FrameworkManaged Extensibility Framework
Managed Extensibility Framework준일 엄
 

More from 준일 엄 (17)

Understanding open api service 엄준일
Understanding open api service 엄준일Understanding open api service 엄준일
Understanding open api service 엄준일
 
배포 아키텍처_2011-09-16_엄준일
배포 아키텍처_2011-09-16_엄준일배포 아키텍처_2011-09-16_엄준일
배포 아키텍처_2011-09-16_엄준일
 
배포 프로세스_퀵스타트_20111027_엄준일
배포 프로세스_퀵스타트_20111027_엄준일배포 프로세스_퀵스타트_20111027_엄준일
배포 프로세스_퀵스타트_20111027_엄준일
 
.NET 장애 개선 로드맵
.NET 장애 개선 로드맵.NET 장애 개선 로드맵
.NET 장애 개선 로드맵
 
.NET 장애 개선 로드맵
.NET 장애 개선 로드맵.NET 장애 개선 로드맵
.NET 장애 개선 로드맵
 
Build Team Foundation Architecture
Build Team Foundation ArchitectureBuild Team Foundation Architecture
Build Team Foundation Architecture
 
Understanding Open Api Service
Understanding Open Api ServiceUnderstanding Open Api Service
Understanding Open Api Service
 
엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육
 
컨설팅 프로세스
컨설팅 프로세스컨설팅 프로세스
컨설팅 프로세스
 
Umc 와 함께하는 asp.net 해킹하기 (1)
Umc 와 함께하는 asp.net 해킹하기 (1)Umc 와 함께하는 asp.net 해킹하기 (1)
Umc 와 함께하는 asp.net 해킹하기 (1)
 
개발자가 알아야 할 .NET Framework 하이라이트 2.0 에서 3.5 SP1 까지…
개발자가 알아야 할 .NET Framework 하이라이트 2.0 에서 3.5 SP1 까지… 개발자가 알아야 할 .NET Framework 하이라이트 2.0 에서 3.5 SP1 까지…
개발자가 알아야 할 .NET Framework 하이라이트 2.0 에서 3.5 SP1 까지…
 
Visual Studio 2008 SP1
Visual Studio 2008 SP1Visual Studio 2008 SP1
Visual Studio 2008 SP1
 
Visual studio team system with agile tech days 2010
Visual studio team system with agile tech days 2010Visual studio team system with agile tech days 2010
Visual studio team system with agile tech days 2010
 
Visual Studio 해부학
Visual Studio 해부학Visual Studio 해부학
Visual Studio 해부학
 
[GAT/GAX] Guidance Automation Extensions
[GAT/GAX] Guidance Automation Extensions[GAT/GAX] Guidance Automation Extensions
[GAT/GAX] Guidance Automation Extensions
 
[Visual studio camp #1] Enterprise Software Testing
[Visual studio camp #1] Enterprise Software Testing[Visual studio camp #1] Enterprise Software Testing
[Visual studio camp #1] Enterprise Software Testing
 
Managed Extensibility Framework
Managed Extensibility FrameworkManaged Extensibility Framework
Managed Extensibility Framework
 

Umc.Core Frameworks

  • 2. Framework.IoC 개요 Component A Component B Component D Component C Component A Component B Component D Component C INTERFACE • 예전의 컴포넌트 기반의 개발 방법 • 인터페이스 기반의 계약 기반의 개발 방법 개발 방식 • 컴포넌트 기반의(Component Based) 양산 방식 • 인터페이스를 통한 계약(Contract) 방식 재사용성 • 현 시스템 종속적이 대부분이라 재사용성이 극히 낮음 • 인터페이스를 기반의 계약으로 재사용을 위한 방안 마련이 쉬움 시스템 통합 • 비슷한 컴포넌트가 시스템마다 존재, 통합의 어려 움 • 계약 기반으로 스그너처가 동일하면 다양한 형태로 재사용, 인터페이스 상속/재사용/확장 가능 아키텍처 • 단조로운 기능별 컴포넌트의 집합 • 장기적으로 SOA(Services Oriented Architecture) 로 서비스의 조합/분리/라우팅/서비스 가상화가 가능 시스템 운영 측면 • 컴포넌트간의 거미줄 같은 종속성으로 버그의 전 이/전파/증식이 매우 쉬움 • 컴포넌트간의 완벽한 종속성 분리로 다른 컴포넌트 로 인한 파생 버그가 적은편 통합 빌드 • 개별 빌드는 성공하나, 시스템이 커지고 업무가 복잡해 질수록 상호참조로 통합 빌드가 불가능 • 일관성 있는 통합 빌드가 가능
  • 3. PresentationLayer 통합 IoC 컨테이너 프레임워크 개요 (1) • 문제 : 오픈 소스의 IoC 프레임워크는 각각 기능의 지원, 사용 방식이 다릅니다. 만약, 아래와 같은 형태로 개발을 하게 된다면 IoC 컨테이너의 이중적인 처리 비용/리 소스/개발지식이 필요하게 되는 문제가 발생됩니다. EnterpriseLibrary기반 DataAccessLayer NHibernate기반 BusinessLayer 기타등등… 문제점 Enterprise Library NHibernate IoC 컨테이너는 Unity Application Block 기 반임 Lazy Loading, Proxy 개체가 필요한 경우 Castle/Spring.NET/Fi nfu IoC 종속 Unity 는 내부의 Object Builder 기반 의 Dynamic Proxy 라이브러리 종속 Log4Net 종속 iBatis.NET Castle Dynamic Proxy 종속, Log4Net 종속 Spring.NET Data 필요에 따라 NHibernate 필요 • IoC 프레임워크별 IoC 컨테이너, Dependency Injection 방식과 스키마가 틀림 Unity Application Block Castle Windsor
  • 4. 통합 IoC 컨테이너 프레임워크 개요 (2) IFrameworkContainer FrameworkContainerForUnity FrameworkContainerForCastle ILifetimeMapping LifetimeMappingForUnity LifetimeMappingForCastle • IoC 컨테이너 통합 • Injection 통합 • 객체 수명주기 관리 통합 • 객체/스키마 통합 • 인터페이스 통합 LinFu, Spring IoC 등 지원 가능
  • 5. Framework.Data.Transaction 개요 • 기존 트랜잭션 처리 방식의 문제점 (장점은 제외함) 문제점 SQL Transaction 비즈니스 레이어의 트랜잭션 처리가 곤란함 ADO.NET Transaction 로컬 트랜잭션만 지원 COM+ Transaction • 2-Phase 의 분산 트랜잭션으로 동작 -> 트랜잭션 성능이 가장 느림 • 실제 컨설팅 수행 사례 - 256개의 인터페이스를 넘을 경우 알 수 없는 문제 발생(http://support.microsoft.com/kb/890425) • 디버깅이 어렵다. • Transaction Scope 는 클래스 단위로만 가능 • Microsoft 의 업데이터가 더 이상 없음 System.Transaction 트랜잭션 처리를 위한 코드가 증가하고 코드 블록 Depth 가 높아짐 (단, 로컬/분산 트랜잭션 지원) • 해결 방안 AOP(Aspect-Oriented Programming) 또는 Interception 기법 by Runtime-Time IL(Intermidiate Language) 기법 By Compile-TimeVirtual Method 기법 Interface 구현 기법 ContextBoundObject 기법 방식 Dynamic Proxy 방식 어셈블리 재작성 방식 구현 방식 • Virtual Method 를 동적 클래스 로 상속하여 Override 하는 방 법 • Interface 를 동적 클래스로 재 구현하는 방식 • .NET Remoting 프락시 생성 API 를 이용하는 방법 • IL 코드를 바이너리스 삽입하는 방식 단점 • 반드시 Virtual Method 로 선언 해야 함 • 반드시 Interface 를 구현한 클래스여야 함 • 클래스 범위에만 적용 가능 • Nested Call Method 는 적용할 수 없음 • 성능이 가장 느림 • 빌드 시 컴파일이 느림 • 특정 컨테이너에서 객체를 조작/꺼내는 방식 이여야 함 장점 • 구현 및 적용이 다소 쉬움 • 성능이 가장 빠름 • 객체를 new 키워드로 생성해도 적용 가능
  • 6. Framework.Data.Transaction 구현 • Dynamic Proxy 기법 • 빌드시 IL 삽입 기법 컨테이너 or 프락시 생성 객체 container.Resolve<IBiz>().SaveData(); 객체 또는 타입 메서드 객체의 타입 정보(Metadata) 를 꺼내어 Object Type New Object New Object 클래스와 메서드의 Stub 을 재구현 또는 Override 빌드 IL 명령어 삽입 Delivery Method by Delegate