SlideShare a Scribd company logo
Using AdoRepository

                                                    2009.01




Copyright 2009 Realweb co., Ltd. All rights reserved.
목차
  1. Using AdoRepository without IoC
       1.    Setup project
       2.    Setup configuration
       3.    Instancing IAdoRepository
       4.    Samples
  2. Using AdoRepository with IoC
       1.    Project 구성
       2.    IoC Configuration 구성
       3.    Ioc Testing
       4.    Instancing AdoRepository
       5.    Apply IoC to Web Application




2011-12-19                                  3
1. Using AdoRepository without IoC


2011-12-19            4
1. Using AdoRepository without IoC

    IoC 를 이용하면 시스템 확장성 및 유연성이 증대되지만, 환경설정하기 위해
    IoC에 대한 이해가 필수이다.
    모든 개발자가 IoC에 대한 이해와 적용을 하면 최상이지만, 중급 이상의 개발
    자 정도에서 다루는 것이 효과적이다.

    IoC를 이용하지 않고, 전통적 방식으로 사용하기 위한 절차
      관련 Library를 Referencing 한다.
      시스템에서 사용할 Repository를 제공하는 클래스를 구현한다.
      Repository 를 사용해 작업을 수행한다.




2011-12-19                    5
1.1 Setup Project without IoC

                         필요한 Library를 참조한다.


                         DAAB 사용 (필수)
                           Microsoft.Practices.EnterpriseLibrary.Common.dll
                           Microsoft.Practices.EnterpriseLibrary.Data.dll


                         AdoRepository 사용 (필수)
                           RCL.Data.dll
                         QueryStringProvider 사용 (Options)
                           RCL.Data.IniQueryStringProvider.dll
                           Nini.dll


                         Core Library (Options)
                            RCL.Core.dll


                         LINQ Extensions (Options)
                            RCL.LinqExtensions.dll




2011-12-19                        6
1.1 Setup configuration without IoC

  환경설정은 DAAB만 사용할 때와 동일하다. DAAB용 configuration section 을 등록하고 dataConfiguration element 를 추가하면 된다.




2011-12-19                                          7
1.3 Instancing IAdoRepository without IoC

                                DAAB의 DatabaseFactory와 같은 기능을 수행하는
                                AdoRepositoryFactory를 이용하여 Repository를 생성한다.


                                // Create Instance of IAdoRepository with default database name
                                AdoRepositoryFactory.CreateRepository();


                                // Create Instance of IAdoRepository with dbName
                                AdoRepositoryFactory.CreateRepository(string dbName);


                                환경설정에서 설정한 기본 DB에 대한 Repository 는 코드상에서
                                DefaultAdoRepository 이고,
                                명시적으로 Northwind DB를 사용하려면 NorthwindRepository 처럼 제공
                                하면 된다.




2011-12-19                  8
1.4 Samples without IoC

                                          CustOrderHist 라는 SP를 실행하고, Input이 아닌 Parameter 정보를
                                          반환한다.




                                             DB로부터 수행 결과를 IDataReader로 받고, 매핑을 통해
                                             OrderDetail 의 인스턴스를 만들어 반환한다.
                                             Paging 기능을 이용할 수 있다.




                               Procedure “CustOrderHist” 를 실행해서 결과를 페이징을 수행하여
                               원하는 구간의 결과셋만 DataTable의 레코드로 추가한다.




2011-12-19                     9
2.1 SetUp Project
      2.2 Setup Configuration (Application, IoC)
      2.3 IoC Testing
      2.4 Instancing AdoRepository with IoC
      2.5 Apply IoC to Web Application

      2. Using Adorepository with IoC


2011-12-19                             10
2. Using AdoRepository with IoC

    IoC를 이용해 다양한 로직이 추가된 IAdoRepository의 Concrete Class를
    사용할 수 있다.
    IoC 와 Decorator pattern을 이용해, 부가적인 기능을 AdoRepository에
    부여할 수 있고, 상황에 따라 코드 수정 없이 변경할 수 있다.
    IoC Container의 Component에 대한 Lifecycle을 조절 할 수 있다.




