SQLER 처음 가입했을때 Razor 에 대한 관심사가 정말 많은거에 감동해서 MVC 없이 Razor 돌릴 수 있는지 물어봤더니 왜.................................................왜............................................왜...냐는군요.


그렇게 하면 안됩니까?ㅠㅠ


그래서 스스로 찾았습니다. 구글신을 절 버리지 않더군요.

바로 Razor Engine입니다.


http://razorengine.codeplex.com


Razor 뷰 엔진을 완전히 원시적으로 접근하여 범용으로 쓸 수 있게 만들어주는 템플릿 프레임워크입니다.

그래서 활용 범위는 C#이나 VB 관련 프로젝트라면 모두 가능하다는 점이죠. 심지어 응용 프로그램에서까지 지원합니다.

당연히 활용 분야는 MVC가 아닌 그냥 웹 응용 프로그램 및 웹 사이트입니다.

또한 오픈 소스(MS-PL 라이센스)이기 때문에 전혀 부담이 없습니다.

MVC 2요? 흐음.. 모르겠습니다.ㅋ


어쨌든 사용 예제를 보면서 어떻게 돌아가는지 보겠습니다.


기본 템플릿 해석 예시

  string template = "Hello @Model.Name! Welcome to Razor!"
  string result = Razor.Parse(template, new { Name = "World" });

익명 클래스도 지원됩니다.ㅋ

인라인 도우미 지원

  string template = 
  @"@helper MyMethod(string name) {
      Hello @name
  }
  @MyMethod(Model.Name)! Welcome to Razor!";
  string result = Razor.Parse(template, new { Name = "World" });

Razor를 만지신 분들에게 도우미의 유용성은 말이 필요없죠.

전처리 템플릿

You can precompile your templates before use if you have any really nontrivial views to compile.
    string template = "Some really complex template that will take time to parse";
    
    Razor.Compile(template, "complex");
    Razor.Run("complex");

If your template requires a model you can pass in your model type or, if your type is anonymous, you can call the CompileWithAnonymous() method. It is not necessary to pass in your Anonymous type.
    Razor.Compile(template, typeof(SomeModel), "complex");
    Razor.CompileWithAnonymous(template, "complex");

web.config 에서 설정을 함으로써 MediumTrust 신뢰도 세팅으로 Razor 웹 사이트 환경을 구축할 수 있습니다.

이때, http://razorengine.codeplex.com/releases 페이지에 가서 Razor Web 어셈블리를 추가하셔야 세팅이 됩니다.

Step 1 - RazorVirtualPathProvider 클래스 초기화

먼저 어플리케이션 시작시 RazorVirtualPathProvider 클래스를 등록해 BuildManager 클래스가 Razor 템플릿을 인식하고 처리하게 합니다.

protected void Application_Start()
{
    HostingEnvironment.RegisterVirtualPathProvider(new RazorVirtualPathProvider());
}

Step 2 - RazorEngine 설정 영역 추가

MediumTrust 신뢰도로 Razor 뷰를 해석할 수 있도록 web.config 에 추가하는 예제입니다. WebCompilerServiceFactory 클래스를 이용함으로써 이 서비스를 활성화시킵니다.

<configuration>
    <configSections>
        <section name="razorEngine" type="RazorEngine.Configuration.RazorEngineConfigurationSection, RazorEngine" requirePermission="false" />
    </configSections>

    <razorEngine factory="RazorEngine.Web.WebCompilerServiceFactory, RazorEngine.Web" />
</configuration>

Step 3 - BuildProviders 설정

필자는 ".csrzr" 와 ".vbrzr" 를 확장자로 설정하여 BuildProvider 클래스가 해당 확장자를 인식해 해석할 수 있도록 합니다. 필자의 경우는 이미 MVC3에 존재하는 cshtml 및 vbhtml 확장자와 햇갈리는 점을 방지하기 위해서 이렇게 세팅했답니다.

<configuration>
    <system.web>
        <buildProviders>
            <add extension=".csrzr" type="RazorEngine.Web.CSharp.CSharpRazorBuildProvider, RazorEngine.Web" />
            <add extension=".vbrzr" type="RazorEngine.Web.VisualBasic.VBRazorBuildProvider, RazorEngine.Web" />
        </buildProviders>
    </system.web>
</configuration>


이제 웹 응용 프로그램에 Razor 템플릿 세팅은 끝났습니다.


이 패키지는 NuGet 확장을 설치한 분이 있다면 다음과 같은 명령어로 바로 세팅이 가능하다고 합니다.


Install-Package RazorEngine

이제 Razor 템플릿 엔진을 다양한 분야에 사용할 수 있는 시대가 왔습니다. 역시 최고!





profile
20대 언제나 쿨한 개발(犬足)자.