다음을 통해 공유


관리 코드의 웹 서비스를 위한 코드 모델

업데이트: 2007년 11월

웹 서비스는 웹 서비스 기능을 구현하는 코드와 웹 서비스 진입점 등 두 부분으로 구성됩니다. ASP.NET에서 .asmx 파일은 웹 서비스를 위한 주소 지정 가능한 진입점 역할을 하는 텍스트 파일입니다. 이 파일에서는 미리 컴파일된 어셈블리의 코드, 코드 숨김 파일 또는 .asmx 파일 자체에 포함된 코드를 참조합니다.

참고:

코드가 .asmx 파일 자체에 포함된 경우 ASP.NET에서는 필요할 때 서버에서 이 파일을 컴파일합니다.

.asmx 파일의 맨 위에 있는 WebService 처리 지시문은 웹 서비스의 구현을 찾을 위치를 결정합니다. ASP.NET 웹 서비스 프로젝트 템플릿을 사용하여 웹 서비스를 만드는 경우, Visual Studio는 기본적으로 Service1.asmx.vb 또는 Service1.asmx.cs 같은 코드 숨김 파일을 사용합니다.

참고:

Visual Studio에서는 서로 다른 언어 사이의 컴파일을 지원하지 않습니다. 예를 들어 Visual C# 웹 서비스를 Visual Basic ASP.NET 웹 응용 프로그램 프로젝트에 포함할 수 없으며 그 반대의 경우도 마찬가지입니다.

관리 코드를 사용하는 웹 서비스를 빌드하면 ASP.NET에서 자동으로 인프라를 제공하고 SOAP 메시지를 구문 분석하고 만드는 작업을 포함하여 모든 웹 서비스 요청과 응답을 처리해 줍니다.

WebService 처리 지침

.asmx 페이지의 맨 위에는 웹 서비스 구현에 관한 정보를 특성 형식으로 포함하는 WebService 처리 지시문이 있습니다. 이 처리 지시문은 웹 서비스 기능을 구현하는 클래스 등 ASP.NET 환경에 필요한 정보를 제공합니다. WebService 처리 지시문의 예제가 다음에 나와 있습니다.

[Visual Basic]
<%@ WebService Language="vb" Codebehind="Service1.asmx.vb"
    Class="WebService1.Service1" %>


