Visual Web Developer 2010으로 ASP.NET 웹 사이트 만들기 01

Visual Web Developer 2010으로 ASP.NET 웹 사이트를 만드는 것을 하나하나 진행해 보려고 한다.

우선 Visual Web Developer 2010으로 솔루션 관리가 좀 되었으면 해서 정리한다. 이 내용은 이후의 모든 Visual Studio에 동일하게 적용된다. 탬플릿 프로젝트를 만드는 게 아니라 직접 만드는 거라면 이 쪽이 더 편할지도 모르겠다. 게다가 사이트가 뭐 페이지 한두개로 이루어지는 것도 아니고 하니 페이지를 많이 이용하기 위해서도 IDE를 이용하는 거니깐.

ASP.NET은 IIS에서 동작하기 때문에 비주얼 스튜디오는 해당 IIS에 직접 파일을 작성하여 이용할 수 있다. 그렇게 되면 바로바로 확인할 수 있게 된다. 개발할 때 실제로 동작하는 웹사이트를 실시간으로 바로바로 수정하진 않겠지만 (설마 유저가 이용하는데 바로바로 수정하고 할 일이 있을리가…/먼산) 로컬에서 만들어서 그대로 동기화 하고 하는 건 할 수 있으니, 로컬 IIS에 직접 작성할 수 있도록 하려 한다.

이 작업을 위해서는 Visual Web Developer를 관리자 권한으로 실행해야 한다. 윈도우 7 이후에서부터는 실행을 위한 바로가기 아이콘의 속성에 호환성 -> 권한 수준에 있는 [관리자 권한으로 이 프로그램 실행]을 체크하여 설정해 주면 된다.

Screenshot - 2016년 05월 17일 - 22시 32분 46초

Visual Web Developer를 실행하여 새 웹 사이트를 생성한다. [파일]->[새 웹 사이트]를 클릭하여 만든다. 설치된 탬플릿에 언어를 Visual C#으로 선택하고, 탬플릿에는 [ASP.NET 빈 웹 사이트]를 선택해준다.

그 다음에 웹 위치를 지정하는데, 파일 저장 위치를 지정할 수도 있지만, HTTP 서버 혹은 FTP 서버를 지정할 수 있다.

IIS에 적접 작성하기 위해 HTTP를 선택한 다음 찾아보기를 클릭하면 서버와 사이트를 선택할 수 있는 창이 나온다. 로컬에서 직접 개발해서 돌려보려면 자기가 직접 쓰는 사이트를 선택하면 된다. 가상 디렉터리도 당연히 지원된다.

이런 경고가 남녀 그냥 예를 한다. 마이크로소프트의 웹 솔루션은 웹 응용 프로그램이냐 아니냐를 은근 많이 따진다.

그 담에 필요하면 하부에 폴더를 설정해주면 그 폴더를 기준으로 사이트를 만들 수 있다. 내부에 별도로 02라는 폴더를 만들어서 처리했다.

만들어진 화면은 아래와 같이 진행된다. 솔루션 탐색기에 웹 전용 설정 파일 만들어진 것 외에는 아무것도 없다. 여기서부터 파일 하나 둘 만들어서 개발하면 된다.

어려운 작업은 아니다. 걍 C 배울 때 빈 프로젝트로 만들어서 파일 하나 둘 추가하던 거랑 다를 거 없는 수준이라고 보면 된다.

ASP.NET의 스크립트 언어

ASP.NET이 처음 만들어졌을 때에는, 스크립트 언어로 VB.NET을 많이 이용하였다. 그러나 지금 규링도 이용하는 스크립트는 C#이다. 사실 Eiffel, 파스칼, 코볼도 닷넷 프레임워크에 연동하여 이용할 수도 있다. 어떤 스크립트를 연결해서 쓰냐 마냐에 대해서는 그냥 개발자 맘이다. 닷넷과 제대로 연동해서 쓸 수많 있다면 말이다. 어떤 언어를 선택하든지 컴파일러는 작성된 코드를 일련의 중간 언어(Intermediate Language) 명령어들로 변환하기 때문에 어떤 게 좋다고도 말하기 어렵다. 중간 언어가 생성되었을 때의 성능은 각자 다르기 때문이다.

