2008-10-27 4 views
23

방금 ​​프로젝트를 시작한이 프로젝트는 개인적인 것이므로 엔터프라이즈 라이브러리를 사용하면 어떤 이점이 있는지 궁금합니다. 우리는 사무실에서 여러 프로젝트에 대해 버전 2를 사용하지만, 특히 데이터베이스 구성 요소의 이점에 대해 (우수 사례 제외) 확실하지 않습니다. 어떤 충고? 감사합니다엔터프라이즈 라이브러리를 사용할 때의 장점과 단점

답변

13

데이터베이스 응용 프로그램 블록의 주된 장점은 데이터베이스와 관련없는 코드를 쉽게 생성 할 수 있다는 것입니다. 개발자는 SqlConnection, SqlCommand 등이 아닌 일반적인 데이터베이스 및 DbCommand 개체와 주로 상호 작용합니다. 따라서 다른 데이터베이스 (예 : Oracle)로 전환하는 것이 더 적합합니다. 비즈니스 요구 사항에 따라 이는 분명히 이점이 될 수 있습니다. EntLib은 쿼리 매개 변수에 DbParameter를 사용하는 방향으로 개발자를 부드럽게 자극하여 SQL 주입 공격의 위험을 줄입니다.

다른 포스터가 언급됨에 따라 데이터 응용 프로그램 블록은 직선 ADO.NET 클래스보다 다소 높은 수준이므로 동일한 작업을 수행하는 데 필요한 코드 줄 수를 줄이는 경향이 있습니다.

필자의 견해로는 데이터, 예외 및 로깅 블록이 가장 유용합니다. Exception과 Logging을 함께 사용하면 여러 장소와 다양한 형식으로 예외를 기록하는 것이 매우 쉽습니다. 예를 들어 스택 추적을 포함하여 전체 예외 로그 항목을 Windows 이벤트 로그에 기록하여 문제를 진단하기가 비교적 쉽습니다.

EntLib의 한 가지 단점은 일부 앱 블록이 상당히 많은 로직을 구성 파일에 배치한다는 것입니다. 그래서 당신의 논리는 더욱 확산됩니다. 그 중 일부는 코드에, 일부는 설정 파일에 있습니다. 단점은 구성을 사후 구축 및 사후 구축에서도 수정할 수 있다는 것입니다.

+0

호기심에서 벗어나 예외 블록을 실행하는 데 얼마나 걸렸습니까? MS의 오래된 의사는 '반나절'의 학습 곡선을 말했고, 당신의 경험은 어떠 했습니까? –

+0

예외 블록을 설정하는 방법에 대한 기본적인 이해가 목표 인 경우 M $의 주장은 무리가 아닙니다 (구성 콘솔은 여기에서 매우 중요합니다). 이 앱 블록 (실제로 모든 앱 블록)을 사용하면 코드를 변경해야하므로 YMMV가됩니다. –

+0

데이터 블록을 통해 다른 제공 업체를 사용할 수 있습니까 (예 :MySql) 또는 프레임 워크 (Oracle/SQL Server)에 포함되어있는 것만? –

12

우리 팀은 약 2 년 전에 Microsoft Patterns and Practices Enterprise Library에 대한 평가를 수행했습니다. 우리 제품 라인의 재 설계의 일환입니다. 우리가 사용한 유일한 부분은 데이터베이스 블록이었습니다. 우리는 단위 테스트를 위해 DAL을 조롱 할 수 있도록 인스턴스화 할 수있는 클래스의 일부를 래핑했습니다. Microsoft 코드 블록은 데이터베이스 작업을위한 정적 호출을 사용했습니다. Microsoft에서 LINQtoSQL 또는 Entity Framework의 모든 요소를 ​​db 블록에 통합했는지 확신 할 수 없습니다. 그 중 하나를 활용하지 않았다면 db 블록을 사용하는 것을 주저 할 것입니다.

로깅이 진행되는 동안 우리는 Log4Net이 Microsoft 로깅보다 강력하고 유연한 솔루션이라는 것을 알았습니다. 우리는 로깅 필요성을 위해 그걸로갔습니다.

예외 처리를 위해 우리 자신을 굴렸다. Microsoft 코드는 처리하려는 원격 사례를 처리하지 못했으며 제 3 자 로깅 프레임 워크를 사용했기 때문에 자체 예외 라이브러리를 작성하고이를 통합하는 것이 더 적합했습니다. 나는 로깅 프레임 워크를 예외 프레임 워크에 통합하는 것이 어느 정도 유용하다는 것을 발견했다. Log4Net에 대한 경량 래퍼 클래스를 작성하여 예외 로깅에서 호출하여 Log4Net에 대한 종속성을 도입하지 않았습니다.

3

데이터 응용 프로그램 블록에 대해 Paul이 언급 한 항목 이외에 필자도 내 경험에 따르면 데이터 응용 프로그램 블록은 필요한 데이터베이스 코드를 작성하는 데 훨씬 빠른 방법을 제공합니다. . 일관된 모양/느낌과 개발 속도로 사용합니다.

+0

MS가 ADO.NET을 디자인하고 그 위에 App Data Blocks를 디자인하고 "이것을 사용하십시오"라고 말하면서 이것은 성공적인 프로젝트가 ADO.NET이 너무 복잡하다는 것을 말하지 않고하는 것입니다. – ChadD

관련 문제