login register Sysop! about ME  
qrcode
    최초 작성일 :    2002년 03월 28일
  최종 수정일 :    2002년 03월 29일
  작성자 :    taeyo
  편집자 :    Taeyo (김 태영)
  읽음수 :    65,363

강좌 목록으로 돌아가기

필자의 잡담~

호오.. 인기가 있는 것일까? 태오의 강좌?? 근데, 책은 언제 쓰지??? 음음...

ASP 와 ASP.NET

사실상 개인적으로는 ASP와 ASP.NET을 비교하는 것은 굳이 필요치 않다고 생각한다. 비록 ASP.NET이 ASP를 끌어안고 있기는 하지만, ASP.NET은 ASP와 확연히 다르다. 물론, ASP 때의 기능들을 많은 부분 같은 방식으로 사용할 수는 있게끔 ASP.NET은 구성되어져 있지만, 일단 접근하는 방식은 엄연히 다르다. 눈에 보이기에만 비슷하게 꾸며놓았다고 생각하는 것이 낫다. 역시 호환성을 중요시 하는 Microsoft 답게 말이다.

   ASP.NET 에서도 ASP는 살아숨쉰다?

ASP.NET 에서는 ASP에서 자주 사용하는 Request, Response, Application, Session, Sever 개체들이 여전히 제공된다. 몇몇 개체들의 경우 속성과 메서드가 상당히 보강되기도 하였다. 개체들의 사용 방법도 기존과 거의 같지만, 실제적인 개체 모델은 상당히 많이 바뀌어져 있다는 것을 이후에 예제들을 통해서 알 수 있을 것이다.

이 자리에서 ASP와 ASP.NET의 기능적인 비교까지 꺼내고 싶지는 않다. 그것은 매우 많은 분량이며, 예제와 함께 설명하지 않는다면 이해하기도 그리 수월하지 않다. 그렇기에 이 자리에서는 ASP와 ASP.NET의 구조적인 비교만을 하고 넘어가려 한다.

여러분이 ASP로 뭔가를 개발해 본 경험이 있다면, ASP와 ASP.NET의 기능적인 비교는 이 강의를 따라가면서 스스로 정리해 볼 수 있을 것이며, 때오도 부분 부분 그러한 비교를 언급하도록 할 것이다.

 

위의 그림은 간단하게나마 ASP와 ASP.NET을 비교한 것이다. 왼편이 ASP이고, 오른편이 ASP.NET 이다. ASP는 .asp 라는 확장자를 쓰는 페이지였고, 우리는 그 페이지를 ASP 페이지라고 불렀으며, 사용할 수 있는 서버 스크립트로 VBScript와 JScript 가 있었다. 대부분의 개발자는 VBScript를 사용했으며, JScript를 사용하는 인구는 전 세계의 10% 도 되지 않았다. 특히나 국내에서는 JScript로 개발된 ASP 웹 사이트는 찾아보기가 어려울 정도였다. ASP 페이지는 HTML과 ASP 코드가 섞여있는 구조를 가지고 있었으며, 사용자의 요청시 매번! 해석되고, 그 결과 만들어지는 HTML이 사용자에게 보내어지는 흐름 구조를 가지고 있었다.

ASP.NET 에서는 컴파일 언어인 VB.NET 이나 C#등의 .NET 언어가 사용되어 진다. 이들은 강력한 데이터 타입을 제공하고, 스크립트로써는 제한적이었던 모든 기능을 Base Class Library를 통해서 제공해 준다. 또한, 컴파일 되고 메모리에 올라서서 실행되어지기에 스크립트에 비해서 월등한 성능의 향상을 가져다 준다. 게다가, 어떠한 .NET 언어로 프로그래밍을 하던 모두 같은 결과를 얻어낼 수 있으며, VB.NET 언어로 제작한 클래스를 C#으로 상속받아 확장할 수 있는 등의 언어 교차 상속을 가능하게 한다. (이로 인해 어쩌면 "저는 VB 개발자인데요", "저는 VC++ 개발자입니다" 등의 말이 사라지고 "저는 .NET 개발자랍니다"라는 말로 대체되어져, .NET 개발자 모두를 하나의 공동체로 묶어줄런지도 모르겠다.)

