ASP.NET Web Pages

WebMatrix 소개

Clark Sell

코드 샘플 다운로드

현재 시장에 웹 개발자용 도구가 부족한 상황은 아니며, 아마도 여러분은 이미 많은 시간을 Visual Studio를 사용하면서 보내고 있을 것입니다. Microsoft WebMatrix에 대해 들어 보았다면 이것이 무엇이고, 왜 있으며, 그리고 여기에 왜 신경을 써야 하는지 궁금할 것입니다.

이 기사에서는 이러한 질문에 대한 답을 찾아보겠습니다. 먼저 ASP.NET 스택에 대한 몇 가지 최근 변경 사항을 살펴보는 것으로 시작하고, WebMatrix를 설정해서 “Hello Web” 응용 프로그램을 만드는 방법을 설명하겠습니다. 그런 다음 레이아웃, 도우미, 데이터 액세스, 보고 및 배포와 같은 몇 가지 기본적인 요소를 다룰 것입니다. 우선 WebMatrix가 무엇인지부터 소개하겠습니다.

WebMatrix는 ASP.NET 웹 페이지를 위한 올인원 웹 사이트 편집기로서, Microsoft 제품의 일반적인 대상과는 다른 웹 개발자와 다른 ASP.NET의 부분에 초점을 맞춥니다. WebMatrix는 Visual Studio의 경쟁자가 아닌 보완하는 성격이며, 서로 겹치는 영역도 있습니다.

WebMatrix의 설치는 매우 빠르고 쉬운데, 그 이유는 전체 패키지와 해당 종속성이 50MB 미만이기 때문입니다. 패키지에는 텍스트 편집기, 웹 서버, 데이터베이스 엔진 및 기반 프레임워크가 포함되어 있으며, 기본적으로 웹 사이트를 만들고 배포하는 데 필요한 모든 것이 포함되어 있다고 할 수 있습니다. 한 가지 놀라운 점은 이 도구가 ASP.NET으로 제한되지 않는다는 것입니다. WebMatrix는 PHP 및 MySQL도 지원합니다. 이 기사에서는 WebMatrix의 .NET 기능에 집중할 것입니다.

새로운 ASP.NET 스택

몇 년간 ASP.NET 스택은 몇 가지 변화를 거쳤습니다. 2009년 4월, ASP.NET MVC가 ASP.NET에서 웹 응용 프로그램 개발을 위한 새 옵션으로 출시되었습니다. Model-View-Controller라고도 하는 MVC 패턴은 새로운 것은 아니지만 ASP.NET 기반의 구현은 새로운 것이었습니다. 게다가 Web Forms와 MVC가 동일한 사이트 내에서 완벽한 조화를 이루며 공존할 수 있습니다.

MVC를 ASP.NET으로 올바르게 도입하기 위해 이러한 새 퍼즐 조각을 여러분이 선택한 곳에 끼울 수 있도록 약간의 프레임워크 리팩터링이 이루어졌습니다. 다시 현재로 돌아와서, Microsoft는 최근 ASP.NET MVC 3 및 WebMatrix를 출시했습니다. 이것은 여러 새로운 기능 추가와 및 향상을 포함하는 주요 릴리스입니다. 프레임워크에는 주목할 만한 세 가지 기능이 추가되었는데, Razor Parser 및 보기 엔진(줄여서 Razor), ASP.NET 웹 페이지, 그리고 IIS Express가 그것입니다. 그림 1에서는 연관된 모든 ASP.NET 프레임워크 조각 간의 관계를 보여 줍니다.

image: The Web Stack

그림 1 웹 스택

그림 1을 보면 Razor, IIS Express, SQL Compact 및 웹 배포가 ASP.NET 웹 개발의 다른 영역에서 유효한 옵션임을 알 수 있습니다. 게다가 ASP.NET MVC 3이 출시됨에 따라 Razor가 기본 보기 엔진이 되었습니다. Razor에 대해서는 조금 뒤에 설명하겠습니다.

반면에 ASP.NET 웹 페이지는 Web Forms 및 MVC와 함께 사용하도록 도입되었습니다. 웹 페이지 모델은 PHP와 비슷한 페이지 중심 실행 모델입니다. 태그와 코드는 모두 페이지 자체에 포함되며, 코드를 간결하게 유지하기 위해 도우미를 이용합니다. Razor에서 Visual Basic 또는 C#을 사용하여 이러한 페이지를 작성할 수 있습니다.