근데 요즘은 C#을 이용하는 것을 중요하게 생각한다. 이 이유는 다음과 같다.

  • 닷넷 프레임워크 프로그래밍 모델을 가장 잘 반영한 언어가 처리하기 좋다.
    VB.NET과 C#은 중간언어 형태고 컴파일되는 닷넷 프레임워크의 프로그래밍 모델을 가장 잘 반영하는 언어이다. (당연히 마소에서 만드니깐) 즉, 버전이 올라가면 올라갈수록 언어적 차원에서 가장 많은 걸 지원한다.
  • 닷넷 언어들도 다른 언어들의 장점들을 지속적으로 이식해서 발전하고 있다.
    이건 요즘 모든 언어들이 다 가지고 가는 상황이다. 지속적으로 다른 언어들의 장점을 흡수해서 진화해 가기 때문에 프로그램 기능이 막강해진다.
  • 사용자가 지속적으로 증가하고 있다.
    이건 되게 중요한 것이다. 현재 마이크로소프트는 닷넷 플랫폼의 사용을 여러 곳에 지원하고 있고, 그를 위해 응용 프로그램 개발을 하기 쉽도록 하려고 C#쪽에 좀 더 힘을 쓰고 있다. 그래서 사용자도 엄청나게 증가하고 있는 추세이다. (글을 작성하는 현 시점같이 멀티 랭귀지가 기본인 곳에서 점유율이 늘어나는 것은 별 의미가 없을수도 있지만, 그렇다고 해서 신경 안쓰고 할 정도의 그런 건 아니다.) 게다가 자바랑도 유사해서 쉽게 배우고 하다보니 은근 경험 공유도 많이 된다.

그 중에서도 요즘 마이크로소프트가 제대로 지원하는 C# 쪽이 더 지원력은 강하다. 마소가 닷넷을 여러 플랫폼에서 확장하기 위해 제대로 밀고 있는 것도 C#이기도 하고…

이런 상황이다보니 갠적으로는 C#을 이용하여 스크립트를 작성하는 쪽을 좀 더 좋게 본다.

IIS의 가상 디렉터리 설정하기

가상 디렉터리란 물리적으로 루트 디렉터리 또는 이에 종속된 하위 디렉터리가 아님에도 불구하고 웹에서는 웹 사이트의 하위 디렉터리로 인식되는 디렉터리를 말한다. 형식은 http://[사이트 주소]/[가상 디렉터리 이름]/[파일]이다.

라고 적으면 이게 뭔 개소린가 싶다. (…)

처음 설치하면 생성되는 C:\inetpub\wwwroot 같은 폴더의 경우에는 실제로는 그냥 쓰면 안된다. 그리고 각각의 서비스들을 별도의 하위 폴더로 만들어서 쓰는 것도 좋지 않다. program1이라는 서비스를 만들었을 때, wwwroot 밑에 program1 폴더를 만들어서 거기에 생성해서 쓰면 안된다. 이런 식으로 보이는 서비스들은 전부 가상 디렉터리를 이용해서 제공되는 서비스들이다. 왜 쓰면 안되는지는 다음과 같은 이유가 있다.

  1. 보안 문제: 웹 주소와 디렉터리가 그대로 노출된다. 기본 디렉터리를 바꿨다 하더라도 디렉터리를 탐색하면 위치가 그대로 노출될 수 있다. 게다가 기본 디렉터리의 루트에서부터 공개되기 때문에 악의적으로 해킹해서 접속하게되면 획득한 권한으로 하부의 모든 서비스를 다 가로챌 수 있게 된다.
  2. 공간 부족 문제: 지속적으로 추가되는 것들을 전부 다 저장하기에는 C:의 용량은 한정되어 있다. 그렇기 때문에 다른 드라이브에 생성하여 용량을 널럴하게 주는 것이 좋다.

이런 문제를 해결해주는 것이 바로 가상 디렉터리이다. 임의의 드라이브, 임의의 폴더를 지정하여 쓰게 되면 위의 문제를 해결할 수 있다.

그럼 IIS에서 어떻게 가상 디렉터리를 이용할 수 있는지는 다음 설정을 따라가면 된다. 우선 제어판 -> 관리도구 -> IIS 관리자를 실행한다.

그 다음, 자신의 서버에 있는 사이트(Site)의 하위에 있는 Default Web Site를 선택하였을 때 나오는 내용 중에 [가상 디렉터리 보기]라고 나와있는 것을 클릭하면 가상 디렉터리를 관리할 수 있다.

가상 디렉터리를 추가해준다.

추가하려는 이름과 디렉터리를 지정한다. 여기에 입력하는 이름이 그대로 사이트 주소에 적용되니 잘 작성한다. 실제 경로는 파일을 저장할 경로인데, 원하는 곳에 폴더를 만들어서 지정하면 된다.

