예제를 만들어서 돌리는 것이 아니라, 왜 그렇게 해야하고, 어째서 그렇게 동작하게 되는지를 이해하는 것이 먼저일테니까요.

 

ASP.NET:

SP.NET에 들어서면서 페이지 작성시 가장 먼저 개발자들이 만나게 되는 것이 바로 웹 폼(WebForm)이라는 것입니다. 일반 어플리케이션 폼을 작성하듯이 만들 수 있게 해 주는 웹 페이지 구조를 말합니다.

 

ASP.NET 은 이벤트 중심의 프로그래밍을 지향합니다.

 

 

<html>

<script language="vb" runat="server">

Sub Button1_Click(Source As Object, E As EventArgs)

      lblResult.Text = "안녕하시렵니까? " & txtName.text & " 님"

End Sub

</script>

<body>

   <form id="Form1" method="post" runat="server">

      이름 :

      <asp:textbox id="txtName" runat="server"></asp:textbox>

      <asp:button id="Button1" onclick="Button1_Click" runat="server" text="인사" />

      <p><asp:label id="lblResult" runat="server" /></p>

   </form>

</body>

</html>

만일 소스를 코딩하고 테스트하고 싶으시다면 물론, 여러분의 시스템에는 .NET FrameWork 이 설치되어져 있어야 하구요. 이것을 설치하는 방법은 그냥 CD를 넣고 설치하면 되는 것이기에 설명은 생략합니다.(이 CD는 MS 세미나장에 가거나, 여러 컴 잡지를 사면 마구 공짜로 줍니다.) 어쩃든, 환경이 갖추어진 상태라면 위 파일을 코딩한 뒤,(어쩌면 카피한 뒤) 확장자를 .aspx 라고 해서 저장해야만 합니다.

소스를 보실 때 만큼은 ASP를 잊어주십시오. 그리고 보도록 합니다. 이 파일이 브라우저에 로딩이 되면 화면에는 하나의 텍스트 박스와 하나의 버튼("인사" 라고 쓰여져 있는)이 눈에 나타날 것입니다. 다음처럼요.




그리고 텍스트 박스에 적절히 이름을 넣고 "인사"버튼을 꾹 누르면.. 다음처럼 결과가 나올 것입니다.

 

 

소스에서 <asp:textbox .. /><asp:button.. /><asp:label../>등과 같은 태그가 여러분을 당황스럽게 할런지도 모르겠습니다. 이것은 웹 폼 서버 컨트롤이라 불리는 것으로 기존의 HTML 컨트롤을 대신하게 될 서버와 연동이 가능한 컨트롤들입니다. 이름에서 느껴지듯이 이들은 각각 입력을 위한 텍스트 박스, 버튼, 레이블 이지요. 각 컨트롤의 속성으로는 runat="server" 라는 것이 들어있음에 주목하세요. 이 컨트롤들은 서버에서 연동되는 컨트롤이기에 이러한 속성이 지정되어져 있습니다.

각각의 컨트롤은 id 속성으로 구분을 하며, 서버에서는 그 ID로 각각의 컨트롤을 제어할 수 있습니다. 소스에서는 우리가 <asp:textbox 컨트롤에 특정 값을 넣고 버튼을 누룰 경우, 그 버튼에 걸려있는 이벤트가 서버측의 함수인 "Button1_Click"을 호출하게 됩니다. 주의하세요. 이 순간 폼의 내용은 서버로 전송되어지고, 함수가 구동되는 작업은 서버에서 일어나는 것입니다. 서버에서 말입니다.

 

페이지가 처음 요청되는 순간, IIS는 웹 페이지를 파싱하는 ASP.NET 엔진으로 일단 페이지를 읽어들입니다. 그리고, 이를 JIT(just-in-time)로 컴파일을 합니다. 그리고, 페이지의 컨트롤들을 HTML로서 생성하면서, 컴파일된 코드가 실행되고, 호출된 이벤트가 있다면 그 이벤트 코드가 실행이 되어져서, 컨트롤과 상호작용을 하고, 출력 HTML은 생성됩니다. 그리고, 이 결과 HTML 페이지는 클라이언트의 브라우저로 넘겨지는 것입니다.

페이지가 처음 요청되는 경우는 위와 같은 동작을 하지만, 두번 이상 호출되어지면 컴파일을 하는 작업은 사라지고, 이미 컴파일이 되어져 있던 것을 사용하게 되기에, 이후 요청시는 페이지의 수행시간이 단축되어 집니다. 이를 그림으로 표시하면 다음과 같습니다.

 

.NET 프레임워크가 많은 것을 처리해 주는 만큼 기쁘게도 우리 개발자들이 코딩작업을 하기는 그만큼 편리해진 것입니다. 이제는 특정 처리를 위해서 복잡하게 페이지의 구성을 계산하고, HTML에서 서버로 데이터를 넘기는 폼 페이지를 작성하고, 실제 그 처리를 담당하는 ASP 페이지를 작성하고, 그 결과를 다시금 결과 페이지를 만들어서 보여주고 하던 여러 단계를 처리를 가볍게 줄일 수 있게 된 것입니다.

 