2011-12-19                   11
2.1 Setup Project with IoC

    1. 프로젝트를 생성한다.
    2. 필요 Library를 참조한다.
         DAAB 사용 (필수)
             Microsoft.Practices.EnterpriseLibrary.Common.dll
             Microsoft.Practices.EnterpriseLibrary.Data.dll


         IoC 사용 (필수)
             Castle.Core.dll
             Castle.MicroKernel.dll
             Castle.Windsor.dll


         AdoRepository 사용 (필수)
             RCL.Data.dll
         QueryStringProvider 사용 (Options)
             RCL.Data.IniQueryStringProvider.dll
             Nini.dll


         Core Library (Options)
             RCL.Core.dll


         LINQ Extensions (Options)
             RCL.LinqExtensions.dll




2011-12-19                                                      12
2.2 Setup configuration with IoC
   1. App.Config (or Web.Config) 의 ConfigSection 에 아래와 같이 DAAB와 Castle 관련 section을 추가한다.




    2. Castle 관련 환경설정 파일 위치를 지정한다.




2011-12-19                                                    13
2.2 Setup IoC configuration


                                   Northwind DB용 AdoRepository를 정의한다.
                                   QueryStringProvider를 사용한다면 parameters에 추가한다.




                                   Pubs DB용 AdoRepository를 정의한다.
                                   Database connectionString name을 명시적으로 parameter에 정의
                                   한다.




                                   Northwind DB용 IQueryStringProvider Component를 등록한다.
                                   실제 파일경로를 정의해 주어야 한다. (Options)




                                   Pubs DB용 IQueryStringProvider Component를 등록한다.
                                   실제 파일경로를 정의해 주어야 한다. (Options)



2011-12-19                  14
2.3 Testing IoC
  IoC 사용 시 주의할 점 중에 하나가 IoC를 초기화를 수행해야 한다는 점이다.
  Web Application 같은 경우 HttpApplication을 상속 받아 Application Start Event에서 IoC 를 초기화를 수행하면 된다.




                                                                              Application 시작시 IoC 환경설정 분석을 위해, 명시적으로
                                                                              초기화를 수행한다.


                                                                              단순히 IoC.Initialize() 만 호출해도 된다.




2011-12-19                                                  15
2.3 Testing IoC


                            수동으로 AdoRepository 를 등록해 본다.
                            아주 특별한 상황에서는 이와 같이 특정 Class를 사용할 때
                            도 있지만, 사용할 기회가 없을 듯…




                            IoC Container로부터 IAdoRepository 서비스를 제공하는
                            인스턴스를 반환받는다.


                            결과는 아래 ConsoleOutput에 있듯이
                            AdoRepositoryImpl 이다.




2011-12-19             16
2.4 Instancing AdoRepository with IoC




   환경설정에 정의된 기본 Database를 사용하는 DefaultAdoRepository는 IoC.TryResolve 를 수행해서 제공한다.
   특정 DB에 대해, 특정 Component를 사용하려면 IoC.Resolve<IAdoRepository>(string componentId) 를 사용하여 구현할 수 있다.




2011-12-19                                                17
2.5 Apply IoC to Web Application

    IoC 사용시에는 Web Application 시작 시에 사용자 코드가 실행되기 전에
    초기화가 되어 있어야 한다.
    초기화를 PageBase에서 수행하는 것은 의미 없다. Application 에서 한번만
    수행하면 되기 때문이다.

    IoCHttpApplication 상속 받기
      Application 시작 시 초기화여부를 검사하여 초기화를 한번만 수행한다. 구현이 쉽다.
      DNN 등 이미 다른 HttpApplication을 상속 받은 App는 적용할 수 없다.


    IoCHttpModule을 사용하기
      HttpModule에 등록하여, 모듈이 초기화 될 때 IoC 초기화를 수행한다.
      설정작업이 조금 어렵지만, 확장성이 뛰어나다.