지정한 디렉터리에 아까 만들었던 FirstApp.aspx 파일을 복사한다.

이제 브라우저에서 확인을 한다 http://localhost/WebEx/FirstApp.aspx 라고 입력하면 아래 화면처럼 그전에 만든 것이 그대로 실행되면 된다.

별로 어렵진 않다.

ASP.NET 기본 테스트 앱

처음에 프로그래밍을 시작할 때, 대부분은 HelloWorld를 만들어본다. 웹 프로그래밍이라고 해서 뭐 다를 껀 없다. 그런데, 기왕이면 뭔가 좀 달라보이는 걸 해봐야 웹에서 서버를 건드려 보고 있다는 걸 알텐데 그럴만한 게 뭐가 있을까 해서 뒤적거리니…

역시 웹 서버에서 실행할 수 있는 코드를 작성하는 것이 가장 좋겠다 싶다.

그래서 다음과 같은 aspx 코드를 작성하여 파일 이름을 FirstApp.aspx으로 저장한다. 저장하는 위치는 C:\inetpub\wwwroot이다. 윈도우에 IIS를 설치하면 가장 먼저 만들어지는 기본 웹 디렉토리이다. (우분투에 아파치 깔면 /var/www/html 생성되는 거랑 같은 이치다)

<html>
<head>
<title>반갑습니다!</title>

void Page_Load(object sender, System.EventArgs e)
{
lblMessage.Text = “현재시각: “+DateTime.Now.ToString();
}

</head>
<body>
<center>
<h3>환영합니다!</h3>
<hr width=300 />
<asp:Label id=”lblMessage” runat=”server”></asp:Label>
<hr width=300 />
</center>
</body>
</html>

저기서 일부러 좀 엔터로 띄어둔 부분이 있다. script 태그인데, 스크립트를 페이지에 직접 작성하는 태그 구문이다. Page_Load 함수는 GUI프로그램에서 기본적으로 동작하는 로드 함수랑 같은 역할을 하는 기본적인 함수이다. 여기에 라벨에 시간 텍스트를 작성하도록 하였다. 실행하면 아래 화면처럼 동작한다.

서버측의 스크립트가 동작한 것을 확인할 수 있다.

코드보기로 확인해보면 이런 식으로 html 코드만 보일 것이다. 서버 사이드에서 실행하는 것은 클라이언트에서는 보이지 않는다. 이렇게 보면 서버에서 동작하는 코드를 실행했다는 걸 느낄 수 있다. ㅇㅅㅇ!

ASP.NET: 일단 윈도우만 있으면 해볼 수 있는 녀석

보통 웹 서비스 개발하고자 할 때 웹 서버로 주로 아파치부터 해서 요즘 유행하는 수많은 서버들을 알려주고는 한다. 근데 보고 잘 몰라하는 사람들이 많다. 특히 개발이라는 걸 처음하는 사람들한테는 더더욱.

설정 파일에서 내용 일일이 찾아서 하는 것부터 시작해서 아직도 리눅스에서 커멘드로 명령어 처리해서 서버 동작시키고 하는 그런 작업들… 사실 익숙함의 문제이다보니 그러려니 하고 넘어갈 수도 있긴 한데.. 이런 걸로 그닥 발목잡히고 싶진 않을 땐 걍 MS의 기술을 알려주는 것도 좋은 방법이 될 때가 있다.

ASP.NET을 그런 경우가 싫어서 가르쳐주는 편이긴 한데, 난 개인적으로 닷넷에도 익숙해져서 걍 같이 연동해서 가르쳐 주고 하는 편이기도 하다. 윈도우 7 프로패셔널급 이상을 쓰고 있다면 IIS도 걍 윈도우의 기능대로 추가해서 쓰면 되는 데다가 C#에 친숙하면 진짜로 빠르게 할 수 있는 것들이 많은지라.. ㅡㅂㅡ

윈도우 기능에서 IIS를 추가중인 화면

게다가 비주얼 스튜디오 웹 익스프레스들도 있고, 2015는 커뮤니티로 무료로 쫙 풀려서 개발할 수 있게 되었으니 지금 글을 쓰는 시점을 기준으로 말한다면 윈도우만 있다면 해볼 수 있는 환경이 되어버렸다. 나중에 감면 아파치와 PHP의 조합같이 그나마 덜 어렵게 느껴지려나…?