또한, ASP.NET은 ASP 때에는 없었던 강력한 서버 컨트롤들을 제공해 준다. 마치 VB나 VC++ 같은 비주얼한 환경에서 간단하게 드래그 앤 드롭만으로 컨트롤을 가져다가 쓸 수 있었던 것처럼, 비슷한 방식으로 쉽게 사용할 수 있는 수 많은 서버 컨트롤들이 제공되어진다. ASP 때는 Input 컨트롤등의 제한적인 Html 컨트롤만을 개발자가 태그로 작성하여 사용할 수 밖에 없었다.

그리고, ASP.NET에서는 코드와 컨텐트를 분리해서 2개의 파일로 작성하여 사용할 수 있는 코드 비하인드를 제공한다. 두 페이지는 컴파일시 하나로 묶여 유기적으로 동작하게 되며, 마치 하나의 어셈블리처럼 구성되어져 동작하게 된다. 이러한 방법은 페이지의 컨텐트와 소스 코드를 분리해서, 페이지의 관리, 유지 보수를 용이하게 하며, 페이지의 확장, 상속을 가능하게 해 준다. 코드 비하인드에 대해서는 이후 자세히 알아볼 것이다.

물론, ASP 시절에도 Include 파일을 통해서 코드 비하인드와 비슷한 것을 흉내낼 수는 있었지만, 그것은 오히려 소스를 관리, 확장하기 어렵게 했고 페이지의 많은 버그를 유발시키는 원인이 되기도 했다. 그리고, Include 파일을 사용하는 방법은 엄밀하게 말해 컨텐트와 소스 코드를 분리하는 방법이라고는 보기 어렵다.

이러한 차이가 ASP 와 ASP.NET의 구조적인 차이의 전부는 아니다. 수많은 차이중에 가장 확연한 것 몇몇일 뿐이다. 사실 ASP와 ASP.NET은 너무나도 다르기에 비교를 하는 것이 그렇게 쉽지만은 않고, 비교를 할만한 이유도 사실 없다. 그래도 정히 차이점에 대해 알기를 원한다면, ASP.NET 에 남아있는 ASP의 모습들을 체크해 보는 것이 차라리 도움이 될 것이다. 이 강좌에서는 ASP.NET을 공부해 나가면서 그러한 체크도 같이 할 것이다.

그림으로 돌아가 보자. 지금까지 이야기한 것은 서버측의 구성이라는 것을 알 수 있을 것이다. 그렇다. ASP와 ASP.NET은 서버측의 기술이다. 이것은 클라이언트 측에게는 전혀 관심이 없다. ASP.NET 이 되었다고 해서 클라이언트까지 마음대로 주무를 수 있다고 생각하는 것은 오산이다.

ASP.NET 은 그 이름에서 볼 수 있다시피 이름의 앞 글자로 여전히 ASP 를 사용하고 있다. 즉, ASP.NET은 ASP 라는 기술에 .NET 기술을 접목한 기술이라는 것이다. 그렇다면 ASP는 무엇인가? ASP는 Active Server Pages 이다. 서버 페이지라는 것이다. 서버에서만 사용할 수 있는 기술이며, 서버에만 관심을 갖는 페이지라는 이야기이다. 비록 그 페이지의 결과물은 클라이언트를 위한 것이라 하더라도, 그 결과물을 만들어 내는 곳은 서버측이다. (결과물은 대부분 화면을 꾸미기 위한 HTML 에 불과하다)

그렇기에, 클라이언트와 어떠한 놀이(?)를 하기 위해서는 ASP.NET 이라는 멋진 기술이 등장했음에도 불구하고, 여전히 클라이언트 스크립트를 사용해야 한다. 기존처럼 자바스크립트나 VBScript를 여전히 클라이언트와 대화하는 도구로 사용한다는 이야기이다. 이 말은 여러분이 .NET을 공부한다고 모든 것을 .NET이 해결해 줄것이라는 기대, 그리고 자바 스크립트를 더 이상 공부하지 않아도 될 것이라는 막연한 기대를 무너뜨리는 이야기이다. 클라이언트 스크립트는 여전히 공부해야만 하는 기술이다. 또한, 동적이면서도 화려한 웹 페이지를 클라이언트에게 보여주고 싶다면 DHTML 이라는 기술에 대해서도 관심을 가져야 한다. 이미 Microsoft의 Internet Explorer(이하 IE) 브라우저의 사용은 전 세계적인 수준이니 말이다. (DHTML은 IE 4.0+에서만 제대로 지원된다)

