다음을 통해 공유


OWIN 및 Katana 시작

OWIN(Open Web Interface for .NET) 은 .NET 웹 서버와 웹 애플리케이션 간의 추상화 를 정의합니다. OWIN은 애플리케이션에서 웹 서버를 분리하여 .NET 웹 개발을 위한 미들웨어를 더 쉽게 만들 수 있습니다. 또한 OWIN을 사용하면 웹 애플리케이션을 다른 호스트(예: Windows 서비스 또는 기타 프로세스에서 자체 호스팅)로 쉽게 이식할 수 있습니다.

OWIN은 구현이 아닌 커뮤니티 소유 사양입니다. Katana 프로젝트는 Microsoft에서 개발한 오픈 소스 OWIN 구성 요소 집합입니다. OWIN 및 Katana에 대한 일반적인 개요는 Project Katana 개요를 참조하세요. 이 문서에서는 코드로 바로 이동하여 시작합니다.

이 자습서에서는 Visual Studio 2013 릴리스 후보를 사용하지만 Visual Studio 2012를 사용할 수도 있습니다. Visual Studio 2012에서는 몇 가지 단계가 다릅니다. 아래에서 확인합니다.

IIS에서 OWIN 호스트

이 섹션에서는 IIS에서 OWIN을 호스트합니다. 이 옵션은 완성도 높은 IIS 기능 집합과 함께 OWIN 파이프라인의 유연성과 구성성을 제공합니다. 이 옵션을 사용하면 OWIN 애플리케이션이 ASP.NET 요청 파이프라인에서 실행됩니다.

먼저 새 ASP.NET 웹 애플리케이션 프로젝트를 만듭니다. (Visual Studio 2012에서는 ASP.NET 빈 웹 애플리케이션 프로젝트 형식을 사용합니다.)

새 ASP.NET 프로젝트 그림

새 ASP.NET 프로젝트 대화 상자에서 템플릿을 선택합니다.

예제 그림

NuGet 패키지 추가

다음으로 필요한 NuGet 패키지를 추가합니다. 도구 메뉴에서 NuGet 패키지 관리자를 선택한 다음 패키지 관리자 콘솔을 선택합니다. 패키지 관리자 콘솔 창에서 다음 명령을 입력합니다.

install-package Microsoft.Owin.Host.SystemWeb –Pre

패키지 관리자 설치, 예제 그림

시작 클래스 추가

다음으로 OWIN 시작 클래스를 추가합니다. 솔루션 탐색기 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 선택한 다음 새 항목을 선택합니다. 새 항목 추가 대화 상자에서 Owin 시작 클래스를 선택합니다. 시작 클래스를 구성하는 방법에 대한 자세한 내용은 OWIN 시작 클래스 검색을 참조하세요.

시작 클래스 예제 추가

Startup1.Configuration 메서드에 다음 코드를 추가합니다.

public void Configuration(IAppBuilder app)
{
    // New code:
    app.Run(context =>
    {
        context.Response.ContentType = "text/plain";
        return context.Response.WriteAsync("Hello, world.");
    });
}

이 코드는 Microsoft.Owin.IOwinContext instance 수신하는 함수로 구현된 간단한 미들웨어를 OWIN 파이프라인에 추가합니다. 서버가 HTTP 요청을 받으면 OWIN 파이프라인은 미들웨어를 호출합니다. 미들웨어는 응답의 콘텐츠 형식을 설정하고 응답 본문을 씁니다.

참고

OWIN 시작 클래스 템플릿은 Visual Studio 2013 사용할 수 있습니다. Visual Studio 2012를 사용하는 경우 라는 Startup1빈 클래스를 새로 추가하고 다음 코드를 붙여넣습니다.

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(OwinApp.Startup1))]

namespace OwinApp
{
    public class Startup1
    {
        public void Configuration(IAppBuilder app)
        {
          app.Run(context =>
          {
              context.Response.ContentType = "text/plain";
              return context.Response.WriteAsync("Hello, world.");
          });
        }
    }
}

애플리케이션 실행

F5를 눌러 디버깅을 시작합니다. Visual Studio에서 에 대한 브라우저 창이 http://localhost:*port*/열립니다. 페이지는 다음과 같아야 합니다.

페이지 로드 성공 그림

콘솔 애플리케이션에서 OWIN Self-Host

사용자 지정 프로세스에서 이 애플리케이션을 IIS 호스팅에서 자체 호스팅으로 쉽게 변환할 수 있습니다. IIS 호스팅을 사용하면 IIS는 HTTP 서버와 서비스를 호스트하는 프로세스의 역할을 합니다. 자체 호스팅을 사용하면 애플리케이션이 프로세스를 만들고 HttpListener 클래스를 HTTP 서버로 사용합니다.

Visual Studio에서 새 콘솔 애플리케이션을 만듭니다. 패키지 관리자 콘솔 창에서 다음 명령을 입력합니다.

Install-Package Microsoft.Owin.SelfHost -Pre

이 자습서의 Startup1 1부에서 프로젝트에 클래스를 추가합니다. 이 클래스를 수정할 필요가 없습니다.

다음과 같이 애플리케이션의 Main 메서드를 구현합니다.

class Program
{
    static void Main(string[] args)
    {
        using (Microsoft.Owin.Hosting.WebApp.Start<Startup1>("http://localhost:9000"))
        {
            Console.WriteLine("Press [enter] to quit...");
            Console.ReadLine();
        }
    }
}

콘솔 애플리케이션을 실행하면 서버에서 수신 대기를 http://localhost:9000시작합니다. 웹 브라우저에서 이 주소로 이동하면 "Hello world" 페이지가 표시됩니다.

콘솔 수신 대기 이미지 예제

OWIN 진단 추가

Microsoft.Owin.Diagnostics 패키지에는 처리되지 않은 예외를 catch하고 오류 세부 정보가 포함된 HTML 페이지를 표시하는 미들웨어가 포함되어 있습니다. 이 페이지는 "죽음의 노란색 화면"(YSOD)이라고도 하는 ASP.NET 오류 페이지와 매우 유사합니다. YSOD와 마찬가지로 Katana 오류 페이지는 개발 중에 유용하지만 프로덕션 모드에서 사용하지 않도록 설정하는 것이 좋습니다.

프로젝트에 진단 패키지를 설치하려면 패키지 관리자 콘솔 창에서 다음 명령을 입력합니다.

install-package Microsoft.Owin.Diagnostics –Pre

메서드의 Startup1.Configuration 코드를 다음과 같이 변경합니다.

public void Configuration(IAppBuilder app)
{
    // New code: Add the error page middleware to the pipeline. 
    app.UseErrorPage();

    app.Run(context =>
    {
        // New code: Throw an exception for this URI path.
        if (context.Request.Path.Equals(new PathString("/fail")))
        {
            throw new Exception("Random exception");
        }

        context.Response.ContentType = "text/plain";
        return context.Response.WriteAsync("Hello, world.");
    });
}

이제 Visual Studio가 예외에서 중단되지 않도록 Ctrl+F5를 사용하여 디버깅 없이 애플리케이션을 실행합니다. 애플리케이션은 로 이동할 http://localhost/fail때까지 이전과 동일하게 동작하며, 이때 애플리케이션은 예외를 throw합니다. 오류 페이지 미들웨어는 예외를 catch하고 오류에 대한 정보가 포함된 HTML 페이지를 표시합니다. 탭을 클릭하여 스택, 쿼리 문자열, 쿠키, 요청 헤더 및 OWIN 환경 변수를 볼 수 있습니다.

임의 엑세션 이미지 예제

다음 단계