Visual Basic 2005 Express Edition

WebMatrix 준비 과정은 쉽습니다. 설치는 Microsoft 웹 플랫폼 설치 관리자 버전 3.0(또는 줄여서 WebPI)을 통해 수행됩니다. WebPI는 SQL Express 또는 ASP.NET MVC 설치와 같은 작업을 손쉽게 수행할 수 있는 클라이언트 쪽 프로그램입니다. WebPI에 대한 자세한 내용은 microsoft.com/web/downloads/platform.aspx를 참조하십시오. 신속하게 설치하려면 web.ms/webmatrix를 방문하고 WebMatrix 설치 단추를 클릭하십시오. 그러면 WebPI는 물론 WebMatrix까지 설치됩니다. 설치가 완료되면 다음과 같은 항목들이 설치됩니다.

  • Microsoft WebMatrix(편집기)
  • Razor 구문을 포함하는 ASP.NET 웹 페이지(엔진 및 프레임워크)
  • SQL Compact(데이터베이스)
  • IIS Express(개발 웹 서버)

앞에서 WebMatrix는 PHP 개발도 지원한다고 언급했습니다. 패키지는 기본적으로 개발을 지원하지만 PHP 사이트를 처음부터 작성하려면 PHP 런타임을 설치해야 합니다.

Hello World 웹

거의 모든 기술 서적에 “Hello World” 예가 있듯이 여기에서도 WebMatrix로 “Hello Web” 사이트를 만들어 보겠습니다. WebMatrix를 처음 열면 네 가지 선택이 제공되는 대화 상자가 열립니다. 이러한 각 선택은 다른 시작점을 나타냅니다.

  • 내 사이트
  • 폴더에서 사이트 만들기
  • 템플릿에서 사이트 만들기
  • 웹 갤러리에서 사이트 만들기

내 사이트에는 작업하던 기존 사이트가 포함됩니다. 폴더에서 사이트 만들기로는 어떤 폴더든지 사이트의 루트로 열 수 있습니다. 폴더에 있는 모든 항목이 사이트의 자산으로 표시됩니다. 폴더를 마우스 오른쪽 단추로 클릭하고 Open as a Web Site with Microsoft WebMatrix(Microsoft WebMatrix에서 웹 사이트로 열기)를 선택할 수 있으며 이 경우 폴더에서 사이트 만들기와 동일하게 작동합니다.

WebMatrix는 사이트를 빠르게 생성할 수 있는 미리 작성된 다양한 웹 템플릿을 제공합니다. 템플릿에서 사이트 만들기를 선택하면 해당 템플릿 기반 사이트에 필요한 모든 소스 코드가 포함된 폴더 구조가 설정됩니다. 이 기사를 작성하는 시점에는 빈 사이트, 시작 사이트, 제과, 사진 갤러리 및 달력의 5가지 템플릿이 있었습니다. 템플릿은 향후 추가될 것입니다.

갤러리에서 사이트 만들기는 더 흥미롭습니다. 앞으로 몇 년 동안 WebPI를 사용해서 Umbraco 또는 WordPress와 같은 응용 프로그램을 다운로드하고 원하는 대로 사용자 지정한 다음 호스팅 공급자에 배포할 수 있습니다. 아쉽게도 통합된 포괄적인 체계가 없습니다. 이제 WebMatrix 내에서 Umbraco와 같은 기존 응용 프로그램에서 개발을 시작할 수 있습니다. WebMatrix 및 WebPI는 갤러리에 나열된 응용 프로그램 중 하나로부터 사이트를 시작하는 데 필요한 모든 사항을 설정합니다. WebMatrix가 항목을 설정하면 필요에 따라 사용자 지정하고 WebMatrix의 배포 기능을 사용하여 호스팅 공급자로 배포할 수 있습니다.

