연습: Visual Web Developer에서 ASP.NET 웹 서비스 생성 및 사용
업데이트: 2007년 11월
Microsoft Visual Studio에서는 웹 페이지를 만들 수 있을 뿐 아니라 ASP.NET XML을 사용하는 웹 서비스도 만들 수 있습니다. Visual Studio에서 웹 서비스를 만드는 과정은 웹 페이지를 만드는 과정과 비슷합니다. 또한 Microsoft Visual Web Developer 웹 개발 도구를 사용하면 Visual Web Developer 솔루션에 있는 웹 서비스를 로컬 컴퓨터나 로컬 또는 외부 UDDI 디렉터리에서 참조하고 사용할 수 있습니다. 이 연습에서는 한 솔루션에서 웹 서비스를 만들고 이 서비스를 다른 솔루션에서 사용합니다.
이 연습에서 수행할 작업은 다음과 같습니다.
Visual Web Developer에서 간단한 XML Web service 만들기
이 웹 서비스를 사용하는 별도의 웹 사이트 만들기
사전 요구 사항
이 연습을 따라 하려면 다음과 같은 요건을 갖추어야 합니다.
- 로컬 컴퓨터에 설치되어 있는 Microsoft IIS(인터넷 정보 서비스)
IIS 루트 아래에 웹 서비스 만들기
다음 단계에 따라 새 웹 서비스와 페이지를 만듭니다.
참고: |
---|
이 연습에서는 IIS 웹 사이트를 사용해야 합니다. |
웹 서비스를 만들려면
Visual Web Developer를 엽니다.
파일 메뉴에서 새 웹 사이트를 클릭합니다.
새 웹 사이트 대화 상자가 나타납니다.
Visual Studio에 설치되어 있는 템플릿에서 ASP.NET 웹 서비스를 클릭합니다.
찾아보기를 클릭합니다.
로컬 IIS를 클릭합니다.
기본 웹 사이트를 클릭합니다.
새 웹 응용 프로그램 만들기를 클릭합니다.
Visual Web Developer는 새 IIS 웹 응용 프로그램을 만듭니다.
이름을 TemperatureWebService라고 입력합니다.
열기를 클릭합니다.
맨 오른쪽의 위치 목록에 새 웹 사이트 이름이 표시된 새 웹 사이트 대화 상자가 나타납니다. 위치에는 프로토콜(http://)과 위치(localhost)가 포함되어 있습니다. 이것은 로컬 IIS 웹 사이트를 사용하고 있음을 나타냅니다.
언어 목록에서 작업할 프로그래밍 언어를 클릭합니다.
선택하는 프로그래밍 언어는 웹 사이트의 기본 언어가 됩니다. 그러나 동일한 웹 응용 프로그램에서 다른 프로그래밍 언어로 페이지와 구성 요소를 만들어 둘 이상의 언어를 사용할 수 있습니다. 여러 언어를 사용하여 구성 요소를 만드는 방법에 대한 자세한 내용은 ASP.NET 웹 사이트의 공유 코드 폴더를 참조하십시오.
확인을 클릭합니다.
Visual Web Developer는 새 웹 서비스를 만들고 기본 웹 서비스인 Service라는 새 클래스를 엽니다. 그러나 다음 절차에서는 지정된 이름을 갖는 새 웹 서비스를 만들고 Service 클래스를 사용하지 않습니다.
Service 클래스를 닫습니다.
웹 서비스 만들기
온도를 화씨에서 섭씨로 또는 그 반대로 변환하는 웹 서비스를 만듭니다.
웹 서비스를 만들려면
솔루션 탐색기에서 마우스 오른쪽 단추로 웹 사이트 이름(https://localhost/TemperatureWebService)을 클릭한 다음 새 항목 추가를 클릭합니다.
Visual Studio에 설치되어 있는 템플릿에서 웹 서비스를 클릭한 다음 이름 상자에 Convert를 입력합니다.
다른 파일에 코드 입력 확인란이 선택되었는지 확인한 다음 추가를 클릭합니다.
Visual Web Developer는 두 개의 파일로 구성된 새 웹 서비스를 만듭니다. Convert.asmx 파일은 웹 서비스 메서드를 호출하기 위해 호출될 수 있으며 웹 서비스의 코드를 가리킵니다. 코드 자체는 App_Code 폴더의 클래스 파일(프로그래밍 언어에 따라 Convert.vb, Convert.cs 또는 Convert.jsl)에 있습니다. 코드 파일에는 웹 서비스의 템플릿이 포함되어 있습니다. 웹 서비스 메서드의 코드도 일부 포함되어 있습니다.
웹 서비스에서 두 가지 메서드를 만듭니다. 첫 번째 메서드는 화씨 온도를 섭씨 온도로, 두 번째 메서드는 섭씨 온도를 화씨 온도로 변환합니다.
변환 메서드를 만들려면
클래스 내에서 HelloWorld 메서드 다음에 아래 코드를 추가합니다.
<System.Web.Services.WebMethod()> _ Public Function FahrenheitToCelsius(ByVal Fahrenheit As Double) _ As Double Return ((Fahrenheit - 32) * 5) / 9 End Function <System.Web.Services.WebMethod()> _ Public Function CelsiusToFahrenheit(ByVal Celsius As Double) _ As Double Return ((Celsius * 9) / 5) + 32 End Function
[System.Web.Services.WebMethod()] public double FahrenheitToCelsius(double Fahrenheit) { return ((Fahrenheit - 32) * 5) / 9; } [System.Web.Services.WebMethod()] public double CelsiusToFahrenheit(double Celsius) { return ((Celsius * 9) / 5) + 32; }
함수 이름 앞에는 함수 선언의 일부로 [System.Web.Services.WebMethod()] 또는 <System.Web.Services.WebMethod()> 특성이 옵니다.
함수를 입력한 후 파일을 저장합니다.
이제 Visual Web Developer에서 웹 서비스를 테스트할 수 있습니다.
웹 서비스를 테스트하려면
솔루션 탐색기에서 Convert.asmx를 클릭한 다음 Ctrl+F5를 누릅니다.
웹 서비스가 호출되고 이 웹 서비스에 의해 노출되는 메서드를 보여 주는 페이지가 브라우저에 나타납니다.
해당 메서드를 호출하는 CelsiusToFahrenheit를 클릭합니다.
CelsiusToFahrenheit 메서드에 대한 매개 변수 값을 묻는 페이지가 나타납니다.
Celsius 상자에 100을 입력한 다음 호출을 클릭합니다.
CelsiusToFahrenheit 메서드가 호출될 때 웹 서비스에서 반환하는 XML을 표시하는 새 창이 나타납니다. XML에 212라는 값이 나타납니다.
메서드 결과가 포함된 브라우저를 닫습니다.
원래 브라우저에서 뒤로를 클릭하여 메서드 목록으로 돌아갑니다.
FahrenheitToCelsius를 클릭하고 메서드가 예상한 결과를 반환하는지 테스트합니다.
212라고 입력하면 FahrenheitToCelsius 메서드는 100을 반환합니다.
브라우저를 닫습니다.
웹 서비스를 만들었으므로 이제 이 웹 서비스를 사용해 보겠습니다.
웹 서비스 사용
웹 서비스가 준비되었으므로 이 웹 서비스를 참조하고 사용할 웹 사이트를 만듭니다. 이 연습에서는 별도의 웹 사이트를 만들어 방금 만든 웹 서비스 메서드가 시작되는 페이지를 해당 웹 사이트에 포함합니다.
웹 서비스를 사용할 웹 사이트를 만들려면
파일 메뉴에서 새 웹 사이트를 클릭합니다.
Visual Studio에 설치되어 있는 템플릿에서 ASP.NET 웹 사이트를 클릭합니다.
찾아보기를 클릭합니다.
로컬 IIS를 클릭합니다.
기본 웹 사이트를 클릭합니다.
새 웹 응용 프로그램 만들기를 클릭합니다.
Visual Web Developer는 새 IIS 웹 응용 프로그램을 만듭니다.
이름을 TemperatureWeb이라고 입력합니다.
열기를 클릭합니다.
언어 목록에서 작업할 프로그래밍 언어를 클릭합니다.
확인을 클릭합니다.
Visual Web Developer는 새 로컬 IIS 웹 사이트와 Default.aspx라는 새 페이지를 만듭니다.
웹 서비스를 구성 요소로 추가
웹 서비스는 응용 프로그램에서 참조할 수 있는 구성 요소입니다. 따라서 웹 서비스에 대한 참조를 만들어야 합니다.
웹 서비스에 대한 참조를 만들려면
웹 사이트 메뉴에서 웹 참조추가를 클릭합니다.
다음 스크린 샷과 같은 새 웹 참조 대화 상자가 나타납니다.
웹 참조 추가 대화 상자
URL 목록에서 다음 웹 서비스 URL을 입력한 다음 이동을 클릭합니다.
https://localhost/TemperatureWebService/Convert.asmx
Visual Web Developer에서 웹 서비스를 찾으면 웹 서비스에 대한 정보가 웹 참조 추가 대화 상자에 나타납니다.
참고: 프록시 서버가 제대로 구성되지 않은 경우에는 웹 서비스에 대한 참조를 추가할 수 없습니다. Microsoft Internet Explorer의 도구 메뉴에서 인터넷 옵션, 연결, LAN 설정을 차례로 클릭합니다. 로컬 주소에 프록시 서버 사용 안 함 확인란을 선택합니다. 또한 Internet Explorer에서 프록시 서버를 검색하게 하는 대신 프록시 서버 주소를 프록시 서버의 정확한 이름으로 설정합니다. 자세한 내용은 네트워크 관리자에게 문의하십시오.
메서드 링크 중 하나를 클릭합니다.
메서드의 테스트 페이지가 나타납니다.
참조 추가를 클릭합니다.
Visual Web Developer는 App_WebReferences 폴더를 만들고 여기에 새 웹 참조의 폴더를 추가합니다. 기본적으로 웹 참조에는 서버 이름(이 경우 localhost)에 해당하는 네임스페이스가 할당됩니다. 웹 참조 네임스페이스의 이름을 기록해 둡니다. Visual Web Developer는 이 폴더에 웹 서비스를 참조하는 .wsdl 파일을 추가합니다. 또한 웹 서비스 위치에 대한 정보가 포함된 검색 파일(.disco 및 .discomap)과 같은 지원 파일을 추가합니다.
참고: 클래스 이름에 사용할 수 없는 하이픈(-)과 같은 문자가 웹 서비스의 서버 이름에 포함되어 있는 경우 Visual Web Developer는 이러한 문자를 밑줄 문자(_)로 변환합니다. 따라서 Visual Web Developer에서 웹 서비스의 네임스페이스가 서버 이름과 정확하게 일치하지 않을 수 있습니다.
이제 웹 서비스를 사용할 수 있습니다. 이 연습에서는 Default.aspx에 컨트롤을 추가한 다음 지정된 온도를 화씨와 섭씨로 변환하도록 이 컨트롤을 프로그래밍합니다. 페이지가 실행되면 다음 그림과 같이 나타납니다.
온도 변환 페이지
웹 서비스 메서드를 호출하려면
Default.aspx 페이지를 열고 디자인 뷰로 전환합니다.
도구 상자의 표준 그룹에서 다음 컨트롤을 페이지로 끌어와 아래와 같이 속성을 설정합니다.
컨트롤
속성
Textbox
ID: TemperatureTextbox
Text: (비어 있음)
Button
ID: ConvertButton
Text: 변환
Label
ID: FahrenheitLabel
Text: (비어 있음)
Label
ID: CelsiusLabel
Text: (비어 있음)
필요에 따라 페이지의 캡션에 텍스트를 추가합니다.
이 연습에서 페이지의 레이아웃은 중요하지 않습니다.
ConvertButton을 두 번 클릭하여 Click 이벤트에 대한 이벤트 처리기를 만듭니다.
이벤트 처리기 코드가 다음 예제 코드와 같아야 합니다.
Dim wsConvert As New localhost.Convert() Dim temperature As Double temperature = System.Convert.ToDouble(TemperatureTextbox.Text) FahrenheitLabel.Text = "Fahrenheit To Celsius = " & _ wsConvert.FahrenheitToCelsius(temperature).ToString() CelsiusLabel.Text = "Celsius To Fahrenheit = " & _ wsConvert.CelsiusToFahrenheit(temperature).ToString()
protected void ConvertButton_Click(object sender, EventArgs e) { localhost.Convert wsConvert = new localhost.Convert(); double temperature = System.Convert.ToDouble(TemperatureTextbox.Text); FahrenheitLabel.Text = "Fahrenheit To Celsius = " + wsConvert.FahrenheitToCelsius(temperature).ToString(); CelsiusLabel.Text = "Celsius To Fahrenheit = " + wsConvert.CelsiusToFahrenheit(temperature).ToString(); }
Ctrl+F5를 눌러 페이지를 실행합니다.
텍스트 상자에 100과 같은 값을 입력하고 변환을 클릭합니다.
온도 값을 화씨 및 섭씨로 변환한 결과가 페이지에 표시됩니다.
웹 서비스 디버깅
웹 페이지를 디버깅할 때와 같은 방식으로 웹 서비스를 디버깅할 수 있습니다.
참고: |
---|
Visual Web Developer Express Edition 및 Visual Studio Standard Edition에서는 참조하는 페이지에서 한 단계씩 웹 서비스를 실행하는 기능을 지원하지 않습니다. Visual Web Developer Express Edition이나 Visual Studio Standard Edition을 사용하는 경우 이 단원을 건너뛰고 다음 단원으로 갑니다. 웹 사이트 디버깅 방법에 대한 자세한 내용은 연습: Visual Web Developer에서 웹 페이지 디버깅을 참조하십시오. |
먼저 웹 서비스가 포함된 웹 사이트에서 디버깅을 사용하도록 구성해야 합니다.
웹 서비스 웹 사이트에서 디버깅을 사용하려면
파일 메뉴에서 웹 사이트 열기를 클릭합니다.
로컬 IIS를 클릭합니다.
TemperatureWebService를 클릭한 다음 열기를 클릭합니다.
웹 사이트 메뉴에서 ASP.NET 구성을 클릭하여 웹 사이트 관리 도구를 엽니다.
참고: 웹 사이트 관리 도구를 처음 실행하는 경우에는 관리 도구가 나타날 때까지 약간 시간이 걸릴 수 있습니다.
응용 프로그램과 응용 프로그램 구성을 차례로 클릭합니다.
디버깅 및 추적에서 디버깅 및 추적 구성을 클릭합니다.
디버깅 사용 확인란을 선택합니다.
웹 사이트 관리 도구는 웹 사이트의 Web.config 파일을 만들고 디버깅을 사용하도록 구성 옵션을 설정합니다.
참고: 솔루션 탐색기에서 Web.config 파일을 보려면 웹 사이트 이름을 클릭하고 솔루션 탐색기 도구 모음에서 새로 고침을 클릭합니다.
웹 사이트 관리 도구를 닫습니다.
이제 웹 서비스를 사용하는 웹 사이트에 대해 디버깅을 사용할 수 있어야 합니다.
웹 사이트에서 디버깅을 사용하려면
TemperatureWeb 사이트를 엽니다.
웹 사이트 메뉴에서 ASP.NET 구성을 클릭하여 웹 사이트 관리 도구를 엽니다.
응용 프로그램, 응용 프로그램 구성을 차례로 클릭하고 디버깅 및 추적에서 디버깅 및 추적 구성을 클릭한 다음 디버깅 사용 확인란을 선택합니다.
웹 사이트 관리 도구를 닫습니다.
참고: 솔루션 탐색기에서 Web.config 파일을 보려면 웹 사이트 이름을 선택하고 솔루션 탐색기 도구 모음에서 새로 고침을 클릭합니다.
솔루션 탐색기에서 Default.aspx를 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
Visual Web Developer는 페이지의 코드 파일을 엽니다.
다음 줄에 포인터를 놓습니다.
temperature = System.Convert.ToDouble(TemperatureTextbox.Text)
double temperature = System.Convert.ToDouble(TemperatureTextbox.Text);
F9 키를 눌러 줄에 중단점을 설정합니다.
디버깅 테스트
웹 사이트와 웹 서비스가 모두 디버깅을 위해 구성되었으므로 이제 디버깅을 시도할 수 있습니다. Default.aspx 페이지에서 시작하여 코드에서 웹 서비스를 호출할 때까지 코드를 단계적으로 실행합니다. 디버거가 웹 서비스로 전환되고 코드를 단계별로 계속 실행합니다.
페이지와 웹 서비스를 디버깅하려면
F5 키를 눌러 Default.aspx 페이지에서 디버깅을 실행합니다.
페이지가 브라우저에 나타납니다.
상자에서 100과 같은 값을 입력한 다음 변환을 클릭합니다.
Visual Web Developer가 페이지의 코드를 실행하기 시작하지만, 중단점이 있는 줄에서 멈추고 이 줄을 강조 표시합니다.
F11 키를 눌러 다음 줄로 진행합니다.
F11 키를 다시 누릅니다.
다음 줄에서 웹 서비스를 호출하기 때문에 디버거는 웹 서비스의 코드를 한 단계씩 실행하고 FahrenheitToCelsius 메서드의 첫 번째 줄에서 멈춥니다.
F11 키를 계속 누릅니다.
디버거는 메서드 나머지 부분을 단계별로 실행한 다음 호출한 페이지로 돌아갑니다. 단계별 실행을 계속하면 디버거는 다시 웹 서비스 및 CelsiusToFahrenheit 메서드의 코드를 한 단계씩 실행합니다.
브라우저를 닫으면 디버거도 닫힙니다.
다음 단계
이 연습에서는 간단한 웹 서비스를 만들고 이를 ASP.NET 응용 프로그램에서 사용하는 기본 원칙을 설명했습니다. 더 복잡한 다른 웹 서비스 기능을 사용해 보려는 경우 다음과 같은 제안을 따르는 것이 좋습니다.
XML Web services를 호출할 때 발생하는 처리 과정을 이해합니다.
자세한 내용은 XML Web services 수명에 대한 분석을 참조하십시오.
XML Web services를 사용하는 방법을 이해합니다.
자세한 내용은 XML Web services 시나리오를 참조하십시오.
이 연습에서 다룬 간단한 웹 서비스보다 더 복잡한 기능을 제공하는 XML Web services를 만듭니다. 비동기 웹 서비스 메서드 호출을 만들어 체인으로 연결, 트랜잭션 사용, 웹 서비스 보안, 웹 서비스에서 Microsoft Windows 인증 구성 등의 작업을 수행할 수 있습니다.
자세한 내용은 ASP.NET을 사용하는 XML Web services를 참조하십시오.
XML Web services에서 제공하는 언어 및 기술 관련 기능에 대해 알아봅니다.
자세한 내용은 XML Web Services in Visual FoxPro, 관리 코드로 웹 서비스 프로그래밍 소개, 웹 서비스(Visual Basic 작업 절차), XML Web Services Created with ATL Server 및 웹 서비스 만들기 및 액세스 연습을 참조하십시오.
참고 항목
작업
연습: Visual Web Developer에서 웹 페이지 디버깅
개념
ASP.NET을 사용하여 만든 XML Web services에 대한 디자인 지침
ASP.NET을 사용하여 만든 XML Web services에 보안 설정
참조
XML Web Services의 @ WebService 지시문