다음을 통해 공유


Visual Studio 2005 클라이언트(C#)를 사용하여 SOAP 요청 보내기

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오.

이 항목에서는 Visual Studio 2005 클라이언트가 SOAP 요청을 SQL Server 인스턴스에 보내고 SOAP 응답을 처리하는 데 사용되는 예제 응용 프로그램에 대해 설명합니다. 이 요청은 네이티브 XML 웹 서비스 요청 보내기 예제 응용 프로그램에서 만든 끝점 메서드에 대해 전송됩니다.

이 응용 프로그램을 사용하려면 서버를 설정하여 네이티브 XML 웹 서비스 요청 수신클라이언트 응용 프로그램 작성에 제공된 개념 및 절차 정보를 잘 알고 있는 것이 좋습니다.

[!참고]

이 예제 응용 프로그램을 사용하려면 일부 초기 설정이 필요합니다. 예제 응용 프로그램으로 계속하기 전에 네이티브 XML 웹 서비스 요청 보내기 예제 응용 프로그램에 설명된 단계를 따릅니다.

SOAP 요청 보내기

이 응용 프로그램에서는 SOAP 요청을 끝점에 보내는 데 필요한 단추와 입력란이 있는 폼을 설정합니다.

GetCustomerInfo 저장 프로시저에 대한 SOAP 요청을 보내면 입력란에 제공된 고객 ID 값이 입력 매개 변수로 전달됩니다. 입력란에 지정된 값이 없으면 빈 문자열로 간주되고 CustomerID 값이 빈 문자열인 고객이 반환됩니다. NULL(Null)을 입력하면 CustomerID 값이 NULL인 고객이 반환됩니다. 이 경우 SOAP 요청에 xsi:nil = 'true' 특성이 자동으로 추가되어 NULL 매개 변수 값을 나타냅니다.

GetCustomerInfo 저장 프로시저는 입력 매개 변수, 출력 매개 변수, 오류 메시지 및 결과를 처리하는 방법을 보여 주도록 디자인되었습니다. 응용 프로그램에서는 사용자 정의 함수에 대해서도 SOAP 요청을 보냅니다. 또한 다음 임시 쿼리에 대해 SOAP 요청을 보냅니다.

  • 모든 직원을 검색하는 SELECT 쿼리

  • ID가 입력으로 제공된 직원을 검색하는 SELECT 쿼리

SOAP 응답 처리

SOAP 요청 결과가 개체 배열로 반환되면 클라이언트 응용 프로그램에서 배열에 있는 각 개체의 유형을 식별한 다음 그에 따라 개체를 처리합니다. 그런 다음 각 개체 배열 요소에 대해 다음 정보를 표시합니다.

  • 배열 요소에 있는 값의 데이터 형식

  • 결과 집합, 반환 코드, 출력 매개 변수 등의 값

작업 예제 만들기

이 예제를 만들기 위해 따라야 할 단계가 많으므로 응용 프로그램은 다음과 같이 5개의 부분으로 나뉩니다.

  • 1단계: GetCustomerInfo 저장 프로시저 실행

  • 2단계: SP 실행

  • 3단계: 매개 변수를 사용하지 않고 SQL 쿼리 실행

  • 4단계: 매개 변수를 사용하여 SQL 쿼리 실행

  • 5단계: 사용자 정의 함수 실행

각 단계에서는 일련의 지침을 제공합니다. 각 단계가 끝나면 응용 프로그램을 테스트할 수 있습니다.

1단계: GetCustomerInfo 저장 프로시저 실행

  1. 클라이언트 컴퓨터의 Microsoft Visual Studio 2005 프로그램 그룹에서 Visual Studio 2005를 시작합니다.

  2. 새 프로젝트를 클릭합니다.

  3. 프로젝트 형식으로 Visual C# 프로젝트를 선택합니다.

  4. 프로젝트 이름으로 NativeSOAPApp1을 지정합니다.

  5. 프로젝트를 저장할 위치를 지정합니다.

  6. 템플릿으로 Windows 응용 프로그램을 선택한 다음 확인을 클릭합니다.

  7. 솔루션 탐색기 창에서 참조를 마우스 오른쪽 단추로 클릭한 다음 웹 참조 추가를 클릭합니다. 프로젝트 메뉴에서 웹 참조 추가를 선택하여 웹 참조를 추가할 수도 있습니다.

  8. 주소 상자에 https://Server/sql?wsdl을 입력한 다음 Enter 키를 누릅니다. 서버 이름 URL 형식으로 입력해야 합니다.

  9. 참조 추가를 클릭합니다. WSDL 문서의 메서드를 호출할 수 있도록 필요한 프록시 클래스가 생성됩니다.

2단계: SP 실행

  1. 보기 메뉴에서 도구 상자를 클릭하여 Form1.cs [디자인] 창에 도구 상자를 엽니다. 또는 Ctrl+Alt+X를 눌러 도구 상자를 열 수도 있습니다.

  2. Form1에 입력란(textBox1), 단추(button1) 및 목록 상자(listBox1)를 추가합니다.

  3. 입력란을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. Text 값을 textBox1에서 1로 변경합니다. 이 값은 기본 고객 ID 값입니다.

  4. button1을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    1. Text 속성 값을 button1에서 ExecSP로 변경합니다.

    2. (name) 속성 값을 ExecSP로 변경합니다.

  5. 목록 상자(listBox1)를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. HorizontalScrollbar 속성 값을 True로 변경합니다.

  6. ExecSP를 두 번 클릭합니다.

  7. ExecSP에 대한 C# 코드 목록의 코드를 이 함수로 복사합니다.

  8. 코드를 업데이트합니다. CREATE ENDPOINT를 사용하여 끝점을 만들 때 식별된 호스트 이름에 의한 server 참조를 변경합니다.

  9. 프로젝트를 저장하고 컴파일합니다. 자세한 내용은 이전 섹션의 "코드 컴파일"을 참조하십시오.

3단계: 매개 변수를 사용하지 않고 SQL 쿼리 실행

클라이언트 응용 프로그램의 이 단계에서는 AdventureWorks 데이터베이스의 Employee 테이블에서 직원을 검색하는 임시 쿼리(FOR XML 쿼리)를 실행합니다.

  1. Form1의 [디자인] 탭에서 다른 단추(button1)를 추가합니다.

  2. 이 새 단추를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

    1. Text 속성 값을 button1에서 BatchQueryFindAllEmps로 변경합니다.

    2. (name) 속성 값을 BatchQueryFindAllEmps로 변경합니다.

  3. BatchQueryFindAllEmps를 두 번 클릭합니다.

  4. BatchQueryFindAllEmps에 대한 C# 코드 목록의 코드를 이 함수로 복사합니다.

  5. 코드를 업데이트합니다. CREATE ENDPOINT를 사용하여 끝점을 만들 때 식별된 호스트 이름에 의한 server 참조를 변경합니다.

  6. 프로젝트를 저장하고 컴파일합니다. 자세한 내용은 이전 섹션의 "코드 컴파일"을 참조하십시오.

4단계: 매개 변수를 사용하여 SQL 쿼리 실행

이 단계는 임시 쿼리에 대한 SOAP 요청에 쿼리 매개 변수가 포함된다는 점만 제외하면 이전 단계와 유사합니다. FOR XML 쿼리는 지정한 직원 ID에 대한 직원 정보를 검색합니다.

  1. Form1의 [디자인] 탭에서 단추(button1)를 추가합니다.

  2. 이 새 단추를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

    1. Text 속성 값을 button1에서 BatchQueryFindAnEmp로 변경합니다.

    2. (name) 속성 값을 BatchQueryFindAnEmp로 변경합니다.

  3. BatchQueryFindAnEmp를 두 번 클릭합니다.

  4. BatchQueryFindAnEmp에 대한 C# 코드 목록의 코드를 이 함수로 복사합니다.

  5. 코드를 업데이트합니다. CREATE ENDPOINT를 사용하여 끝점을 만들 때 식별된 호스트 이름에 의한 server 참조를 변경합니다.

  6. 프로젝트를 저장하고 컴파일합니다. 자세한 내용은 이전 섹션의 "코드 컴파일"을 참조하십시오.

5단계: 사용자 정의 함수 실행

이 단계에서는 클라이언트 응용 프로그램이 UDFReturningScalar 웹 메서드에 대한 SOAP 요청을 보냅니다. 이 웹 메서드는 정수 값을 반환하는 사용자 정의 함수에 해당합니다.

  1. Form1의 [디자인] 탭에서 단추(button1)를 추가합니다.

  2. 이 새 단추를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

    1. Text 속성 값을 button1에서 ExecUDFReturningScalar로 변경합니다.

    2. (name) 속성 값을 ExecUDFReturningScalar로 변경합니다.

  3. ExecUDFReturningScalar를 두 번 클릭합니다.

  4. ExecUDFReturningScalar에 대한 C# 코드 목록의 코드를 이 함수에 추가합니다.

  5. 코드를 업데이트합니다. CREATE ENDPOINT를 사용하여 끝점을 만들 때 식별된 호스트 이름에 의한 server 참조를 변경합니다.

  6. 프로젝트를 저장하고 컴파일합니다. 자세한 내용은 이전 섹션의 "코드 컴파일"을 참조하십시오.

  7. ExecUDFReturningScalar를 클릭합니다. 목록 상자에 사용자 정의 함수에서 반환된 값이 표시됩니다.

끝점에서 통합 인증을 지정하기 때문에 코드에 다음 줄이 나타납니다. proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

SQL Server 인증을 사용하는 경우 이 줄을 제거하고 WS 보안 헤더를 구현하는 코드로 바꾸어 SQL Server 기반 인증 자격 증명을 제공하는 것이 좋습니다. 자세한 내용은 SOAP를 통한 SQL Server 인증을 참조하십시오.

[!참고]

SQL Server에서 SQL Server 인증 또는 기본 인증을 사용하는 경우 사용자 자격 증명이 일반 텍스트로 표시되지 않고 안전하게 암호화되어 전송되도록 SSL(Secure Sockets Layer)을 사용해야 합니다. HTTP 끝점에서 SSL을 설정하는 방법은 SSL에 사용되는 인증서 구성을 참조하십시오.

코드 컴파일

SQL Server에서는 설치 시 .NET Framework 2.0을 설치합니다. 이러한 컴파일 명령에서는 최신 .NET Framework를 사용합니다. \WINDOWS\Microsoft.NET\Framework 폴더에서 가장 높은 번호가 최신입니다.

예제 코드를 컴파일하려면

  1. 전체 프로젝트를 저장합니다.

  2. 명령 프롬프트를 열고 프로젝트가 저장되어 있는 폴더를 찾습니다.

  3. 이 폴더의 Web Reference\Server 하위 폴더에서 Reference.cs 파일을 복사합니다. 예를 들어 "Web Reference\Server\Reference.cs"를 복사합니다. Form1.cs 파일과 Reference.cs 파일이 같은 폴더에 있어야 합니다.

  4. 코드를 컴파일하고 실행 파일(.exe)의 이름을 지정합니다. 예를 들어 실행 파일 이름이 NativeSOAPApp1.exe인 경우 명령줄은 다음과 같습니다.

    \WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\csc.exe /out:NativeSOAPApp1.exe Form1.cs Reference.cs

    xxxxx는 .NET Framework 버전에 해당되는 폴더 번호입니다.

    현재 디렉터리에 실행 파일(NativeSOAPApp1.exe)이 생성됩니다.

이전 버전의 .NET Framework를 사용하고 있으면 런타임 오류가 발생할 수 있습니다. 이 경우 다음과 같이 SELECT 문의 끝에 FOR XML AUTO 절을 추가하여 GetCustomerInfo 저장 프로시저를 업데이트하십시오.

SELECT TOP 3 SalesOrderID, OrderDate 
FROM   SalesOrderHeader
WHERE  CustomerID = @CustomerID
FOR XML AUTO

저장 프로시저 실행 결과가 목록 상자에 표시됩니다.