Hello Web 데모를 만들기 위해 먼저 WebMatrix를 열고 템플릿에서 사이트 만들기를 선택합니다. 빈 사이트[영어] 템플릿을 선택하고 사이트에 이름을 지정합니다. 여기에서는 HelloWeb을 지정합니다. WebMatrix는 선택한 이름으로 빈 사이트를 만듭니다. 이제 파일 탭을 선택하고 주 창에서 *Add a file to your site(사이트로 파일 추가)*를 선택합니다. 가장 먼저 확인할 수 있는 것은 새로운 파일 확장자입니다. ASP.NET 웹 페이지에는 CSHTML 및 VBHTML의 두 가지 새로운 파일 형식이 있습니다. 확장자의 처음 두 문자는 Razor parser가 코드를 구분 분석하는 데 사용할 언어이며 각각 C#과 Visual Basic을 나타냅니다. CSHTML 파일을 선택하고 이름을 HelloWeb.cshtml로 지정하겠습니다. 그러면 약간의 기본 HTML로 미리 채워진 파일이 열립니다.

기존 body 요소에 Hello Web 텍스트를 추가하면 Hello Web이 완성됩니다. WebMatrix는 설치된 모든 웹 브라우저를 자동으로 탐지하며, 간단한 단추 클릭으로 사이트를 이러한 브라우저에서 실행할 수 있습니다. 리본에서 실행을 클릭하면 기본 브라우저가 시작되고 포커스가 있던 페이지가 열리고 렌더링됩니다. 물론 이 경우 페이지는 Hello Web이므로 “Hello Web”이라는 단어가 표시됩니다.

Razor로 코딩

앞에서 언급한 것처럼 Razor는 코드 및 태그 템플릿 엔진입니다. 이것은 여러분이 작성한 구문이 나중에는 해석을 거쳐 요청자에게 전송된다는 것을 의미합니다. 다음은 @DateTime.Now을 호출하는 약간의 코드가 포함된 간단한 웹 페이지의 HTML입니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
     <title>Hello World</title>
  </head>
  <body>
    Hello Web it's @DateTime.Now
  </body>
</html>

이 코드는 .NET System.DateTime 클래스의 Now 메서드를 호출합니다. 그 결과는 그림 2에 나오는 것과 같은 페이지입니다.

image: Hello Web in the Browser

그림 2 브라우저에서의 Hello Web

더 복잡한 작업도 할 수 있습니다. 몇 가지 속성을 만들고, 루프를 실행하고, 약간의 HTML과 함께 혼합해서 사용해 보겠습니다. 그림 3에서 이를 확인할 수 있는데, 간결함을 위해 HTML을 일부 생략했습니다. 그림 4에는 렌더링된 결과가 나옵니다.

그림 3 CodingRazor.cshtml

@{
  var cars = new string [] { "Camaro", "Avalanche", "Honda"};
  var emailAddress = "cars@something.com";
}
 
<ul>
  @foreach ( var car in cars ) {
    <li>
      <a href="http://@(@car).something.com">@car</a>
            
      @if ( car == "Camaro" ) {
        @: Is my favorite!  
        }
    </li>
  }
</ul>

To comment on this list of cars e-mail us at @emailAddress.

image: The Cars Code Rendered in a Browser

그림 4 브라우저에 렌더링된 Cars 코드

그림 3에 나오는 코드 중 일부를 살펴보겠습니다. 하이퍼링크 “http://@(@car).something.com.”에서 “@(@car).” 부분을 볼 수 있는데, @car는 URL 안에 삽입되어 있기 때문에 Razor에 @car가 변수임을 알려야 합니다. 다음 코드 조각은 “@:”로 정의되는 콘텐츠 블록입니다. 루프 안에는 텍스트 콘텐츠 “Is my favorite!”를 포함하는 If 문이 있습니다. “@:”를 제거하면 텍스트 콘텐츠가 HTML에 래핑되지 않으므로 Razor 컴파일이 되지 않습니다. 마지막으로 끝부분에서 @emailAddress를 호출하고 마침표로 문장을 완료했습니다. Razor는 @emailAddress가 클래스가 아닌 변수임을 알아냅니다. 이것이 다가 아닙니다. 이 페이지의 소스를 보면 다음과 같이 브라우저에 순수 HTML로 렌더링된 것을 확인할 수 있습니다.

<ul>
  <li><a href="http://Camaro.something.com">Camaro</a> Is my favorite! </li>
  <li><a href="http://Avalanche.something.com">Avalanche</a> </li>
  <li><a href="http://Honda.something.com">Honda</a> </li>
</ul>

To comment on this list of cars e-mail us at cars@something.com

레이아웃

