Tim Berners-Lee에 의해서 HTTP를 통한 전송이 성공하고 나서 웹은 급격하게 성장을 이루었습니다. 시스템에 상관없이 데이터를 전송하고 표현하기 위한 시도들이 이루어졌고, 그 결과 HTML과 XML이 태어나게 됩니다. 이 후로도 급격한 성장을 이루어 웹을 통해 모든 데이터가 소통되고 수많은 웹어플리케이션이 개발되면서 기업들은 환경에 구애 받지 않는 통합된 웹 개발 환경을 가지고 쉽게 설계하고, 개발하고, 서비스할 수 있는 것을 원하기 시작했습니다.
이런 결과로서 많은 소프트웨어 벤더들인 이러한 시도에 참여하게 되었고, ASP.NET도 그 결과물 중에 하나입니다. .NET로 통합된 환경은 3.5버전까지 출시되기에 이르렀고 통합된 막강한 개발환경으로 효율적이고 생산적인 개발을 지원하는 대표적인 IDE/언어/Framework로 자리매김하고있습니다.
처음 HTML만으로 이루어진 정적인 페이지를 서비스하다가 동적인 서비스를 할 수 있는 기술이 소개되었습니다.
ASP가 공개되었을때, 수많은 개발자에게 있어서는 완벽한 언어였습니다. 기존에 자신이 알고있던 개발 언어의 문법으로 추가적인 웹에 대한 이해만 있다면 웹 개발을 할 수 있었기 때문입니다. 그리고 각종 확장 기능을 ASP에서 사용할 수 있었기 때문에, 확장성 까지 갖춘 최고의 언어였습니다.
하지만 곧 많은 단점들이 드러나기 시작합니다. 일단 모든 변수가 variant타입으로서 많은 메모리의 차지는 물론 속도의 저하까지 가져왔으며, 변수의 타입은 실제로 동작하기 이전까지 개발자가 추측은 할 수 있었지만 정확하게 알 수 없었습니다. 물론 수많은 ASP개발 환경이 Text-Editor일 수 밖에 없었던 이유는 역시 뛰어난 확장성과 알수 없는 변수 타입으로 실제 해석되기 전까지 정확한 변수 사용인지, 정확한 컴포넌트 사용인지 개발 툴에서 검사하기 힘들다는 점입니다.
이러한 단점을 개선하고자 ASP.NET는 ASP로부터 많은 것을 버리고 새로운 것을 받아 들였습니다. 비록, ASP.NET는 개발자에게 새로운 환경, 문법, 기술 등을 익히도록 강요하였지만, 그를 만회하고도 남는 엄청난 개발 효율성으로 많은 사랑을 받고 있습니다. 기존의 스크립트 방식에서 컴파일 방식으로 변화되어 속도에서또한 월등합니다.
.NET Framework는 수많은 클래스 라이브러리를 지원합니다. 체계적으로 namespace에 의해 체계하된 클래스 라이브러리를 언제든지 사용할 수 있습니다.
Interprete 언어가 Compile언어보다 느리다는 점은 이미 널리 알려진 사실입니다. 모든 .NET 언어와 마찬가지로 ASP.NET도 컴파일되어 작동합니다. 모든 .NET언어는 먼저 언어중립적 코드인 중간언어로 바뀝니다.(IL : Intermediate Language) 이 IL은 어셈블리 파일로서 페이지가 호출되고 실행되기 직전에 JIT(Just-in-Time) Compiler에 의해 저레벨 기계어 코드로 바뀝니다. 어셈블리 파일인 IL은 .NET Framework가 실행되는 모든 환경으로 배포되어 사용될 수 있습니다.
하지만 매번 사용자의 실행 요청마다 IL로 변환하고, 또다시 기계어 코드로 변환하는 것은 좋지 않은 현상입니다. 다행스럽게도, 첫번째 수행 요청이 있을 때, IL로 해석되고, 기계어 코드 역시 Framework의 Temporary폴더에 저장되고, 또한 캐시되어 실행 속도를 향상시킵니다.
IL 코드를 확인하기 위해서는 IL Disassembler를 실행하여 DLL이나 EXE파일을 선택하시면 됩니다. 시작->VisualStudio 폴더-> Visual Studio 200X Command Prompt를 실행하여, ildasm.exe를 실행하시면 Disassembler가 실행됩니다. Visual Basic와 C#으로 동일한 기능을 하는 간단한 프로그램을 역어셈블하면 어셈블리 코드가 거의 같다는 것을 알 수 있습니다. .NET에서 다른 언어로 같은 기능을 하는 프로그램을 만들면, 약간의 차이가 있을 확률은 있겠지만, CLR이 따르는 CLS에 의해 거의 같은 성능을 낼 수 밖에 없습니다.
CLR(공용 언어 런타임)은 모든 객체들과 상호작용하기 위해 특정한 룰을 제공합니다. 이 룰의 집합이 CLS입니다. CLS는 모든 언어들이 반드시 따라야하는 규칙을 말합니다. CLR환경에서 작동하는 IL코드를 생성하는 컴파일들은 CLS에 따른 룰을 따릅니다.
Common Language Runtime과 ASP.NET
ASP.NET는 .NET Framework라는 CLR환경에서 동작합니다. .NET Framework환경에서 동작함으로서 얻을 수 있는 이익은 다음과 같습니다.