한 컷의 그림을 두고 너무나도 장황한 이야기를 한 것 같다. 하지만, 여러분의 머리속이 뭔가 정리가 되는 느낌이 들 것이라는 생각을 해본다. 정말? 그렇다면 지금 이 순간, 위의 그림을 다시 한번 살며시 바라보자. 필자가 이야기한 모든 내용이 기억나지는 않을테지만 나름대로 뭔가 조금은 정리되는 것들이 있을 것이다. 여러분의 머리는 여러분의 예상보다 훨씬 더 뛰어나다.

자. 그리고 처음 ASP.NET을 공부하고자 하는 여러분들이 선수 지식으로 또한 기억해 두어야 할만한 것으로는 무엇이 있을까? 그것은 바로 Form 의 동작방식이다. 아주 간단한 사실이지만, 아주 중요한 사실이다.

ASP의 폼은 사용자로부터 어떠한 정보를 입력받기 위해 컨트롤들을 배치해 놓는 무형의 공간이다. 폼 구역 (<form> </form>) 내부로 여러가지 서버 컨트롤들을 추가할 수 있고(직접 손으로 코딩해야만 하지만), 그렇게 폼 내부에 존재하는 컨트롤들만이 폼을 서브밋할 경우에, 지정된 서버의 페이지로 전송되어진다. 다음 그림처럼 말이다.

 

이 말은 다시 말해, 사용자와 대화하는 폼(Form)이 따로 존재하고, 폼에 입력된 데이터를 받아서 처리하는 ASP 페이지가 따로 존재한다는 이야기이다. 물론, 하나의 페이지에서 처리할 수도 있다. 즉, 위의 경우 Form.htm 페이지를 대신하여 Form.asp 페이지를 만든 다음, 사용자가 폼에 입력한 값들을 자기 자신 페이지로 되돌려 그 처리 역시 Form.asp 에서 처리하게 할 수 있다. 가능은 하지만, 그렇게 프로그래밍하는 사람은 그다지 많지 않다. 반드시 그래야만 하는 아주 특별한 경우가 아니라면 말이다. 왜냐하면 그렇게 하나의 페이지로 몰아서 코딩하는 것은 프로그래밍을 매우 어렵게 만들기 때문이고, 디버그하기도 어렵게 만들고 , 유지 보수하기도 매우 힘들게 하기 때문이다.

그렇다면, ASP.NET에서는 어떻게 이러한 폼의 동작 방식이 변화하였을까? 대단하게 바뀌었을 것 같지만 사실 그렇지도 않다. 다음 그림과 같이 너무나도 간단하게 바뀌었다.

포스트백!!  무척이나 앞으로 자주 만나게 될 단어이다. 굳이 번역하자면 "자기 자신으로의 전송" 이 되겠다. 너무 길다? 그렇다면 그냥 "되전송" 이란 말도 나쁘지 않아보인다. 하지만, 그냥 원어로 사용하는 것이 더욱 의미가 살 것이기에 일반적으로는 포스트백이라고들 이야기한다.

즉, ASP.NET 에서는 폼 페이지도 자신이고, 그것을 처리하는 페이지도 자신이라는 이야기이다. 그러나, 이것 참 갑자기 난감하다. 앞에서 ASP 에서도 이러한 방식이 가능하지만, 대단히 안 좋은 방법인 것처럼 소개를 하였는데, ASP.NET은 태오의 말을 뒤집는 위와 같은 방식을 채택하였다. 그렇다면, 태오가 거짓말을 한 것일까? 여러분은 누구쪽의 손을 들어줄 것인가? 물론, 태오일 것이다.  ASP.NET은 손이 없다. 

ASP.NET이 포스트백을 선택한 것 뒤에는 "이벤트 기반 프로그래밍으로의 전환"이라는 것이 존재한다. 기존 ASP 페이지처럼 절차, 순차적인 프로그래밍 방식이 아닌 이벤트 중심적인 방식으로의 변환이 포스트백이라는 방식을 용이하게 하고 있는 것이다. 