Razor에는 사이트 콘텐츠를 재사용이 가능한 방법으로 구성하는 새로운 방법이 도입되었습니다. ASP.NET Web Forms의 마스터 페이지에 익숙하다면, Razor에서는 레이아웃을 사용하여 다른 방법으로 같은 목적을 달성합니다. 별로 관계는 없지만 두 레이아웃 방식은 함께 작동하지는 않습니다. 즉, 마스터 페이지는 Razor용 레이아웃 엔진에는 사용할 수 없으며 그 반대도 불가능합니다.

레이아웃을 사용하기 위해 먼저 밑줄로 시작하는 페이지를 만들겠습니다(예: _MasterLayout.cshtml). 밑줄 페이지는 브라우저에서 직접 렌더링할 수 없으며 다른 항목, 공용 페이지에서 참조되어야 합니다. 어떤 면에서 밑줄 페이지는 어셈블리에서 internal로 표시된 클래스와 비슷합니다. 이 페이지에서 다운스트림 참조를 통해 페이지의 다른 조각들이 삽입되는 방법과 위치를 구성할 것입니다. 사용하면 항목을 구성하는 데 도움이 되는 세 가지 주 클래스로 RenderSection, RenderPage 및 RenderBody가 있습니다. 그림 5에는 이 세 가지를 모두 사용하는 간단한 마스터 레이아웃 페이지가 나옵니다.

그림 5 RenderSection, RenderPage 및 RenderBody 클래스

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title></title>
    @RenderSection("ClientScripts", required: false)
  </head>
  <body>
    @RenderPage("~/layout/shared/_header.cshtml")
    @RenderBody()
    @RenderPage("~/layout/shared/_footer.cshtml")
  </body>
</html>

이 마스터 페이지는 정의된 레이아웃을 상속하려는 모든 자식 페이지에서 참조해야 합니다. 여기에 나오는 첫 번째 줄이 바로 이 작업을 합니다.

@{ Layout = "~/layout/shared/_MasterLayout.cshtml"; }
    
@section ClientScripts {
  Custom Script Here </br>
}
 
Some body content

이 레이아웃 페이지에서는 head 섹션에 선택적인 섹션(@RenderSection)을 정의했습니다. 이 섹션은 선택적이므로 자식 페이지에는 이를 구현할지 선택하는 옵션이 있습니다. 섹션을 구현하려면 “@section”을 사용하고 “@RenderSection” 호출에 지정한 이름을 사용합니다. 이 예에서는 페이지의 나머지 부분이 콘텐츠인 것으로 가정합니다. 이 부분은 “@RenderBody.”에서 사용됩니다. 자세한 예는 이 기사와 함께 제공되는 온라인 소스 코드를 참조하십시오.

default.cshtml(소스 코드 다운로드의 “layout” 폴더에 있음)을 실행하면 그림 6에 나오는 것과 같은 결과가 생성됩니다. 모든 섹션은 올바르게 렌더링되고 순수한 HTML로 브라우저로 출력됩니다.

그림 6 default.cshtml 실행 결과

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title></title>
  Custom Script Here </br>
</head>
<body>
  <p>this was rendered from ~/layout/shared/_header.cshtml</p>
  Some body content
  <p>this was rendered from ~/layout/shared/_footer.cshtml</p>
</body>
</html>

유용한 기능들

소프트웨어 업계에서 언제나 들을 수 있는 말이 재사용에 대한 것입니다. WebMatrix에는 WordPress 또는 jQuery에서 사용되는 플러그인 모델과 비슷한 개념이 도입되었습니다. WebMatrix에서 이러한 플러그인을 도우미라고 합니다. 개념은 비슷하며 재사용 가능한 기능의 게시된 패키지이거나 손쉽게 배포 및 사용을 위해 작성 및 패키징한 작은 .NET 코드 조각입니다. 도우미 패키지 자체는 NuGet 패키지(nuget.codeplex.com 참조)입니다. 도우미를 작성하고 사용하는 .NET 개발자라면 표준 .NET 클래스를 사용할 때와 다른 점이 느껴지지 않을 것입니다. 실제 이들은 모두 표준 .NET 클래스입니다.

