블로그 이미지
다비도프

만나고, 고백하고, 가슴 떨리고, 설레이고, 웃고, 사랑하고, 키스하고, 함께하고..

Rss feed Tistory
STUDY/DAAB 2007. 4. 26. 12:15

[Study] DAAB(Data Access Application Block) in Enterprise Library 2.0 - (2)

[출처 : http://www.gosu.net/GosuWeb/Article-detail.aspx?ArticleCode=1159]

[DAAB 사용법1(사용을 위한 준비 작업)]

Enterprise Library 포함된 DAAB 이전의 DAAB에서는 static 메서드를 사용해서 액세스하였다. Enterprise Library 포함된 DAAB [Plugin] 패턴을 사용한다. 플러그인은 구현 객체에 대한 의존성 정보를 설정 파일에 담아 실시간으로 관리함으로써, 어플리케이션을 구성하는 각각의 컴포넌트들이 구체적인 구현 클래스를 모르고도 상호작용 있도록 한다.

DAAB 사용하는 단계는 다음과 같다.

가장 먼저 DAAB 사용할 Data ProviderDB 연결 문자열 등의 정보를 web.config 등의 구성 정보 파일에 설정한다.

구성 정보를 구성 파일에 저장하기 위해서는 되도록이면 프레임워크에서 제공되고 있는Configuration Console 이용한다.

물론 구성 파일에 이러한 정보를 저장할 필요없이 사용할 수도 있다.


[Configuration Console 이용한 구성 정보 설정]

아래 그림은 Configuration Colsole 실행시킨 화면이다.

화면에서 New Application 선택한다.

 

 

어플리케이션을 생성한 뒤에 Data Access Application Block 선택한다.

그런 다음 Default databaseInstance 설정한다. Default databaseInstance 인스턴스 이름없이 DAAB DatabaseFactory.CreateDatabase 호출했을 사용되는 인스턴스 정보를 담게 된다.

DAAB DatabaseFactory.CreateDatabase 메서드를 사용해서 Database 생성할 인자로 인스턴스 이름을 주게 된다.

Configuration Tool 이용해서 Default database Instance, Named Instance( 그림에서는 Northwind, Orders) 구성할 있고 인스턴스 별로 별도의 DB 연결 문자열, ADO.NET Data Provider 설정할 있다.

구성 정보만으로 Application Code  수정없이 DB 연결과 관련된 정보를 변경할 있음으로해서 DataBase 독립적인 코딩이 가능하다.

아래 그림은 Default database Instance, Named Instance(Northwind, Orders) 설정한 예이다.

 

왼쪽 트리에서 Data Access Application Block 선택하면 오른쪽 윈도우에서 DefaultDatabase Name에서 Default Database Instance 이름을 설정할 있다.

그럼 각각의 인스턴스에 대한 구체적인 설정을 살펴보겠다.

Default Database Instance 경우(다른 Named Instance 같다)  왼쪽에서 해당 인스턴스를 선택하면 오른쪽 창에서 해당 인스턴스의 Data Provider 선택할 있으며 해당 DB DB 연결 문자열을 구성하는 각각의 값들을 설정할 있다. 경우 해당 값이 없으면 새로이 추가하면 된다.

User ID Password 디폴트로 없는 상태이므로 새롭게 추가하여 해당 값을 설정하면 된다.

설정이 끝나면 Save Application 메뉴를 통해 해당 구성 정보를 저장할 구성 파일을 지정한다.

 

 

아래 그림은 3개의 인스턴스를 설정한 Configuration Tool 모습과 실제 구성 파일에 저장된 내용을 보여주고 있다.

 

<configuration>

  <configSections>

    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

    <section name="oracleConnectionSettings" type="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.Configuration.OracleConnectionSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

  </configSections>

  <dataConfiguration defaultDatabase="Northwind" />

  <oracleConnectionSettings>

    <add name="Orders">

      <packages>

        <add prefix="OP2" name="Oracle Package2" />

        <add prefix="OP1" name="Oracle Package1" />

      </packages>

    </add>

  </oracleConnectionSettings>

  <connectionStrings>

    <add name="Default Database Instance" connectionString="Database=Database;Server=(local)\SQLEXPRESS;Integrated Security=SSPI;"

      providerName="System.Data.SqlClient"/>

    <add name="Orders" connectionString="Data Source=Northwind;Server=(local);User ID=scott;Password=tiger;"

      providerName="System.Data.OracleClient" />

    <add name="Northwind" connectionString="Database=Northwind;Server=abc;User ID=sa;Password=password;"

      providerName="System.Data.SqlClient"/>

  </connectionStrings>

</configuration>

 

위의 구성 정보 OracleConnectionSettings내에 있는 Package 부분이 필요한 이유는 다음과 같다. 오라클의 Stored Procedure 패키지내에 그룹핑되어 있는 경우 이를 호출하기 위해서는 Stored Procedure 이름 앞에 패키지 이름을 붙여 주어야 한다.

그러나 이렇게 경우 개발되는 코드들은 오라클이라고 하는DB 종속적이게 된다. DAAB 이러한 패키지 이름과 Prefix 위와 같이 구성 정보에 관리하여 개발자가 작성하는 코드는 이러한 패키지명에 신경쓰지 않고 코딩할 있게 함으로써 결과적으로 개발되는 코드가 DB 독립적이게 한다.

위와 같이 패키지명과 Prefix 구성 정보에 담게 되면DAAB 알아서 해당 Stored Procedure 호출할 내부적으로 이를 처리해주므로 개발자는 다른DB 같은 방식으로 Stored Procedure 호출하면 된다. 개발자는 단지 위의 구성 정보 매핑에 있는데로 해당Stored Procedure 이름을 해당 Prefix 시작하게 하면 된다.

위의 구성 정보에서 prefix “*” 사용하게 되면  모든 Stored Procedure 호출시에 관련된 패키지명이 붙게 된다.

이러한 패키지와 Prefix와의 매핑은 오라클 DB에만 한정되는 얘기이다.

 

Configuration Tool 만들어주는 구성 정보에 대한 자세한 설명은 Enterprise Library 설명서내 Data Access Application Block 부분 Source Schema for the Data Access Application Block 부분을 참고하기 바란다.

 

이와 같이 DAAB 사용하기 위한 구성 정보를 일일이 구성 파일을 열어 설정할 필요없이 GUI 화면을 통해 쉽게 설정할 있게 하는Configuration Tool 제공하고 있다. 주의할 것은 각각의 Key/Value 값들은 유효성 검사를 수행하지는 않는다. 단지 키와 값이 같이 존재하는지 여부만 체크한다는 사실을 주의해야 한다.

결국 사용자의 책임하에 /값을 사용해서 구성 정보를 설정해야 한다.

 

관련DLL 참조 추가 Using Namespace 설정

DAAB 사용하기 위해서는 관련DLL 우선 참조 추가해야 한다.

 

 

그림처럼 Microsoft.Practices.EnterpriseLibrary.Data.dll, Microsoft.Practices.EnterpriseLibrary.Common.dll, Microsoft.Practices.EnterpriseLibrary.ObjectBuilder.dll 참조 추가한다.

 

그리고 아래와 같이 개발할 코드이 상위에 using 문을 추가한다.(C# 경우)

using Microsoft.Practices.EnterpriseLibrary.Data;

using System.Data;

,
STUDY/DAAB 2007. 4. 26. 12:09

[Study] DAAB(Data Access Application Block) in Enterprise Library 2.0 - (1)

[출처 : http://www.gosu.net/GosuWeb/Article-detail.aspx?ArticleCode=1158]

개요

DAAB(Data Access Application Block) in Enterprise Library for .NET 2.0DAC(Data Access Component) 레이어에서의 반복적인 ADO.NET 코딩량을 감소시켜주며 DB 커넥션 관리와 같은 사용자가 실수하기 쉬운 부분을 관리해주는 DAAB(Data Access Application Block) Enterprise Library 통합된 버전이다. 또한 Enterprise Library 1.x 있던 DAAB ADO.NET 2.0 변화된 기능에 맞게 수정한 것이DAAB(Data Access Application Block)   in Enterprise Library for .NET 2.0이다.

DAAB(Data Access Application Block)  in Enterprise Library for .NET 2.0 .NET Framework 2.0 기반의 프로젝트라면 어플리케이션, 윈도우 어플리케이션, 스마트 클라이언트 어플리케이션에 관계없이 사용 가능하다.

DAAB(Data Access Application Block)  in Enterprise Library for .NET 2.0 사용을 통해 DAC(Data Access Component) 레이어에서의 반복적인 ADO.NET 코딩량을 감소시킬 있으며 DB 커넥션 관리와 같은 사용자가 실수하기 쉬운 부분의 실수를 최소화할 있다.

DAAB(Data Access Application Block)  in Enterprise Library for .NET 2.0 .NET Framework 2.0 기반의 프로젝트에서 DAC(Data Access Component) 레이어의 Data Framework 역할을 하게 된다.


아티클은 엔터프라이즈 라이브러리 데이터 액세스 응용 프로그램 블록의 개요를 제공한다. 이것은 .NET기반 응용 프로그램들의 일반적인 데이터 액세스 기능 개발을 단순화시켜주는 재사용 가능하고 확장 가능한 소스 코드 기반의 지침이다.

DAAB 소개

엔터프라이즈 라이브러리 데이터 액세스 응용 프로그램 블록, 버전2.0 일상적인 데이터 액세스 기능을 구현하는 개발 작업들을 단순화 했다. 응용 프로그램들은 응용 프로그램 블록을 화면에 표시하기 위해 데이터를 읽고 , 응용 프로그램 계층 데이터 전달을 위해 데이터 가져오고 , 그리고 변경된 데이터를 데이터베이스에 다시 보내는 것과 같은 다양한 상황들 안에서 사용할 있다. 응용 프로그램 블록은 저장프로시저와 인라인SQL 모두에 대한 지원을 포함하고 있으며, 연결들을 관리하는 것이나 파라미터들을 만들고 캐싱하는 것과 같은 일상적인 작업들은 응용 프로그램 블록의 메소드 안에 내장되어 있다. 다시 말해, 데이터 액세스 응용 프로그램 블록은 ADO.NET에서 가장 자주 사용되는 기능들에 대한 액세스를 제공한다.

응용 프로그램 블록은 Microsoft SQL Server, Oracle, 그리고 DB2 포함한 다수의 데이터베이스 서버들에 동일한 코드를 사용할 있게 해줌으로써 이식 가능한 응용 프로그램 코드 개발을 용이하게 한다. 이것은 공통된 인터페이스를 정의하고 데이터 액세스 메소드들을 위한 대부분의 구현을 제공하는 추상화된 기반 클래스를 사용함으로써 가능하다. 예를 들어, SQL Server 종류의 데이터베이스를 위해 작성된 응용 프로그램들은 Oracle 같이 다른 종류의 데이터베이스를 위해 작성된 응용 프로그램과 같아 보이게 된다. 데이터 액세스 응용 프로그램 블록을 사용하고 가이드의 지침들을 따른다면, 코드들은 대부분 이식 가능한 상태로 유지된다.


데이터 액세스 응용 프로그램 블록은 다음과 같은 기능을 갖고 있다.

  • 표준화된 작업들을 수행하는 반복적인 코드를 작성할 필요를 줄인다
  • 응용 프로그램 안이나 기업 내에서 일관된 데이터 액세스 관행들을 유지하는데 도움을 준다.
  • 물리적인 데이터베이스 대상을 변경하는데 따르는 어려움들을 줄인다.
  • 개발자들이 다른 종류의 데이터베이스들에 대해 다른 프로그래밍 모델을 학습해야 하는 부담을 줄인다.
  • 다른 종류의 데이터베이스에 응용 프로그램을 이식할 , 작성해야 하는 코드의 양을 줄인다.

데이터 액세스 응용 프로그램 블록은 가장 일상적인 데이터 액세스 작업들에 대한 구현을 제공함으로써 기능들을 제공한다. 개발자들은 단지 다음과 같이 하면 된다.

  •  데이터베이스 개체를 생성한다.
  • 만약 필요한 경우, 명령에 대한 파라미터들을 제공한다.
  • 적합한 메소드를 호출한다.

이들 메소드들은 성능을 위해 최적화 되어 있다. 그것들은 이식 가능하다. 데이터 액세스 응용 프로그램 블록은 SQL Server, DB2, 그리고 Oracle 데이터베이스들에 투명하게 동작한다.


아래 그림은 DAAB 클래스를 나타내고 있다.

 

 

변화된내용(Enterprise Library 1.x -> 2.0)

DAAB(Data Access Application Block)  in Enterprise Library for .NET 2.0 Enterprise Library for .NET 1.x 비해 변화된 내용은 다음과 같다.

.NET Framework 2.0 새로이 추가된 System.Data.Common 네임스페이스로 동일한 역할을 하는DBCommandWrapper 없어졌다.

SQL Server 오라클 데이터 베이스 이외의 DB 지원하기 위해GenericDatabase 추가되었다.

,
TOTAL TODAY