2011-12-19                     18
2.5 Apply IoC to Web Application

 global.asax 에서 IoCHttpApplication을 상속 받기




 system.web/httModules에 IoCHttpModule 등록하기




2011-12-19                                   19
2. ICON SET
     Task     Groups   Computer            Server        Sub Process    Bullet




                Subprocess
                                                                                 1
       Task                       Groups   Groups                 End




2011-12-19                                          20
감사합니다



Copyright 2008 Realweb co., Ltd. All rights reserved.

More Related Content

PDF
[오픈소스컨설팅]Spring 3.1 Core
PDF
Выбор эффективной стратегии продвижения
PPT
Выбор эффективной стратегии продвижения
PDF
Оплата за качество в SEO
PPT
Horses By Alex Guilfoyle
PPT
Japanese test
PPT
Objectorientedprogrammingmodel1
PDF
Dictionary Of Pharmacoepidemiology
[오픈소스컨설팅]Spring 3.1 Core
Выбор эффективной стратегии продвижения
Выбор эффективной стратегии продвижения
Оплата за качество в SEO
Horses By Alex Guilfoyle
Japanese test
Objectorientedprogrammingmodel1
Dictionary Of Pharmacoepidemiology

Similar to Using AdoRepository (20)

PDF
miss_pattern_v2
PDF
Multithread pattern 소개
PDF
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
PDF
멀티티어 애플리케이션 개발과 배포
PPTX
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
PPTX
Linux reversing study_basic_3
 
PDF
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
PDF
[SSS 2nd] Cloud Service 개요 (SKT)
PDF
Spring Framework - Inversion of Control Container
PDF
Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기
PPTX
안드로이드 오픈소스 패턴 - 0.1
PDF
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
PDF
[오픈소스컨설팅]JBoss 5 Detail
PPT
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
PDF
델파이 소스코드의재발견
PPTX
120908 레거시코드활용전략 4장5장
PDF
Agados ABP(Application Building Process) Overview
PDF
GridServer 제품소개
PDF
S#03 김용현:VS2010으로 마이그레이션
PPTX
Cloud based NGS framework
miss_pattern_v2
Multithread pattern 소개
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
멀티티어 애플리케이션 개발과 배포
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
Linux reversing study_basic_3
 
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
[SSS 2nd] Cloud Service 개요 (SKT)
Spring Framework - Inversion of Control Container
Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기
안드로이드 오픈소스 패턴 - 0.1
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
[오픈소스컨설팅]JBoss 5 Detail
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
델파이 소스코드의재발견
120908 레거시코드활용전략 4장5장
Agados ABP(Application Building Process) Overview
GridServer 제품소개
S#03 김용현:VS2010으로 마이그레이션
Cloud based NGS framework
Ad

More from Sunghyouk Bae (15)

PDF
JUnit5 and TestContainers
PDF
Introduction of failsafe
PDF
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
PDF
Spring data requery
PDF
Requery overview
PDF
Kotlin @ Coupang Backend 2017
PDF
measure metrics
PDF
Alternatives of JPA/Hibernate
PPTX
Kotlin coroutines and spring framework
PPTX
Java naming strategy (자바 명명 전략)
PPTX
테스트자동화와 TDD
PPTX
SpringBoot with MyBatis, Flyway, QueryDSL
PPTX
JUnit & AssertJ
PPTX
좋은 개발자 되기
PDF
Strategy Maps
JUnit5 and TestContainers
Introduction of failsafe
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Spring data requery
Requery overview
Kotlin @ Coupang Backend 2017
measure metrics
Alternatives of JPA/Hibernate
Kotlin coroutines and spring framework
Java naming strategy (자바 명명 전략)
테스트자동화와 TDD
SpringBoot with MyBatis, Flyway, QueryDSL
JUnit & AssertJ
좋은 개발자 되기
Strategy Maps
Ad

