2007년 12월 27일
[닷넷 웹서비스 예제] Visual Studio에서 웹서비스 만들기 ①
Last Modified |
★ 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] 버튼을 누른다.

참고로 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 파일, 로컬 파일에 저장된 기타 데이터 등을 포함.
+ .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 파일을 제공할 수 있다.
6. 웹 사이트 이름 (C:\localhost\TempWebServiceTest\) 를 마우스 우클릭하고, Add New Item을 클릭한다.

+ 자동으로 code-behind 파일을 생성하려면 [Place code in seperate file] 을 체크한다.
7. 생성된 Convert.asmx 와 Convert.cs

7-1. Convert.asmx - 처리 지시문
ㆍXML Web Service 의 구현을 찾을 위치를 결정한다.
ㆍXML Web Service 기능을 구현하는 클래스 등 필요한 정보를 ASP.NET 환경에 제공한다.
ㆍ웹 서비스 메서드를 호출한다.
<%@ 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"; } 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]를 선택) 웹 서비스를 실행한다.

+ ASP.NET은 ASP.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 )

http://localhost/TempWebServiceTest/Convert.asmx?wsdl 로 접속하면 "WSDL 파일" 을 볼 수 있다.
9. 웹 서비스 테스트 - CelsiusToFahrenheit 를 클릭하면 하단의 그림과 같은 창이 뜬다.
Value 에 100을 입력한 후 [Invoke] 버튼을 누르면 새 창이 뜨며 결과값(212) 이 xml 로 뜬다.


여기서 응답한 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 권남
- .net framework library source code 공개 by 김명신
- 1. 웹 서버 동작 방법 개요 by jessica
- Microsoft.com 웹 사이트 업데이트 by decoder
- [VB6] RSS Reader by 웡구
# by | 2007/12/27 19:49 | [P] Web Services | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]