ASP 에서는 이벤트 기반 프로그래밍이라는 것은 전혀 불가능에 가까운 방식이었다. 오로지 페이지는 순차적으로 진행되며, 서버측의 이벤트라는 것도 대단히 생소하게 느껴질 정도로 지원되지 않았다.

이제는 그러한 모든 관련 기반 기술을 ASP.NET 이 제공하고 있다. ASP.NET 이 이벤트 중심적인 프로그래밍을 가능하게 하기에, 우리는 단지 필요한 작업에 대해서 필요한 코드를 작성하기만 하면 된다. 모든 처리는 ASP.NET 이 알아서 처리해 준다. 만일, 여러분이 이전에 VB나 VC++을 해본 적이 있다면 그와 비슷하게 이벤트 처리 방식으로 작업할 수 있다는 말로 이해해도 좋다. 지금은 이 말이 쉽게 이해가 가지 않을 수 있지만, 곧 같이 첫번째 ASP.NET 페이지를 만들어 보게되면 이말을 아주 쉽게 이해할 수 있을 것이다.

그렇다면, 결과적으로 ASP.NET 페이지가 포스트백되어지는 구조를 갖게 되고, 이벤트 처리방식으로 프로그래밍이 전환되었다라는 것인데, 그렇다면 원래는 그러한 구조가 페이지의 작성을 매우 혼란스럽게 하고, 개발을 어렵게 한다는 이야기는 어떻게 된 것일까? 이게 앞 뒤가 맞는 말인가? 라는 의문이 들런지도 모르겠다.

즉, 다시 말하면 원래는 혼란스럽고 다루기 힘들어야 하는데, ASP.NET을 도입하면 이것이 대단히 편해지게 되었다라는 말로 이해하면 될 것이다. 그것은 ASP.NET이 그러한 모든 하부구조를 제공하기 때문이다. 그러한 하부구조의 동작들까지도 이해하고 싶은 여러분의 마음은 이해하지만 그것은 이 강좌, 혹은 태오의 새로운 책을 모두 마칠때쯤이 되면 상당 부분 이해할 수 있을 것이며, MSDN을 이용한 심화학습을 통해 지식을 얻을 수도 있을 것이다.

누군가가 편해지면, 누군가는 두배로 힘들어진다는 것을 기억하자. 개발자가 편해진다는 것은 도구(Tools)를 개발하는 사람들이 피곤해진다는 이야기이며, ASP.NET을 만들어 낸 개발자들이 많은 고생을 하였을 것이라는 것을 유추할 수 있게 한다. 그러므로 이 시점에서 그들에게 소리없는 박수를 한번 보내보는 것도 나쁘지 않을 것이다. 어쨋든 우리는 같은 길을 가고 있는 프로그래머들이 아닌가?

  지금 ASP.NET은 1.0 버전!!

현재의 ASP.NET의 버전은 ASP.NET 1.0 이다. 이 이야기는 언젠가 ASP.NET 2.0 이 나올 수 있다는 이야기이고, 또한 아니 땐 굴뚝에 연기나라 사람들의 말을 빌리면 사실 현재 이미 MS는 ASP.NET 2.0 개발에 착수해 있다는 연기같은 소리들이 떠돌고 있다.


ASP.NET Features

이제 본격적으로 ASP.NET 에 대해서 알아보도록 하자. 다음은 ASP.NET의 모습을 정리해 본 것이다.

    - 체계적인 프로그래밍 구조
    - 파워풀한 컨트롤들의 제공 : Control based page
          : 전보다 훨씬 쉽고 풍부한 개발환경을 제공
    - 언어 독립적인 플랫폼 : 모든 CLR 지원 플랫폼 위에서 구동
    - Interface와 Code의 분리 : Code Behind
          : 쉬운 유지보수, Application의 확장성, Easy Deployment
    - Improved performance : Compiled Page & Garbage Collection
    - 개발 생산성 향상 : VISUAL STUDIO . NET
    - Multi-Client Supporting
          : IE / Netscape / Mac / Pocket PC / Mobile phone
    - 간결한 이벤트 중심의 프로그래밍 모델

