마이크로소프트는 새로운 데이터 접속 API를 개발자가 괴로울 정도로 자주 발표하는 것으로 유명하다. 이것은 애플리케이션 개발이 진화하기 때문이다. 새로운 애플리케이션들은 웹 애플리케이션 모델에 따라 느슨하게 연결되어 있으며, 많은 애플리케이션들이 XML을 사용하여 데이터를 주고 받는다. 웹 애플리케이션들은 HTTP를 사용하여 계층 간의 통신을 하기 때문에, 요청 간에 명시적으로 상태를 유지해야한다. 이와 같은 새로운 모델은 클라이언트/서버 시대의 특징이었던, 밀접하게 연결되어 있는 프로그래밍 형식과는 상당히 다른 것이다. 이전에는 프로그램이 실행되는 동안 계속 연결되어 있었기 때문에, 상태를 특별히 관리할 필요가 없었다.
ADO와 OLE DB를 포함한 기존의 데이터 접속 하부구조는 밀접하게 연결되어 있는 환경을 위하여 디자인되었다. Microsoft Data Access Component (MDAC) 서비스 스택은 인터넷 시대를 지원하도록 진화되었다.
Remote DAta Services(RDS)는 단절형 레코드셋을 도입하여, 개발자들은 웹 환경에서도 친숙한 ADO프로그래밍 모델을 계속 사용할 수 있었다. RDS에 HTTP 지원이 추가되어, 클라이언트 측 스크립트도 중간계층의 비즈니스 로직을 쉽게 호출하고 레코드셋을 조회할 수 있었다. 그러나, 연결혀 ㅇ프로그래밍 모델의 상당부분이 그대로 남아있으며, 개발자들은 특정 환경에서 사용할 수 있는 모델이 어떤 것인지를 파악하는데 많은 시간이 걸렸다.
개발자들은 ADO 데이터 모델을 XML의 새로운 환경에 적용하는 것이 어렵다는 것을 알게 되었다. ADO는 주로 관계형인 반면에 XML은 이질적이고 계층구조식이기 때문이다. XML은 자신만의 객체 모델인 XMLDOM과 XSL/T, X=Path, W3C Schema와 같은 다양한 서비스들을 제공하기 때문에, 개발자들은 MDAC 또는 MSXML 중 어떤 스택을 사용할 것인지 양자 택일을 해야만 한다. 서로 보완되는 방식으로 두 기술을 사용하고 싶을 지라도 그럴수 없다.
마이크로소프트가 .NET 프레임워크를 처음으로 소개했을 때, 데이터 접속에 대한 완전히 새로운 프로그래밍 모델이 필요하다는 것은 분명했다. .NET프레임워크의 강점은 통일성(uniformity)에 있다. 모든 컴포넌트는 공용 형 시스템, 디자인 패턴과 이름부여 규칙을 공유한다. 이밖에, .NET 프레임워크용 ADO를 다시 만드는 것은, 프레임워크의 디자인 원칙에도 위반될 뿐만 아니라, 비합리적이기도 하다. ADO 자신만의 특이함과 뉘앙스를 가지고 있는 성숙한 기술이다. 사실, 많은 개발자들은 원래 ADO의 버그였던 일부 기능에 의존해왔다. 어느 정도 비슷한 프로그래밍 모델을 다시 만드는 것은 거의 불가능한 작업이었을 것이다.
마이크로소프트가 취한 방법은 두 가지였다. 먼저, .NET COM 연동 서비스를 통해 .NET 프로그래머들이 ADO를 사용할 수 있게 하여, 개발자들이 기존과 동일한 객체 모델을 계속 사용할 수 있게 하는 것이다. 이 경우, 동일한 코드를 호출하게 된다. 두 번째 방법은, .NET 프레임워크만의 새로운 클래스들이 도입되었다. 이 클래스들을 ADO+라고 부른다. 여기에서는 이 새로운 클래스 프레임워크에 집중하지만, 먼저 ADO+ 내면의 디자인 목표에 대하여 살펴보자.
--- p.104~105
기존의 ASP(Active Server Page)는 웹 서버의 구성요소의 일부로 서버에서 스크립트를 실행할 수 있도록 고안된 기능이다. 하지만 ASP.NET는 이러한 부분적인 요소가 아니라 운영체제와 결합된 형태로 바뀌었다. 그렇다고 ASP.NET를 사용하기 위해서 모든 것을 바꿀 필요는 없다. ASP.NET는 이전 버전의 ASP를 완벽하게 지원한다. 언어 자체에 큰 변화는 느끼기 힘들다 하지만 ASP.NET은 단순히 ASP3.0의 후속 버전인 4.0으로만 보기에는 구조적인 차이가 많다. 우선 데이터의 사용을 위해 ADO+를 사용하며 시스템 라이브러리로 .NET을 사용한다. 그리고 사용되는 언어 또한 C#, VB.NET등을 새로운 기능의 언어를 사용한다.
성능면에서도 특정 모듈의 성능이 빨라진 것이 아니라 Cache를 사용하고 사용자 컨트롤을 사용하는 구조적인 환경의 변화로 성능이 향상되도록 만들어 졌다. 이제 웹 개발자들은 ASP.NET을 이용하여 불필요한 코딩의 굴레에서 벗어나 더 효율적인 작업에 시간을 투자할 수 있게 될 것이다.
--- p.527