무턱대고 빨리 뭔가를 만들어보고자 기본을 건너뛰는 자세는 결과적으로 부실한 솔루션을 만들어 내게 하니까요. 그렇지 않나요?

 

 

도대체 닷넷이란 무엇인가? 

윈도우 서비스와 API에 대한 프로그래밍 인터페이스 기술을 통합하는 대단한 친구라고 하네요.

 

COM+ 컴포넌트 서비스, ASP.NET 웹 개발 프레임워크, XML과 객체지향 설계지원, WSDL, UDDI등 웹 서비스에 대한 지원, 인터넷 기반에 대한 파워풀한 지원등이죠.

안정성, 보안, 통합성, 확장성등등과 관련되어 현재까지 나와있던 대부분의 문제점들을 상당히 해갈시켜줄 수 있는 기반이 되어줄 것으로 기대가 되어지고 있죠.

 

제가 개인적으로 좋아하는 부분은 바로 "언어 통합성"에 관계된 부분입니다. 무슨 말인고 하니 이제는 언어의 장벽이 무너질 것이라는 이야기입죠. 다시 말해, 그동안 VC++ 프로그래머들에 의해 조금은 무시되어 온 VB 개발자들이나, 프로그래머 취급을 받지 못했던 스크립터들도 이제는 같이 어깨를 나란히 하고..  자기가 잘 하는 언어만 계속 공부하면 된다는 이야기입니다.

 

이러한 언어의 통합은 CTS(Common Type System) 이라는 닷넷 프레임워크의 규칙을 통해서 가능하게 됩니다. 즉, 닷넷은 모든 타입들의 명세를 확실하게 정해놓고 있으며, 언어가 무엇이던지 그 타입들을 같이 사용하도록 한다는 이야기입니다. 각각의 언어는 작성하는 문법만의 차이가 존재할 뿐, 내부적으로 같은 형태의 타입들을 사용하게 됩니다. 사용하는 데이터의 타입이 모든 닷넷언어에서 일치한다는 것입죠. 모든 타입의 기본이 되는 것은 System.Object 이라는 사실도 기억해둘만한 이야기입니다. 

 

사실상 각각의 .NET 언어는 .NET 에서 제공하는 Base Class Library(기반 클래스 라이브러리)의 클래스들을 가져다가 사용하는 것에 불과합니다. 

다시 말해, 닷넷 세계에서의 언어(예를 들면 C#)들은 사실 문법적인 인터페이스에 불과한 것입니다.

 

그렇다면, 닷넷이라는 통합환경은 어떤 구조를 하고 있을까?

이를 이해하기 위해서는 .NET 세미나에서 빠지지 않고 거론되는 다음 3가지에 주목할 필요가 있습니다. 그것은 바로 Common Language Runtime(CLR), Common Type System(CTS), Common Language Specification(CLS)  입니다.

 

CLR은 .NET 타입들의 위치를 지정하고, Load 하고, 관리하는 역할을 담당합니다. 자동으로 메모리를 관리해 주고, 언어를 통합할 수 있도록 하는 것 모두가 바로 이 CLR이 맡고 있는 역할이지요.

 

CTS는 .NET 에서 지원하는 모든 타입을 다루는 녀석으로, 모든 닷넷 언어는 이를 통해 강력하게 데이터의 타입들을 다룰 수 있게 됩니다. 기본적으로 모든 타입의 기본이 되는 타입은 System.Object입니다.

 

CLS는 여러분이나 제 3자가 타입을 작성하고자 할 경우, 그 기준이 되어주는 일종의 명세서라고 보시면 됩니다. 해서 이 명세를 통해서 여러 언어들이 닷넷을 지원하도록 만들수 있는 것이지요. 여러분이 실력만 된다면 이 명세에 맞추어 닷넷 지원 언어를 만들수도 있다는 이야기가 됩니다. 현재 닷넷을 지원하고자 하는 수많은 언어들이 준비중에 있다고 하죠. 파스칼, 코볼, 파이썬등등.. 한번쯤 들어보았음 직한 언어들이 모두 닷넷버전을 제작중에 있다고 하네요.

 

 

 

 

 

 

 

 

 

 

 

 


'ASP.NET(윈폼)' 카테고리의 다른 글

[ASP.NET] 3.ASP.NET 시작하기  (0) 2018.08.06
[ASP.NET] 2.HTML Server Control Class 정리  (0) 2018.08.06
[윈폼] 탐색기 추가기능  (1) 2018.07.26
[윈폼] 메모장 추가기능  (0) 2018.07.26
[윈폼] 탐색기  (0) 2018.07.24

+ Recent posts