[닷넷 웹서비스 예제] Visual Studio에서 웹서비스 만들기 ①


  Last Modified 2007/12/27
  by ides
  http://tequiero35.egloos.com/

  ** Environment : Visual Studio 2008
                               .NET Framework 3.5



★ Visual Studio 에서 ASP.NET Web Service 만들기



Visual Studio .NET 의 중요한 부분은 웹을 기반으로 하는 분산 응용 프로그램을 작성할 수 있다는 것이다.
Visual Studio .NET을 사용하면 Web Forms 페이지를 사용해 응용 프로그램 사용자 인터페이스를 만들고, XML Web services를 사용하여 구성 요소를 만들 수 있다.

  • Web Forms : 고객이 응용 프로그램에 액세스할 때 기존 웹 브라우저를 사용하는지 모바일 장치를 사용하는지에 관계 없이 웹 기반의 응용 프로그램을 위한 사용자 인터페이스를 만들 수 있는 ASP.NET 기술.
    Web Forms 페이지를 사용하면 웹 서버의 처리를 수행하는 브라우저 중립적인 UI를 만들 수 있으므로 사용자 인터페이스의 브라우저별 또는 장치별 버전을 만들 필요가 없다.
  • XML Web services : 서버에서 실행되며 일반적으로 비즈니스 논리를 포함하는 구성 요소.
    XML Web services는 일반 구성 요소와 마찬가지로 특정 기능을 캡슐화하고 다른 프로그램에서 호출할 수 있다. 그러나 웹 프로토콜을 통해 사용할 수 있으므로 여러 컴퓨터 및 여러 운영 체제에서 여러 언어로 실행되는 프로그램과 호환되게 할 수 있다.

 

 


1. [File] > [New] > [Web Site] 를 클릭한다.

2. Templates 에서 만들 웹 사이트의 형식과 Language 를 지정하는 창이 뜬다. 

    그림과 같이 [ASP.NET Web Service] 를 선택하고,
    파일들이 위치할 장소(C:\WebSites\WebSite1)와 프로그래밍 언어(Visual C#)를 선택한 후 [OK] 버튼을 누른다.

Visual Studio 2008 에서는 Framework 를 선택할 수 있다. (우측 상단에 보면 버전을 선택할 수 있다.)
참고로 VS 2008 Express Web Developer 에서는 Framework 선택부분이 나타나지 않는다.


3. [Browse…] 버튼을 누르면 Choose Location 대화상자가 뜬다.
    좌측의 Local IIS 를 클릭한 다음 "기본 웹 사이트" 를 클릭하고
    우측 상단의 "Create New Web Application" 버튼을 클릭한다. (로컬 IIS 가상 디렉터리 만드는 법 참조)


4. TempWebServiceTest 라는 이름으로 디렉터리를 생성한다. [Open] 을 클릭한다.



5. 생성된 프로젝트

    Visual Studio에서 ASP.NET Web Service 프로젝트를 만들면 웹 서버에 웹 응용 프로그램 프로젝트 구조를 생성하고
    사용자 로컬 컴퓨터에 Visual Studio 솔루션 파일을 생성한다.

  • 솔루션 파일(.sln) : 구성 및 빌드 설정을 포함하고 프로젝트와 관련된 파일 목록을 유지한다.
  • App_Code 폴더 : 응용 프로그램의 실행 시에 동적으로 컴파일 소스 파일을 저장.
  • App_Data 폴더 : Microsoft Access 데이터베이스(.mdb 파일), XML 파일, 로컬 파일에 저장된 기타 데이터 등을 포함.
ㆍWeb Site File Type

   + .cs : App_Code subdirectory, or in the case of a code-behind file for an ASP.NET page,
              in the same directory as the Web page.
   + .asmx : Application root or a subdirectory. 
                  웹 서비스를 호출하는 기본 URL 역할을 한다. 
                  메서드와 클래스를 포함하는 XML 웹 서비스 파일은 SOAP을 이용하는 다른 웹 어플리케이션에서 이용될 수 있다.
                  For more information, see
XML Web Services Publishing and Deployment.
   + web.config : 기본 구성 설정.
                          XML Web services 구성 파일을 사용하여 시스템을 사용자 지정하고 확장할 있다.

                         예를 들어, XML Web services에는 인증이 필요하지만 시스템에 있는 다른 응용 프로그램에는 
                         인증이 필요 없는 경우 해당 XML Web services만의 Web.config 파일을 제공할 수 있다.

                         cf.  web.config 의 구성


6. 사이트 이름 (C:\localhost\TempWebServiceTest\) 마우스 우클릭하고, Add New Item 클릭한다.

   + Templates 에서 "Web Service"를 선택하고, Name 은 "Convert.asmx" 로 한다.
   + 자동으로 code-behind 파일을 생성하려면 [Place code in seperate file] 을 체크한다.


7. 생성된 Convert.asmx Convert.cs


7-1. Convert.asmx - 처리 지시문

XML Web Service 의 구현을 찾을 위치를 결정한다.
XML Web Service 기능을 구현하는 클래스 필요한 정보를 ASP.NET 환경에 제공한다.

ㆍ웹 서비스 메서드를 호출한다.

ㆍ웹 서비스는 다중 클래스를 포함할 수 있으나, 클래스들 중 하나만 WebMethod 속성으로 표시된 메서드를 가질 수 있다.

<%@ WebService Language="C#" CodeBehind="~/App_Code/Convert.cs" Class="Convert" %>


+ Language : XML Web Service 를 개발하는데 사용하는 프로그래밍 언어.
+ CodeBehind : managed code로 만들어진 웹 서비스를 구현한 CodeBehind 파일.
+ Class : 코드 숨김 파일의 어떤 클래스에서 웹 서비스를 구현하는지 나타낸다.

  cf. @ WebService Directive


7-2. Convert.cs - 서비스 코드

+ 기본적으로 HelloWorld 메서드가 구현되어 있다.
+ 아래 부분의 FahrenheitToCelsius 와 CelsiusToFahrenheit 를 추가하고 저장한다.

using System;

using System.Collections;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Xml.Linq;                            

 

[WebService(Namespace = "http://tempuri.org/")]                                

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]                 

// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.

// [System.Web.Script.Services.ScriptService]

public class Convert : System.Web.Services.WebService {

    public Convert () {

        //Uncomment the following line if using designed components

        //InitializeComponent();

    }

    [WebMethod]                                                                  

    public string HelloWorld() {

        return "Hello World";

    }  
   
[WebMethod]

    public double FahrenheitToCelsius(double Fahrenheit)                                        

     

        return ((Fahrenheit - 32) * 5) / 9;                                                              

    }                                                                                                              

    [WebMethod]

    public double CelsiusToFahrenheit(double Celsius)                                              

    {                                                                                                        

              return ((Celsius * 9) / 5) + 32;                                                            

    }                                                                                                              

}





8. Ctrl + F5 를 눌러(혹은 Convert.asmx 를 마우스 우클릭 후 [View in Browser]를 선택) 웹 서비스를 실행한다. 

+ 웹 서비스에 의해 노출된 서비스를 보여준다. ( http://localhost/TempWebServiceTest/Convert.asmx )

+ ASP.NETASP.NET 웹 서비스 도움말 파일 템플릿을 제공한다. 
   웹 서비스 도움말 파일 템플릿은 HTTP Get 요청을 받자마자 프로그램적으로 .asmx 파일에 있는 코드를 검사하고 (reflection)
   아래 그림과 같은 UI를 생성한다.
   이런 일을 수행하는 템플릿 페이지은 DefaultWsdlHelpGenerator.aspx 이다. 
   (위치 :
\WinNT\Microsoft.NET\Framework\[version]\
        xp 기준 → C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\DefaultWsdlHelpGenerator.aspx
)


첫번째 줄의 "Service Description" 을 클릭하거나
http://localhost/TempWebServiceTest/Convert.asmx?wsdl
 로 접속하면 "WSDL 파일" 을 볼 수 있다.


9. 웹 서비스 테스트 - CelsiusToFahrenheit 를 클릭하면 하단의 그림과 같은 창이 뜬다.
    Value 에 100을 입력한 후 [Invoke] 버튼을 누르면 새 창이 뜨며 결과값(212) 이 xml 로 뜬다.

페이지의 하단에서 SOAP 샘플을 볼 수 있다.


Test 하는 부분을 보면 SOAP이 아닌 HTTP POST 프로토콜을 사용해 값을 전달했기 때문에
여기서 응답한 XML 파일은 SOAP 형식이 아니다.

 





<REFERENCE>
http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vbcon/html/vbtskCreatingWebProject.asp
http://msdn2.microsoft.com/en-us/library/aa712881(VS.71).aspx (영문판)
http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vbcon/html/vboricreatingwebdistributedappsvb.asp
http://msdn2.microsoft.com/en-us/library/68zt3df9(vs.71).aspx
http://msdn2.microsoft.com/en-us/library/8wbhsy70.aspx
http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vbcon/html/vbconCodeModelForWebServicesInManagedCode.asp
HOONS 닷넷과 함께하는 .NET Framework 3.0

by ides | 2007/12/27 19:49 | [P] Web Services | 트랙백 | 덧글(0)

트랙백 주소 : http://tequiero35.egloos.com/tb/1100701
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