Using AdoRepository

  • 1. Using AdoRepository 2009.01 Copyright 2009 Realweb co., Ltd. All rights reserved.
  • 2. 목차 1. Using AdoRepository without IoC 1. Setup project 2. Setup configuration 3. Instancing IAdoRepository 4. Samples 2. Using AdoRepository with IoC 1. Project 구성 2. IoC Configuration 구성 3. Ioc Testing 4. Instancing AdoRepository 5. Apply IoC to Web Application 2011-12-19 3
  • 3. 1. Using AdoRepository without IoC 2011-12-19 4
  • 4. 1. Using AdoRepository without IoC IoC 를 이용하면 시스템 확장성 및 유연성이 증대되지만, 환경설정하기 위해 IoC에 대한 이해가 필수이다. 모든 개발자가 IoC에 대한 이해와 적용을 하면 최상이지만, 중급 이상의 개발 자 정도에서 다루는 것이 효과적이다. IoC를 이용하지 않고, 전통적 방식으로 사용하기 위한 절차  관련 Library를 Referencing 한다.  시스템에서 사용할 Repository를 제공하는 클래스를 구현한다.  Repository 를 사용해 작업을 수행한다. 2011-12-19 5
  • 5. 1.1 Setup Project without IoC 필요한 Library를 참조한다. DAAB 사용 (필수) Microsoft.Practices.EnterpriseLibrary.Common.dll Microsoft.Practices.EnterpriseLibrary.Data.dll AdoRepository 사용 (필수) RCL.Data.dll QueryStringProvider 사용 (Options) RCL.Data.IniQueryStringProvider.dll Nini.dll Core Library (Options) RCL.Core.dll LINQ Extensions (Options) RCL.LinqExtensions.dll 2011-12-19 6
  • 6. 1.1 Setup configuration without IoC 환경설정은 DAAB만 사용할 때와 동일하다. DAAB용 configuration section 을 등록하고 dataConfiguration element 를 추가하면 된다. 2011-12-19 7
  • 7. 1.3 Instancing IAdoRepository without IoC DAAB의 DatabaseFactory와 같은 기능을 수행하는 AdoRepositoryFactory를 이용하여 Repository를 생성한다. // Create Instance of IAdoRepository with default database name AdoRepositoryFactory.CreateRepository(); // Create Instance of IAdoRepository with dbName AdoRepositoryFactory.CreateRepository(string dbName); 환경설정에서 설정한 기본 DB에 대한 Repository 는 코드상에서 DefaultAdoRepository 이고, 명시적으로 Northwind DB를 사용하려면 NorthwindRepository 처럼 제공 하면 된다. 2011-12-19 8
  • 8. 1.4 Samples without IoC CustOrderHist 라는 SP를 실행하고, Input이 아닌 Parameter 정보를 반환한다. DB로부터 수행 결과를 IDataReader로 받고, 매핑을 통해 OrderDetail 의 인스턴스를 만들어 반환한다. Paging 기능을 이용할 수 있다. Procedure “CustOrderHist” 를 실행해서 결과를 페이징을 수행하여 원하는 구간의 결과셋만 DataTable의 레코드로 추가한다. 2011-12-19 9
  • 9. 2.1 SetUp Project 2.2 Setup Configuration (Application, IoC) 2.3 IoC Testing 2.4 Instancing AdoRepository with IoC 2.5 Apply IoC to Web Application 2. Using Adorepository with IoC 2011-12-19 10
  • 10. 2. Using AdoRepository with IoC IoC를 이용해 다양한 로직이 추가된 IAdoRepository의 Concrete Class를 사용할 수 있다. IoC 와 Decorator pattern을 이용해, 부가적인 기능을 AdoRepository에 부여할 수 있고, 상황에 따라 코드 수정 없이 변경할 수 있다. IoC Container의 Component에 대한 Lifecycle을 조절 할 수 있다. 2011-12-19 11
  • 11. 2.1 Setup Project with IoC 1. 프로젝트를 생성한다. 2. 필요 Library를 참조한다. DAAB 사용 (필수) Microsoft.Practices.EnterpriseLibrary.Common.dll Microsoft.Practices.EnterpriseLibrary.Data.dll IoC 사용 (필수) Castle.Core.dll Castle.MicroKernel.dll Castle.Windsor.dll AdoRepository 사용 (필수) RCL.Data.dll QueryStringProvider 사용 (Options) RCL.Data.IniQueryStringProvider.dll Nini.dll Core Library (Options) RCL.Core.dll LINQ Extensions (Options) RCL.LinqExtensions.dll 2011-12-19 12
  • 12. 2.2 Setup configuration with IoC 1. App.Config (or Web.Config) 의 ConfigSection 에 아래와 같이 DAAB와 Castle 관련 section을 추가한다. 2. Castle 관련 환경설정 파일 위치를 지정한다. 2011-12-19 13
  • 13. 2.2 Setup IoC configuration Northwind DB용 AdoRepository를 정의한다. QueryStringProvider를 사용한다면 parameters에 추가한다. Pubs DB용 AdoRepository를 정의한다. Database connectionString name을 명시적으로 parameter에 정의 한다. Northwind DB용 IQueryStringProvider Component를 등록한다. 실제 파일경로를 정의해 주어야 한다. (Options) Pubs DB용 IQueryStringProvider Component를 등록한다. 실제 파일경로를 정의해 주어야 한다. (Options) 2011-12-19 14
  • 14. 2.3 Testing IoC IoC 사용 시 주의할 점 중에 하나가 IoC를 초기화를 수행해야 한다는 점이다. Web Application 같은 경우 HttpApplication을 상속 받아 Application Start Event에서 IoC 를 초기화를 수행하면 된다. Application 시작시 IoC 환경설정 분석을 위해, 명시적으로 초기화를 수행한다. 단순히 IoC.Initialize() 만 호출해도 된다. 2011-12-19 15
  • 15. 2.3 Testing IoC 수동으로 AdoRepository 를 등록해 본다. 아주 특별한 상황에서는 이와 같이 특정 Class를 사용할 때 도 있지만, 사용할 기회가 없을 듯… IoC Container로부터 IAdoRepository 서비스를 제공하는 인스턴스를 반환받는다. 결과는 아래 ConsoleOutput에 있듯이 AdoRepositoryImpl 이다. 2011-12-19 16
  • 16. 2.4 Instancing AdoRepository with IoC 환경설정에 정의된 기본 Database를 사용하는 DefaultAdoRepository는 IoC.TryResolve 를 수행해서 제공한다. 특정 DB에 대해, 특정 Component를 사용하려면 IoC.Resolve<IAdoRepository>(string componentId) 를 사용하여 구현할 수 있다. 2011-12-19 17
  • 17. 2.5 Apply IoC to Web Application IoC 사용시에는 Web Application 시작 시에 사용자 코드가 실행되기 전에 초기화가 되어 있어야 한다. 초기화를 PageBase에서 수행하는 것은 의미 없다. Application 에서 한번만 수행하면 되기 때문이다. IoCHttpApplication 상속 받기  Application 시작 시 초기화여부를 검사하여 초기화를 한번만 수행한다. 구현이 쉽다.  DNN 등 이미 다른 HttpApplication을 상속 받은 App는 적용할 수 없다. IoCHttpModule을 사용하기  HttpModule에 등록하여, 모듈이 초기화 될 때 IoC 초기화를 수행한다.  설정작업이 조금 어렵지만, 확장성이 뛰어나다. 2011-12-19 18
  • 18. 2.5 Apply IoC to Web Application global.asax 에서 IoCHttpApplication을 상속 받기 system.web/httModules에 IoCHttpModule 등록하기 2011-12-19 19
  • 19. 2. ICON SET Task Groups Computer Server Sub Process Bullet Subprocess 1 Task Groups Groups End 2011-12-19 20
  • 20. 감사합니다 Copyright 2008 Realweb co., Ltd. All rights reserved.