데이터 처리는 일반적으로 주로 연결 기반 2계층 모델에 의존했습니다. 데이터 처리에서 다중 계층 아키텍처를 점점 더 많이 사용함에 따라 프로그래머는 애플리케이션에 더 나은 확장성을 제공하기 위해 연결이 끊어진 접근 방법으로 전환하고 있습니다.
ADO.NET 구성 요소
데이터에 액세스하고 조작하기 위한 ADO.NET 두 가지 주요 구성 요소는 .NET Framework 데이터 공급자와 DataSet.NET Framework 데이터 공급자입니다.
.NET Framework 데이터 공급자
.NET Framework 데이터 공급자는 데이터 조작 및 데이터에 대한 빠르고 전달 전용 읽기 전용 액세스를 위해 명시적으로 설계된 구성 요소입니다. 개체는 Connection
데이터 원본에 대한 연결을 제공합니다. 이 Command
개체를 사용하면 데이터베이스 명령에 액세스하여 데이터를 반환하고, 데이터를 수정하고, 저장 프로시저를 실행하고, 매개 변수 정보를 보내거나 검색할 수 있습니다.
DataReader
은 데이터 원본에서 고성능의 데이터 스트림을 제공합니다. 마지막으로 DataAdapter
는 DataSet
개체와 데이터 원본 사이의 다리 역할을 제공합니다.
DataAdapter
는 Command
개체를 사용하여 SQL 명령을 데이터 원본에서 실행함으로써 데이터를 DataSet
에 로드하고, DataSet
에서 발생한 데이터 변경 사항들을 다시 데이터 원본에 반영합니다. 자세한 내용은 .NET Framework 데이터 공급자 및ADO.NET 데이터 검색 및 수정을 참조하세요.
The DataSet
ADO.NET DataSet
데이터 원본과 관계없이 데이터 액세스를 위해 명시적으로 설계되었습니다. 따라서 여러 데이터 원본과 다른 데이터 원본과 함께 사용하거나, XML 데이터와 함께 사용하거나, 애플리케이션에 대한 로컬 데이터를 관리하는 데 사용할 수 있습니다. 여기에는 DataSet
데이터의 행과 열로 구성된 하나 이상의 DataTable 개체 컬렉션과 개체의 데이터에 대한 DataTable
기본 키, 외래 키, 제약 조건 및 관계 정보도 포함됩니다. 자세한 내용은 DataSets, DataTables 및 DataViews를 참조하세요.
다음 다이어그램에서는 .NET Framework 데이터 공급자와 DataSet
.NET Framework 데이터 공급자 간의 관계를 보여 줍니다.
ADO.NET 아키텍처
DataReader 또는 DataSet 선택
애플리케이션에서 DataReader
(또는 DataReader를 사용하여 데이터 검색)와 DataSet
(DataSets, DataTables 및 DataViews 참조) 중 무엇을 사용할지 결정할 때, 애플리케이션에 필요한 기능을 고려하십시오. 다음을 수행하려면 DataSet
을 사용하세요.
데이터를 조작할 수 있도록 애플리케이션에서 로컬로 캐시합니다. 쿼리
DataReader
의 결과만 읽어야 하는 경우 더 나은 선택입니다.계층 간 또는 XML 웹 서비스의 원격 데이터입니다.
Windows Forms 컨트롤에 바인딩하거나 여러 원본의 데이터 결합 및 관련과 같이 동적으로 데이터와 상호 작용합니다.
데이터 원본에 대한 열린 연결을 요구하지 않고 데이터에 대해 광범위한 처리를 수행하여 다른 클라이언트에서 사용할 연결을 해제합니다.
제공된 DataSet
기능이 필요하지 않은 경우 데이터를 정방향 전용 읽기 전용 방식으로 반환하는 방법을 사용하여 DataReader
애플리케이션의 성능을 향상시킬 수 있습니다.
DataAdapter
는 DataReader
를 사용하여 DataSet
의 내용을 채웁니다(DataAdapter에서 데이터 세트 채우기 참조). 하지만, DataReader
를 사용하면, DataSet
가 소비하는 메모리를 절약하고, DataSet
의 내용을 생성하고 채우는 데 필요한 처리를 피할 수 있으므로 성능을 향상시킬 수 있습니다.
LINQ to DataSet (LINQ를 사용하여 DataSet과 연결)
LINQ to DataSet은 DataSet 개체에 캐시된 데이터에 대한 쿼리 기능 및 컴파일 시간 형식 검사를 제공합니다. C# 또는 Visual Basic과 같은 .NET Framework 개발 언어 중 하나로 쿼리를 작성할 수 있습니다. 자세한 내용은 LINQ to DataSet을 참조하세요.
LINQ to SQL
LINQ to SQL은 중간 개념적 모델을 사용하지 않고 관계형 데이터베이스의 데이터 구조에 매핑되는 개체 모델에 대한 쿼리를 지원합니다. 각 테이블은 별도의 클래스로 표현되어 개체 모델을 관계형 데이터베이스 스키마와 긴밀하게 결합합니다. LINQ to SQL은 개체 모델의 언어 통합 쿼리를 Transact-SQL 변환하고 실행을 위해 데이터베이스로 보냅니다. 데이터베이스가 결과를 반환하면 LINQ to SQL은 결과를 개체로 다시 변환합니다. 자세한 내용은 LINQ to SQL을 참조하세요.
ADO.NET Entity Framework
ADO.NET Entity Framework는 개발자가 관계형 스토리지 스키마에 대해 직접 프로그래밍하는 대신 개념적 애플리케이션 모델에 대해 프로그래밍하여 데이터 액세스 애플리케이션을 만들 수 있도록 설계되었습니다. 목표는 데이터 지향 애플리케이션에 필요한 코드 및 유지 관리의 양을 줄이는 것입니다. 자세한 내용은 ADO.NET Entity Framework를 참조하세요.
WCF Data Services
WCF Data Services는 웹 또는 인트라넷에 데이터 서비스를 배포하는 데 사용됩니다. 데이터는 엔터티 데이터 모델의 사양에 따라 엔터티 및 관계로 구조화됩니다. 이 모델에 배포된 데이터는 표준 HTTP 프로토콜을 통해 주소 지정이 가능합니다. 자세한 내용은 WCF Data Services 4.5를 참조하세요.
XML 및 ADO.NET
ADO.NET XML의 기능을 활용하여 데이터에 대한 연결이 끊긴 액세스를 제공합니다. ADO.NET .NET Framework의 XML 클래스와 함께 디자인되었습니다. 둘 다 단일 아키텍처의 구성 요소입니다.
ADO.NET 및 XML 클래스는 .NET Framework에서 DataSet
개체에 수렴됩니다. 파일 DataSet
이든 XML 스트림이든 XML 원본의 데이터로 채울 수 있습니다. 데이터 DataSet
원본 DataSet
에 관계없이 해당 스키마를 XSD(XML 스키마 정의 언어) 스키마로 포함하는 W3C(World-Wide Web Consortium) 규격 XML로 작성할 수 있습니다.
DataSet
의 네이티브 serialization 형식은 XML이기 때문에 계층 간에 데이터를 이동하는 데 훌륭한 매체이며, DataSet
은 XML 웹 서비스로 데이터와 스키마 컨텍스트를 전송하고 수신하는 데 최적의 선택입니다. 자세한 내용은 XML 문서 및 데이터를 참조하세요.