ASP.NET 에서는 이벤트 기반 프로그래밍 모델을 통해 체계적인 프로그래밍 구조를 제공한다. 이를 통해 상당히 이해하기 쉬운 체계적인 프로그램을 작성할 수 있다. 이는 기존의 ASP 때와는 전혀 다른 식의 코딩방법을 제시하기에 ASP에 익숙한 사용자들은 한동안 혼란스러울 수도 있지만, 일단 ASP.NET 식 프로그래밍 방식에 익숙해지면 ASP 방식의 프로그래밍 스타일로 돌아가려 하지 않을 것이다.

또한, ASP.NET에서는 웹폼이라는 것을 비롯한 수많은 서버측 컨트롤들을 제공해 준다. 이를 통해서 상당히 쉽게 많은 기능을 가진 웹 사이트를 구축할 수 있게 되며, 컨트롤들을 프로그래밍적으로 대단히 쉽게 제어할 수 있기에 직관적인 프로그래밍을 구사할 수 있게 된다.

그리고, ASP.NET은 언어 독립적인 플랫폼을 또한 제공한다. 어떠한 .NET 언어로도 ASP.NET 페이지를 만들 수 있으며, 이렇게 만들어진 웹 페이지들은 CLR이 지원되는 그 어떠한 플랫폼에서도 구동이 가능하다. 단순히 잘 만들어진 ASP.NET 페이지를 카피해 놓는 것만으로 말이다.

   중요 체크!!

하나의 ASP.NET 페이지에서는 하나의 .NET 언어만을 사용할 수 있다.

ASP.NET은 또한 코드 비하인드라는 것을 제공한다. ASP 페이지처럼 프로그래밍 코드와 HTML 컨텐트가 혼합되어 뒤섞여 있는 방식(흔히들 이러한 것을 스파게티 코드라고 이야기한다)이 아닌, 컨텐트와 코드의 분리를 할 수 있는 방식이 제공된다. 이는 컨텐트 페이지와 프로그래밍 코드 페이지가 각각의 파일로 존재하여 개발상에 상당한 편리성을 제공해 준다. 그러한 이유로 Visual Studio.NET 도구는 새로운 ASP.NET 페이지를 생성할 경우, 자동으로 코드 비하인드 ASP.NET 페이지를 만들어 준다.  

또한, ASP.NET은 컴파일 언어를 사용하여 페이지가 작성되고, 컴파일되고 실행시 메모리에 올라서서 동작하기에 상당히 좋은 성능을 가지게 되며, 가비지 컬렉터에 의해 개체들의 관리가 이루어지기에 메모리 누수와 같은 원인으로 서버가 다운되는 일이 최소화된다.

그 외에도 ASP.NET은 여러 클라이언트 디바이스들을 지원한다는 장점도 가지고 있는데, 이는 이전에 IE와 Netscape 브라우저 양쪽을 다 맞추어 웹 페이지를 개발해 본 개발자라면 매우 반가운 소식일 것이다. ASP.NET은 각각의 브라우저 별로, 또한 버전에 맞게 최적화된 HTML을 생성해 준다. 게다가 브라우저뿐 아니라 모바일 폰, PDA 등등에도 적합하게 동작하는 컨텐트를 동적으로 구성하는 현명한 기능을 보유하고 있다.

하나의 ASP.NET 페이지는 클라이언트 디바이스에 따라 적절히 동적으로 컨텐츠가 생성되고, 그 머신에 맞게 결과물을 건네어준다. ASP.NET이 이처럼 스마트하다고 하더라도 우리가 훌룡한 개발자라면 각각의 클라이언트의 도구에 맞게 최적화된 페이지를 구축하는 것이 바람직할 것이다. 참고로, 모바일을 위해서라면  ASP.NET 에서는 모바일 컨트롤들을 따로 제공해주고 있다.

이 외에도 ASP.NET의 많은 모습들과 기능들이 존재한다. 위에서 나열한 ASP.NET의 모습들은 가장 대표적인 것들이다. 그렇다면, 기술적으로 ASP.NET은 어떠한 멋진 기술들을 제공하는가? 무엇이 새로운 것인가? 사실 모든 것이 새롭다고 해도 과언이 아니다. 그렇다면 한번 알아보자. 무엇이 새로운가?