[C#]
<%@ WebService Language="c#" Codebehind="Service1.asmx.cs"
    Class="WebService1.Service1" %>

Language 특성은 웹 서비스를 개발하는 데 사용하는 프로그래밍 언어를 나타냅니다. Visual Basic .NET 또는 Visual C#처럼 .NET과 호환되는 모든 언어로 웹 서비스를 만들 수 있습니다.

Visual Studio .NET을 사용하여 관리 코드로 웹 서비스를 만들면 코드 숨김 파일에 웹 서비스의 구현이 저장됩니다. 코드 숨김 파일은 Codebehind 특성을 사용하는 .asmx 페이지에 연결되어 있습니다.

참고:

이 특성은 Visual Studio에서 웹 서비스 프로젝트를 관리하는 것을 도와주며 런타임에는 필요하지 않습니다.

ASP.NET 웹 서비스 프로젝트 템플릿을 사용할 경우, Class 특성은 코드 숨김 파일의 어떤 클래스에서 웹 서비스의 기능을 구현하는지를 나타냅니다.

ASP.NET 웹 서비스 프로젝트 템플릿을 사용하면 Visual Studio .NET에서 이 처리 지시문을 .asmx 파일에 자동으로 삽입합니다.

팁:

클래스 이름을 바꾸려는 경우 WebService 지시문의 Class 특성에서 클래스 이름을 변경해야 합니다.

참고:

.asmx 파일의 내용을 보려면 솔루션 탐색기에서 .asmx 파일을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 연결프로그램을 클릭합니다. 연결 프로그램 대화 상자에서 소스 코드(텍스트) 편집기를 선택한 후 열기를 클릭합니다.

자세한 내용은 연습: ASP.NET을 사용하여 기본적인 XML Web services 빌드를 참조하십시오.

System.Web.Services.WebService 클래스

웹 서비스를 위한 선택적인 기본 클래스를 정의하는 System.Web.Services.WebService 클래스를 사용하면 응용 프로그램 상태나 세션 상태 등에 대한 공용 ASP.NET 개체를 직접 액세스할 수 있습니다. Visual Studio를 사용하여 관리 코드로 만들어진 웹 서비스는 기본적으로 이 클래스에서 상속됩니다. 웹 서비스는 이 클래스에서 상속됨으로써 Request 개체나 Session 개체 같은 ASP.NET의 내장 개체에 대한 액세스 권한을 얻을 수 있습니다. 자세한 내용은 WebService 클래스를 참조하십시오.

웹 서비스가 이 클래스에서 상속되지 않은 경우 System.Web.HttpContext.Current를 사용하여 ASP.NET 내장 개체에 액세스할 수 있습니다. 웹 서비스를 구현하는 클래스는 공용이어야 하고 공용 기본 생성자(매개 변수가 없는 생성자)를 가지고 있어야 합니다. 이로써 ASP.NET에서 들어오는 웹 서비스 요청을 처리하는 웹 서비스 클래스의 인스턴스를 만들 수 있게 됩니다. 자세한 내용은 HttpContext.Current 속성을 참조하십시오.

[Visual Basic]
Imports System.Web.Services
Public Class Service1
   Inherits System.Web.Services.WebService
   ' Implementation code.
End Class


[C#]
using System.Web.Services;
public class Service1 : System.Web.Services.WebService
{
   // Implementation code.
}

자세한 내용은 WebService 클래스에서 상속을 참조하십시오.

WebService 특성

여러 웹 서비스에서 동일한 메서드 이름을 사용하더라도 클라이언트 응용 프로그램에서 각 웹 서비스를 구별할 수 있도록 웹 서비스마다 고유한 네임스페이스를 사용해야 합니다. Visual Studio .NET에서 만들어진 웹 서비스의 기본 네임스페이스는 "http://tempuri.org/WebService1/Service1"입니다. 여기서 WebService1은 프로젝트 이름이고 Service1은 클래스 이름입니다. 네임스페이스는 URL과 비슷하지만 고유 식별자일 뿐이므로 웹 브라우저에서 항상 볼 수 있는 것은 아닙니다.

참고:

제공하는 웹 서비스에 대한 정보가 포함된 웹 페이지를 그 위치에 제공할 수도 있습니다.

WebService 특성을 사용하면 네임스페이스를 지정하고 웹 서비스에 대한 간략한 설명을 제공할 수 있습니다. 쿼리 문자열을 지정하지 않고 브라우저에서 웹 서비스를 호출하면 서비스 도움말 페이지에 간략한 설명이 표시됩니다.

[Visual Basic]
<System.Web.Services.WebService( _ 
   Namespace:="http://tempuri.org/WebService1/Service1", _ 
   Description:="A short description of the Web service.")> _
Public Class Service1
   Inherits System.Web.Services.WebService
   ' Implementation code.
End Class


[C#]
[System.Web.Services.WebService( 
   Namespace="http://tempuri.org/WebService1/Service1",  
   Description="A short description of the Web service.")] 
public class Service1 : System.Web.Services.WebService
{
   // Implementation code.
}

자세한 내용은 WebServiceAttribute 클래스WebService 특성 사용을 참조하십시오.

WebMethod 특성 적용

메서드를 웹 서비스의 일부로 노출하려면 노출할 각각의 공용 메서드 선언 앞에 WebMethod 특성을 삽입해야 합니다. 자세한 내용은 방법: 웹 서비스 메서드 만들기를 참조하십시오.

[Visual Basic]
<System.Web.Services.WebMethod()> _
Public Function MyString(ByVal x as string) As String
   ' Implementation code.
End Function


[C#]
[System.Web.Services.WebMethod()] 
public string MyString(string x) 
{
   //implementation code
}

WebMethod 특성에는 웹 서비스의 동작 구성을 위한 몇 가지 속성이 포함되어 있습니다. 자세한 내용은 WebMethodAttribute 클래스WebMethod 특성 사용을 참조하십시오. 예를 들어 이 특성을 사용하면 웹 서비스와 연결되어 있는 서비스 도움말 페이지에 간단한 설명을 표시할 수 있습니다.

[Visual Basic]
<System.Web.Services.WebMethod( _ 
   Description:="A short description of this method.")> _
Public Function MyString(ByVal x as string) As String
   ' Implementation code.
End Function


[C#]
[System.Web.Services.WebMethod( 
   Description="A short description of this method.")] 
public string MyString(string x) 
{
   // Implementation code.
}

속성을 여러 개 사용할 때는 각 속성을 쉼표로 구분합니다. 예를 들어 설명을 제공하고 웹 서비스의 결과를 60초 동안 캐시하려면 다음과 같이 합니다.

[Visual Basic]
<System.Web.Services.WebMethod( _ 
   Description:="A short description of this method.", _ 
           CacheDuration:=60)> _
Public Function MyString(ByVal x as string) As String
   ' Implementation code.
End Function


[C#]
[System.Web.Services.WebMethod( 
   Description="A short description of this method.", 
   CacheDuration=60)] 
public string MyString(string x) 
{
   // Implementation code.
}

요약

각 웹 서비스는 .asmx 파일과 웹 서비스 클래스로 구성됩니다. .asmx 파일에는 클래스를 참조하는 WebService 처리 지시문이 포함되어 있습니다. 웹 서비스 클래스는 공용이며, 공용 기본 생성자를 가지며, WebMethod 특성으로 표시된 공용 메서드를 하나 이상 포함합니다. 다음은 프로젝트, 클래스, 메서드 및 결과로 만들어지는 웹 서비스 사이의 관계를 보여 주는 다이어그램입니다.

WebService 클래스 및 결과 항목

참고 항목

개념

관리 코드의 웹 서비스 액세스를 위한 코드 모델

기타 리소스

관리 코드로 웹 서비스 만들기