다음을 통해 공유


Readme_ShoppingCart

업데이트: 2005년 12월 5일

장바구니 예제에서는 대화 그룹 식별자를 사용하여 간단한 장바구니 응용 프로그램의 상태를 유지 관리합니다. 이 응용 프로그램은 ServiceBrokerInterface 예제를 사용합니다.

기본적으로 장바구니 예제 응용 프로그램은 C:\Program Files\Microsoft SQL Server\100\Samples\Engine\\ServiceBroker\ShoppingCart에 설치됩니다. 예제 폴더가 없는 경우 예제 설치를 참조하십시오.

예제는 교육용으로만 제공되므로 프로덕션 환경에서 사용하기에 적합하지 않으며 프로덕션 환경에서 테스트되지 않았습니다. Microsoft에서는 이러한 예제에 대해 기술 지원을 제공하지 않습니다. 시스템 관리자의 허가 없이 프로덕션 SQL Server 데이터베이스 또는 보고서 서버에 예제 응용 프로그램 및 어셈블리를 연결하거나 사용해서는 안 됩니다.

예제 빌드 및 설치

  1. Visual Studio 2005에서 ShoppingCartCS.sln을 엽니다.

  2. F6 키를 누르거나 빌드 메뉴에서 솔루션 빌드를 선택하여 솔루션을 빌드합니다.

  3. 명령 프롬프트를 열고 Scripts 폴더를 찾은 후 다음 명령을 실행합니다.

    install all
    

    설치 스크립트는 응용 프로그램에 대한 SQL Server 개체를 설치합니다. 여기에는 ShoppingCartService 서비스를 구현하는 CLR(공용 언어 런타임) 저장 프로시저가 포함됩니다.

예제 실행

  1. 예제 디렉터리에서 ShoppingCartClient.exe 응용 프로그램을 실행합니다. 클라이언트는 한 번 실행될 때마다 하나의 주문만 처리합니다.

  2. Create Order를 클릭하여 주문을 만듭니다. Item 목록에서 품목을 선택하여 장바구니에 추가한 다음 Add Item 단추를 클릭합니다.

  3. 언제든지 Service Broker Trace 탭을 클릭하면 주고 받은 Service Broker 메시지의 요약을 볼 수 있습니다.

  4. ssb_ShoppingCart 데이터베이스의 ShoppingListStateTable 테이블은 응용 프로그램의 상태를 유지 관리합니다. CLR 저장 프로시저는 클라이언트의 메시지에 따라 테이블을 업데이트합니다. Management Studio 또는 sqlcmd를 사용하여 이러한 테이블을 검사할 수 있습니다.

예제 제거

  1. 명령 프롬프트를 열고 Scripts 폴더를 찾은 후 다음 명령을 실행합니다.

    uninstall all
    
  2. 제거 스크립트는 응용 프로그램에 대한 SQL Server 개체를 제거합니다.

요구 사항

이 예제를 실행하려면 Visual Studio 2005가 필요합니다. 이 예제는 이전 버전에서는 사용할 수 없었던 CLR 기능을 사용하므로 Visual Studio 2005 이전 버전으로는 예제를 빌드할 수 없습니다.

데모

Service Broker 응용 프로그램은 대개 서비스를 호스팅하는 데이터베이스에 상태를 저장합니다. 메시지가 도착하면 응용 프로그램은 데이터베이스에서 상태를 로드한 다음 메시지를 처리합니다.

Service Broker 인터페이스 예제의 Service 클래스를 사용하면 상태를 편리하게 유지 관리할 수 있습니다. 이 예제에서는 Service 클래스를 사용하여 상태를 유지 관리하는 방법을 보여 줍니다.

Service 클래스를 사용하여 상태를 유지 관리하려면 다음 표에 나열된 응용 프로그램의 두 메서드와 SQL Server의 저장 프로시저를 구현해야 합니다.

항목 서명 설명

저장 프로시저

CREATE PROCEDURE name (@cgid uniqueidentifier)

응용 프로그램의 상태를 반환합니다. 이 프로시저가 반환한 결과 집합은 대화 그룹 식별자를 포함해야 합니다.

공용 메서드

public override bool LoadState(System.Data.Sql.SqlReader reader)

상태를 복원하기 위해 저장 프로시저에서 제공한 결과 집합을 읽습니다. Service Broker 인터페이스는 SaveState 메서드에 식별자를 제공하지 않으므로 이 저장 프로시저는 클래스에 대화 그룹 식별자를 저장해야 합니다.

공용 메서드

public override void SaveState()

데이터베이스에 상태를 저장합니다.

이 항목에서는 상태 복원에 대한 일반 개요를 설명합니다. 전체 예를 보려면 ShoppingCartService.cs를 참조하십시오.

저장 프로시저는 대화 그룹 식별자를 수락하고 두 개의 결과 집합을 반환해야 합니다. 첫 번째 결과 집합은 대화 그룹 식별자 자체로 구성됩니다. 두 번째 결과 집합은 응용 프로그램별 상태를 포함합니다. 이 저장 프로시저에 대한 고정 이름은 없습니다. 대신 AppLoaderProcName 속성을 설정하여 저장 프로시저의 이름을 제공합니다. Service Broker 인터페이스는 제공된 저장 프로시저를 호출하기만 합니다.

LoadState 메서드는 응용 프로그램의 상태를 복원합니다. 응용 프로그램이 수행하는 프로세스는 응용 프로그램이 요구하는 상태에 따라 달라집니다. 메서드는 System.Data.Sql.SqlReader 인스턴스를 매개 변수로 사용합니다. SqlReader는 저장 프로시저가 반환한 결과 집합을 포함합니다. 일반적으로 LoadState 메서드를 구현하면 Service 클래스의 State 속성이 업데이트되고 대화 그룹 식별자가 private 필드에 저장된 다음 응용 프로그램별 상태가 해당 데이터 구조에 저장됩니다. 예를 들어 ShoppingCartService는 상품, 수량 및 가격에 대한 정보를 ShoppingCart 클래스의 private 인스턴스에 저장합니다.

LoadState 호출 후 Service Broker 인프라는 메시지를 발송합니다. 특성 기반 메시지 발송 프레임워크를 사용하는 경우 메시지 유형 이름과 State 속성에 따라 메시지를 발송할 수 있습니다. 메시지를 처리하는 메서드에서 사용자는 LoadState에서 만들어진 데이터 구조를 읽거나 업데이트할 수 있습니다.

메시지 처리 메서드가 반환되면 Service Broker 인프라는 SaveState 메서드를 호출합니다. SaveState 메서드는 Service 클래스의 Connection 속성을 사용하여 SqlCommand 개체를 만든 다음 이 개체를 사용하여 데이터베이스에 저장된 상태를 업데이트합니다. 예를 들어 ShoppingCartService는 저장된 장바구니 내용을 삭제한 다음 장바구니의 현재 내용을 데이터베이스에 삽입합니다.

변경 내역

릴리스 내역

2005년 12월 5일

변경된 내용
  • 키 파일의 이름 및 위치를 포함하여 키 파일 생성 방법에 대한 정보를 변경했습니다.