ASP.NET에서 제공하는 새로운 기술들

    - 웹 폼(Web Forms)
        : ASP.NET의 새로운 프로그래밍 모델이며, ASP의 장점을 Visual Studio.NET의 개발 편의성,
         생산성과 결합한 모델이다. 또한, 이 강좌에서 지겹도록 만나게 될 친구이기도 하다.
    - 서버 컨트롤(Server Controls)
        : 웹 폼 프로그래밍 모델의 주요 구성 요소이며, HTML 요소들과 대략적으로 매핑되어진다.
         즉, 서버상의 코드로는 <asp:TextBox>와 같이 작성되지만 실제 클라이언트에게 이 컨트롤은 
          <Input type="text"> 로 변환되어 HTML로써 내려진다. 서버 컨트롤의 제공은 강력한 서버
          사이드 프로그래밍의 가능성을 제공해 줄 것이다.  웹 폼과 마찬가지로 아주 지겹도록 많이,
          자주 만나보게 볼 것이다.
    - 웹 서비스(Web Services)
        : 프로그래밍 가능한 서비스의 제작을 이루는 ASP.NET 의 핵심 기술이다. 웹 서비스라는 기술은
          Microsoft의 .NET 환경에서만 동작하는 기술이 아니라 XML을 지원하는 모든 플랫폼에서 제공,
          사용 가능한 기술이기에 앞으로의 세상은 웹 서비스의 세상일 것이라는 기대는 실제화될 것으로
          보인다. 태오가 매우 관심을 가지고 있는 분야이기도 하다.
    - 캐싱(Caching)
        : ASP.NET은 강력한 캐싱 엔진을 탑재하고 있다. 이를 통해 웹 페이지의 캐싱을 효과적으로 구성
          할 수 있으며, 효과적인 캐싱을 통해 어플리케이션의 성능 향상을 가져올 수 있다. 또한, 효과적
          으로 구성한 캐싱은 서버간의 프로세싱 로드를 절감하는 효과를 가져오기에, 전체적인 네트웍의
          트래픽 또한 향상되는 효과를 얻게한다.
    - 향상된 상태 관리(State management Improvements)
        : 웹 서버상에서 세션 상태를 분산시켜 저장할 수 있도록 하는 기능을 제공한다. 별도의 상태 서버
          나 SQL Server Database를 통해 상태 정보 유지하도록 할 수 있으며, 클라이언트 브라우저가
         쿠키를 지원하지 않아도 세션의 상태를 관리할 수 있는 방법 또한 제공한다.

이 외에도 보안(Security)과 관련해서도 대단히 확장되고 안정적인 방법들을 제시해 준다. 사실상 위에 나온 각각의 기술들이 결국 이 강좌들을 메꾸어 나갈 ASP.NET의 전부라 보아도 과언이 아니다. 하지만, 그리 만만치는 않다. 솔직히 위 기능들은 각각만으로도 책 한권은 족히 나올 정도의 분량일 수 있다. 그만큼 ASP.NET은 광범위한 기술인 것이다.

자. 이제 그럼 시작해 보자. 우리의 ASP.NET 첫번째 예제를 말이다.... 음하하 
어엇? 밑의 선은 무엇이지???

-------------------------------------- to be Continue --------------------------------------

   ASP.NET을 제대로 하려면 .NET 언어를 먼저 공부하라.

ASP.NET은 이전 ASP 같은 작은 기술이 아니다. ASP.NET은 상당히 큰 기술의 범주이며, 여러분이 ASP.NET을 제대로 익히기 위해 요구되는 많은 기술들이 존재한다. 예를 들어, 다음 그림은 ASP.NET과 연계되는 여러 기술들이다.(물론, 전부는 아니다) ASP.NET을 제대로 하기 위해서는 이러한 주변 기술들을 반드시 공부해야만 한다. 물론, 전체를 다 공부하기에는 단계적으로 많은 시간이 필요하겠지만, ASP.NET을 여러분의 기술로 만들고자 한다면 이 중에서도 최소한 자신만의 .NET 언어는 무엇보다 먼저 한 가지 정도는 준비해 주어야 할 것이다.


authored by

  eklim4254
  2013-02-14(17:15)
캐릭 이미지
주먹을 펴고 다음으로 넘어갑니다.ㅋㅋ

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})