도우미는 클라우드 기반 NuGet 피드로 저장 및 검색됩니다. 그러면 이렇게 찾기 힘든 도우미는 어떻게 찾을 수 있을까요? WebMatrix에서 사이트를 열고 실행을 클릭합니다. 사이트(예: http://localhost:53655/default.cshtml)가 브라우저에 열리면, http://localhost:53655/_admin으로 이동합니다. 이것은 렌더링이 되는 유일한 밑줄 페이지이며 여러분의 로컬 컴퓨터에 있는 것입니다. 그러면 암호를 만들라는 메시지가 표시되며, 암호를 만든 다음에는 패키지 관리자(그림 7 참조)로 이동합니다.

image: ASP.NET Web Pages Administration Package Manager

그림 7 ASP.NET 웹 페이지 관리 패키지 관리자

설치됨, 온라인업데이트의 세 카테고리 중 하나에서 도우미를 볼 수 있습니다. 도우미의 원래 출처도 볼 수 있습니다. 해당 원본은 NuGet 피드입니다. 기본 피드는 WebMatrix 도우미의 공식 디렉터리이지만 다른 원본도 추가할 수 있습니다.

이 패키지 목록에서 하나를 설치해 보겠습니다. 여기에서는 설명을 위해 Url Shortener 도우미라는 도우미를 설치하고 살펴볼 것입니다(UrlShortenerHelper.CodePlex.com 참조). 이것은 bit.ly와 같은 공급자를 활용하여 URL을 단축하는 과정을 지원하도록 필자가 작성한 도우미입니다. 개념은 간단합니다. URL을 가져오고 이를 단축한 다음, 선택한 공급자와의 상호 작용을 숨기는 것입니다. 이제 UrlShortener를 온라인으로 전환하고 설치를 선택합니다. 그러면 도우미가 사이트에 설치되고 구성됩니다.

현재 도우미를 작성하는 데는 Razor로 직접 작성하거나 어셈블리로 컴파일하는 두 가지 방법이 있습니다. 어떤 방법을 사용할지는 물론 상황에 따라 다릅니다. Url Shortener의 경우 코드는 외부 공급자 API와의 상호 작용을 위한 것이며, HTML은 전혀 출력하지 않습니다. 따라서 필자의 시나리오에서는 어셈블리로 패키징하는 것이 적합합니다. 반면에 Facebook 도우미는 많은 양의 태그를 출력하므로 CSHTML 도우미로 작성하는 것이 맞습니다. API 호출 래핑 및 태그 출력을 모두 수행하는 도우미의 경우 Razor 및 어셈블리에서 각각 일부 기능을 수행하는 혼합 방식도 있습니다.

이에 대한 예는 UserVoiceHelper(UserVoiceHelper.codeplex.com)에서 볼 수 있습니다.

사이트로 돌아가보면 몇 가지 새 자산이 있는 것을 볼 수 있습니다. 사이트의 루트를 보면 새로운 어셈블리 두 개가 포함된 /bin 폴더가 있습니다. 이것은 NuGet이 패키지를 설치함에 따라 추가된 것입니다. 또한 루트에는 도우미 사용 방법에 대한 지침이 포함된 ReadMe.UrlShortener.txt 파일이 있습니다. Facebook 도우미와 같은 다른 도우미는 자체 폴더와 코드를 App_Code 폴더로 추가합니다.

데이터

데이터 저장소 없는 웹 사이트란 생각하기 어렵습니다. WebMatrix는 SQL Compact Server Compact Edition 4의 새 버전(또는 SQL Compact)을 제공합니다. SQL Compact는 설치 및 xcopy 배포를 지원하지 않는 무료 내장 데이터베이스 엔진입니다. SQL Compact는 SQL Server의 한 버전이므로 언제든지 약간의 작업으로 고급 버전의 SQL Server로 업그레이드할 수 있습니다. WebMatrix에는 SQL Compact 데이터베이스를 SQL Server로 업그레이드하는 도구도 제공됩니다.

WebMatrix에는 데이터베이스 기능을 위한 기본 제공 편집기가 있으므로, 테이블 생성부터 데이터 생성까지 모든 작업을 편안한 WebMatrix 범위 내에서 수행할 수 있습니다. 데이터베이스 및 모든 필요한 자산을 생성한 후에는 SDF 확장자의 데이터베이스 파일 하나에 모든 내용이 포함됩니다. 그림 8은 간단한 데이터 액세스 호출입니다. 

그림 8 데이터를 쿼리하는 Cars.cshtml

@{ 
  var db = Database.Open("Cars");
  var selectQueryString = "SELECT * FROM Models ORDER BY Year";
}
<!DOCTYPE html>
<html lang="en">
  ... 
    <tbody>
      @foreach (var row in db.Query(selectQueryString))
      {
        <tr>
          <td>@row.Year</td>
          <td>@row.Maker</td>
          <td>@row.Model</td>
        </tr>
      }
    </tbody>
  ...
</html>

cars 데이터베이스를 여는 것으로 시작하고, 나중에 foreach 루프에서 이 연결을 쿼리했습니다. 루프에서는 결과를 행 단위로 표시합니다. 페이지를 렌더링한 후, 페이지를 원본 보기로 전송하면 이번에도 순수 HTML을 볼 수 있습니다. 이 예에서는 단순함을 위해 일부를 생략했지만 온라인 소스 코드 파일 DataAccess.cshtml에서 전체 내용을 볼 수 있습니다.

서비스 제공

웹 사이트가 있더라도 이를 서비스로 제공하지 않으면 쓸모가 없습니다. Windows 플랫폼의 경우 이를 위해 필요한 것이 IIS입니다. IIS에 대한 자세한 내용은 iis.net을 참조하십시오. IIS는 꾸준하게 Windows OS의 기능으로 제공되었으며 여러분의 호스팅 공급자나 IT 전문가들이 구성하고 사용하는 기능이기도 했습니다. Windows 환경의 웹 개발자들은 일반적으로 IIS를 사용하거나 Cassini라고 하는 기본 제공 Visual Studio 웹 서버를 사용했습니다. WebMatrix 및 Visual Studio 2010 SP1이 출시되면서 추가 옵션으로 IIS Express가 제공됩니다. IIS Express는 IIS의 강력함과 Cassini의 단순함을 모두 갖춘 최상의 선택입니다.

IIS Express는 기본적으로 WebMatrix와 함께 설치되지만 WebPI를 사용해서 별도로 다운로드할 수도 있습니다. 전체 버전의 IIS와는 다르게 IIS Express는 다른 사용자 모드 프로그램과 마찬가지로 설치되며, C:\Program Files (x86)\IIS Express에서 찾을 수 있고, iisexpress.exe 및 iisexpresstray.exe의 두 프로그램으로 구성됩니다. iisexpress.exe는 IIS Express 자체이며 iisexpresstray는 Windows 시스템 알림 영역에서 실행되는 가상 트레이입니다.

IIS Express 시작은 일반적으로 명령줄(cmd.exe)에서 수행되며, 경로, 포트, 이름, 프레임워크 버전 등과 같은 여러 옵션을 전달할 수 있습니다. 모든 명령을 보려면 *> iisexpress.exe /?*를 입력하면 됩니다. WebMatrix 자체 외부에서 필자의 새로운 WebMatrix 사이트를 위한 웹 서버를 시작하려면 다음 명령을 입력해야 합니다.

> iisexpress.exe /path:"c:\MySite" /port:81

 그런 다음 원하는 인터넷 브라우저를 열고 http://localhost:81로 이동하면 C:\MySite에 위치한 사이트가 열립니다.

WebMatrix는 이러한 과정은 숨기지만 강력함은 그대로입니다. 실행을 클릭하면 WebMatrix는 IIS Express를 시스템 트레이에서 실행하고 모든 항목을 구성합니다. WebMatrix를 종료하면 IIS Express도 마찬가지로 종료됩니다.

검색 연관성

검색 연관성은 그 어느 때보다 중요해졌으며, Bing이나 Google이 알아서 작업을 해 주도록 기다릴 수는 없게 되었습니다. WebMatrix에는 관련성 요청을 지원하기 위한 SEO(검색 엔진 최적화)라는 보고 기능이 있습니다.

WebMatrix 왼쪽 아래에 있는 보고 탭을 클릭하면 CEO 보고서를 만들 수 있는 기능이 제공됩니다. 이를 위해 WebMatrix는 여러분의 사이트를 크롤링하고 사이트에서 검색 엔진과 연관성이 있는 영역을 찾습니다. WebMatrix가 사이트 크롤링을 완료하면 위반에 대한 자세한 목록과 이를 해결하기 위한 권장 사항을 표시합니다. 그림 9에는 이 기사의 데모 코드로 실행한 샘플 SEO 리포트가 나옵니다.

image: SEO Reporting

그림 9 SEO 보고

배포

많은 시간을 투자하여 사이트를 완성한 다음에는 이를 배포해야 합니다. WebMatrix는 이 작업을 구성과 배포의 두 단계로 수행합니다. WebMatrix 리본을 보면 게시 단추가 있습니다. 배포 설정을 구성하는 것은 호스트 공급자와 활성화된 항목에 따라 달라집니다. 그림 10에는 게시 설정 대화 상자가 나옵니다. WebMatrix는 기본적으로 FTPWebDeploy를 지원합니다. 적절한 설정을 입력하고 게시를 클릭하면 됩니다.

image: Publishing Settings

그림 10 게시 설정

호스팅 공급자가 없는 경우에는 웹 호스팅을 찾습니다. 링크를 클릭합니다. 그러면 이미 구성되고 WebMatrix에서 사용이 인증된 호스팅 공급자를 선택할 수 있는 asp.net/webmatrix/hosts로 이동합니다. WebMatrix는 이미 사이트가 있는 경우를 기능도 제공합니다. 게시 메뉴에 있는 게시된 사이트 다운로드가 그것입니다. 이 기능은 게시의 반대 기능으로서, 배포를 구성한 것과 동일한 설정으로 작동합니다. 게시 설정을 구성한 다음에는 현재 사이트를 로컬로 다운로드하여 편집할 수 있습니다. 편집이 완료되면 다시 배포하면 됩니다.

확장

필요성과 복잡성이 높아짐에 따라 확장이 가능한 프레임워크를 선택하는 것이 좋을 것입니다. 몇 년 동안 ASP.NET에는 이를 위한 많은 부분이 추가되었습니다. 이제 필요한 모든 기능이 풍부하게 준비되어 있으며 이를 우리의 필요에 맞게 연결하기만 하면 됩니다. 그림 1에서 모든 기능이 ASP.NET, 그리고 나아가 .NET에 기반을 두고 있음을 확인했습니다. 이것은 WebMatrix 응용 프로그램을 Visual Studio로 마이그레이션하는 것도 가능하다는 의미입니다. 실제로 한 번의 단추 클릭으로 가능합니다.

WebMatrix 리본을 잘 보면 오른쪽 위 구석에서 Visual Studio에서 여는 단추를 찾을 수 있습니다. 이 단추를 클릭하면 여러분의 사이트를 Visual Studio에서 ASP.NET 사이트로 엽니다. 그러나 핵심 웹 사이트를 중지하지는 않습니다. 데이터베이스도 있을 가능성이 높은데, 어떤 SQL Compact 데이터베이스라도 상위 SQL Server로 이식할 수 있습니다. WebMatrix는 데이터베이스 메뉴에 있는 마이그레이션 단추를 통해 이 마이그레이션 프로세스를 지원합니다.

요약하자면 WebMatrix는 모두를 위한 도구로 설계되었으며 Visual Studio도 보완합니다. WebMatrix를 어떻게 활용할 것인가 하는 것은 수행하려는 작업에 따라 달라지겠지만 유용한 도구임에는 틀림이 없습니다. 활용할 수 있는 ASP.NET의 조각들을 가져오고 선택하는 과정을 매끄럽게 수행할 수 있으며 Visual Studio와 SQL Server로 마이그레이션하는 과정 또한 매끄럽습니다. 도우미와 새로운 레이아웃 하위 시스템이 도입되어 재사용이 현실이 되었습니다. 사이트를 처음부터 만드는 것이 그다지 마음에 들지 않는다면 WebMatrix에서 Umbraco 또는 WordPress와 같은 입증된 응용 프로그램을 WebPI에 나열하고 곧바로 호스팅 공급자에 배포할 수 있습니다.

아쉽게도 이 기사에서는 캐싱, 라우팅 및 디버깅과 같은 많은 기능을 다루지 못했습니다. 이 기사에 사용된 모든 링크는 bit.ly/IntroToWebMatrix에서 찾을 수 있습니다.

Clark Sell 은 시카고 외각에서 Microsoft 선임 개발자 전도사로 일하고 있습니다. 블로그 (csell.net) 와 podcast(DeveloperSmackdown.com), 그리고 Twitter (twitter.com/csell5) 로 그를 만날수 있습니다.

이 문서를 검토하는 데 많은 도움을 주신 기술 전문가인 Erik Porter,Mark Nichols, 그리고 Brandon Satrom 에게 감사 인사를 전합니다.