FlightNmo 예제
업데이트: 2006년 7월 17일
FlightNmo 예제에서는 NMO(Notification Services Management Objects)를 사용하여 Flight 예제 응용 프로그램을 빌드하는 방법을 보여 줍니다.
시나리오
여행 고객들이 항공 요금 알림을 구독합니다. 각 구독에는 출발지와 도착지, 요금 및 항공사(옵션)가 명시됩니다.
FlightNmo 응용 프로그램을 실행하는 회사는 감시된 폴더에 XML 데이터를 놓아 항공 요금 이벤트 데이터를 응용 프로그램에 전송합니다. 그러면 Notification Services는 이 데이터를 받아 일치하는 구독을 갖는 구독자를 위해 알림을 생성합니다.
다음 조건이 충족되면 알림이 생성됩니다.
- 이벤트 티켓 요금이 구독 티켓 요금보다 작습니다.
- 이벤트 출발 공항이 구독 출발 공항과 같습니다.
- 이벤트 도착 공항이 구독 도착 공항과 같습니다.
- 이벤트 항공사가 구독 항공사와 같습니다(지정된 경우).
한 구독자에게 동시에 전송할 알림이 여러 개인 경우 Notification Services는 다이제스트 배달을 사용하여 여러 알림을 결합합니다. 그런 후 Notification Services는 XSLT 콘텐츠 포맷터를 사용하여 알림의 서식을 지정하고 지정된 배달 채널(전자 메일 또는 파일)을 사용하여 알림을 배포합니다.
언어
XML, XSD, XSLT 및 Microsoft Visual C# 또는 Microsoft Visual Basic
기능
FlightNmo 예제에서는 다음 Notification Services 기능을 사용합니다.
응용 프로그램 영역 | 기능 |
---|---|
이벤트 클래스 |
기본 이벤트 큐(기록 없음) |
구독 클래스 |
이벤트 기반 구독 |
알림 클래스 |
다이제스트 배달 |
이벤트 공급자 |
파일 시스템 감시자 이벤트 공급자 |
콘텐츠 포맷터 |
XSLT 콘텐츠 포맷터 |
배달 프로토콜 |
파일 및 SMTP 배달 프로토콜 |
인스턴스 및 응용 프로그램 개발 |
NMO |
필수 구성 요소
이 예제를 실행하기 전에 다음 소프트웨어가 설치되어 있는지 확인하십시오.
- 다음 구성 요소를 포함하는 SQL Server 2005
- 데이터베이스 엔진
- Notification Services 엔진 및 클라이언트 구성 요소
- SQL Server Management Studio
- Notification Services 예제. 이 예제는 SQL Server 2005에 포함되어 있습니다. SQL Server Developer 웹 사이트에서 최신 버전의 예제를 다운로드할 수 있습니다.
- .NET Framework SDK 2.0 또는 Microsoft Visual Studio 2005. .NET Framework SDK는 무료로 구할 수 있습니다. .NET Framework SDK 설치를 참조하십시오.
다음 Windows 구성 요소가 설치되어 작동 중인지 확인하십시오.
- 인터넷 정보 서비스(IIS)의 구성 요소인 SMTP(Simple Mail Transfer Protocol) 서비스. Microsoft Windows Server 2003에서는 SMTP가 IIS에 기본적으로 설치되지 않습니다. SMTP 서비스를 설치 및 사용하는 방법은 Windows 설명서를 참조하십시오.
사용할 데이터베이스 엔진의 인스턴스가 시작되었는지 확인하십시오.
강력한 이름의 키 파일 생성
강력한 이름 키 파일을 생성하지 않았다면 다음 지침에 따라 해당 키 파일을 생성합니다.
강력한 이름 키 파일을 생성하려면
Microsoft Visual Studio 2005 명령 프롬프트를 엽니다. 시작을 클릭하고 모든 프로그램, Microsoft .NET Framework SDK 2.0을 차례로 가리킨 다음 SDK 명령 프롬프트를 클릭합니다.
-- 또는--
Microsoft .NET Framework 명령 프롬프트를 엽니다. 시작을 클릭하고 모든 프로그램, Microsoft .NET Framework SDK 2.0을 차례로 가리킨 다음 SDK 명령 프롬프트를 클릭합니다.
디렉터리 변경 명령(CD)을 사용하여 명령 프롬프트 창의 현재 디렉터리를 예제가 설치된 폴더로 변경합니다.
[!참고] 예제가 있는 폴더를 확인하려면 시작 단추를 클릭하고 모든 프로그램, Microsoft SQL Server, 설명서 및 자습서를 차례로 가리킨 다음 예제 디렉터리를 클릭하십시오. 기본 설치 위치가 사용된 경우 예제는 <system_drive>:\Program Files\Microsoft SQL Server\100\Samples에 있습니다.
명령 프롬프트에서 다음 명령을 실행하여 키 파일을 생성합니다.
sn -k SampleKey.snk
중요: 강력한 이름 키 쌍에 대한 자세한 내용은 MSDN의 .NET Development Center에서 "Security Briefs: Strong Names and Security in the .NET Framework"를 참조하십시오.
Notification Services 인스턴스 빌드
인스턴스를 빌드하려면 다음을 수행해야 합니다.
- Notification Services 인스턴스를 만들고 등록합니다.
- SQL Server, 데이터베이스 및 폴더 사용 권한을 부여합니다.
다음 프로시저에서는 FlightNmo 예제에 대한 각각의 작업을 수행하는 방법을 보여 줍니다.
1단계: Visual Studio 솔루션 빌드
먼저 Visual Studio 솔루션을 빌드합니다.
Microsoft .NET Framework SDK를 사용할 경우 다음을 수행합니다.
- 시작을 클릭하고 모든 프로그램\Microsoft .NET Framework SDK v2.0을 가리킨 후 SDK Command Prompt를 클릭합니다.
- FlightNmo 예제의 루트 폴더를 찾습니다. 기본 위치에 대해 다음 명령을 입력합니다.
cd \Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo - 다음을 입력하여 솔루션을 빌드합니다.
[C#]
msbuild FlightNmo.sln
[Visual Basic]
msbuild FlightNmo_VB.sln
또는 Visual Studio 2005를 사용할 경우 다음을 수행합니다.
- 선택한 솔루션 파일(FlightNmo.sln 또는 FlightNmo_VB.sln)을 엽니다.
- Visual Studio 빌드 메뉴에서 솔루션 빌드를 선택합니다.
2단계: Notification Services 인스턴스 만들기 및 등록
명령 프롬프트에서 CreateFlightNmoInstance Debug 폴더로 이동합니다.
cd CreateFlightNmoInstance\language\CreateFlightNmoInstance\bin\Debug
아래와 같이 CreateFlightNmoInstance.exe를 실행하여 인스턴스를 만들고 등록하며 활성화합니다. SqlUserName 및 SqlPassword 인수는 SQL Server 인증을 사용할 경우에만 필요합니다. 다음과 같은 인수가 필요합니다.
**CreateFlightNmoInstance SqlServer=databaseServerSampleDirectory=**directory
**NotificationServicesHost=**NotificationServicesHost
**ServiceUserName=NSServiceUserNameServicePassword=**NSServicePwd
**SqlUserName=NSServiceSqlUserNameSqlPassword=**NSServiceSqlPwd
이 명령을 실행 중인 경우 이 항목의 앞부분에서 설명한 자리 표시자에 다음 값을 사용합니다.
- databaseServer는 인스턴스 및 응용 프로그램 데이터베이스를 만들 데이터베이스 엔진 인스턴스입니다.
- directory는 예제 디렉터리입니다. 기본 위치는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo입니다.
- NotificationServicesHost는 Notification Services 엔진 구성 요소를 실행하는 서버입니다. 이 예제에서는 로컬 컴퓨터를 사용합니다.
- NSServiceUserName은 NS$FlightNmoInstance Windows 서비스를 실행할 계정입니다.
- NSServicePwd는 NSServiceUserName 계정의 암호입니다.
- SQL Server 인증 인수 NSServiceSqlUserName 및 NSServiceSqlPwd는 SQL Server 인증을 사용하는 경우에만 이용합니다. 이러한 인수를 입력하면 Windows 서비스는 해당 인수를 사용하여 데이터베이스 엔진에 연결합니다.
이 명령이 완료되면 두 개의 새로운 데이터베이스와 하나의 Windows 서비스를 갖게 됩니다. 데이터베이스의 이름은 FlightNmoInstanceNSMain과 FlightNmoInstanceFlightNmo입니다. Windows 서비스의 이름은 NS$FlightNmoInstance입니다.
[!참고] 데이터베이스 소유자 또는 시스템 관리자 계정을 사용하여 Notification Services 예제를 배포할 경우 계정에 SQL Server 사용 권한을 부여할 필요가 없습니다. 이러한 권한을 부여하면 무시해도 되는 오류가 발생할 수 있습니다. 자체 응용 프로그램을 배포할 때는 보안을 향상시키기 위해 권한이 더 낮은 계정을 사용해야 합니다.
3단계: SQL Server 및 데이터베이스 사용 권한 부여
SQL Server Management Studio를 열고 이 항목의 앞부분에서 SqlServer 인수에 지정한 데이터베이스 엔진 인스턴스에 연결합니다.
개체 탐색기에서 보안 노드를 확장합니다.
Windows 서비스에 대한 데이터베이스 로그인 계정을 새로 만들어야 할 경우 로그인을 마우스 오른쪽 단추로 클릭하고 새 로그인을 선택한 후 다음과 같이 로그인 계정을 만듭니다.
- Windows 인증을 사용하려면 Windows 인증을 선택하고 이 항목의 앞부분에서 ServiceUserName 인수에 지정한 것과 동일한 Windows 계정을 입력합니다.
- SQL Server 인증을 사용하려면 SQL Server 인증을 선택하고 이 항목의 앞 부분에서 SqlUserName 및 SqlPassword 인수에 지정한 값을 입력합니다.
Windows 서비스에 사용된 로그인에 SQL Server 액세스 권한이 이미 있으면 해당 로그인을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
로그인 대화 상자의 왼쪽 창에서 사용자 매핑을 선택합니다.
FlightNmoInstanceNSMain 데이터베이스에 대한 사용 권한을 부여합니다.
- 이 로그인으로 매핑된 사용자 상자에서 FlightNmoInstanceNSMain을 선택합니다.
- 데이터베이스 역할 멤버 자격: FlightNmoInstanceNSMain 상자에서 NSRunService를 선택합니다.
FlightNmoInstanceFlightNmo 데이터베이스에 대한 사용 권한을 부여합니다.
- 이 로그인으로 매핑된 사용자 상자에서 FlightNmoInstanceFlightNmo를 선택합니다.
- 데이터베이스 역할 멤버 자격: FlightNmoInstanceFlightNmo 상자에서 NSRunService를 선택합니다.
확인을 클릭하여 SQL Server 사용 권한을 적용합니다.
Windows 탐색기를 사용하여 다음과 같이 Events 폴더에 대한 보안을 구성합니다.
- 예제의 Events 폴더를 찾습니다.
- Events 폴더를 마우스 오른쪽 단추로 클릭하고 공유 및 보안을 선택한 후 보안 탭을 선택합니다.
- 추가를 클릭하고 Windows 서비스에 사용된 계정을 추가합니다.
- 그룹 또는 사용자 이름 상자에서 방금 추가한 계정을 선택합니다.
- 사용 권한 상자에서 읽기 및 수정 권한을 선택합니다.
- 확인을 클릭하여 변경 내용을 적용합니다.
다음과 같이 Notifications 폴더에 대한 보안을 구성합니다.
- 예제의 Notifications 폴더를 찾습니다.
- Notifications 폴더를 마우스 오른쪽 단추로 클릭하고 공유 및 보안을 선택한 후 보안 탭을 선택합니다.
- 추가를 클릭하고 Windows 서비스에 사용된 계정을 추가합니다.
- 그룹 또는 사용자 이름 상자에서 방금 추가한 계정을 선택합니다.
- 사용 권한 상자에서 쓰기를 선택합니다.
- 확인을 클릭하여 변경 내용을 적용합니다.
예제 실행
예제를 실행하려면 다음을 수행해야 합니다.
- 인스턴스를 시작합니다.
- 구독자 및 구독을 추가합니다.
- 이벤트가 들어 있는 XML 파일을 해당 위치에 저장합니다.
- 결과 알림을 검토합니다.
다음 프로시저는 이 작업을 수행하는 방법을 보여 줍니다.
1단계: 인스턴스 시작
개체 탐색기에서 Notification Services 폴더를 엽니다.
FlightNmoInstance를 마우스 오른쪽 단추로 클릭한 다음 시작을 클릭합니다.
2단계: 구독자 및 구독 추가
AddSubscribers.exe를 실행합니다.
이 폴더의 기본 위치는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscribers\language\AddSubscribers\bin\Debug입니다.
AddSubscriptions.exe를 실행합니다.
이 폴더의 기본 위치는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscriptions\language\AddSubscriptions\bin\Debug입니다.
[!참고] 프로덕션 응용 프로그램의 경우 또는 이 응용 프로그램을 제한된 계정으로 실행 중인 경우에는 응용 프로그램의 SQL Server 로그인을 인스턴스 및 응용 프로그램 데이터베이스에 있는 NSSubscriberAdmin 데이터베이스 역할에 추가합니다.
3단계: 이벤트 전송
Windows 탐색기에서 FlightNmo 예제의 루트 폴더를 찾고 EventData.xml 파일을 Events 하위 폴더에 복사합니다.
이 파일을 복사하면 파일 시스템 감시자 이벤트 공급자는 해당 파일에서 데이터를 읽고 응용 프로그램으로 전송한 후 파일 이름 확장명을 .done로 변경합니다.
데이터를 읽거나 전송할 때 오류가 발생하면 이벤트 공급자는 파일 이름 확장명을 .err로 변경합니다. 오류에 대한 추가 정보를 보려면 Windows 이벤트 뷰어를 확인하십시오.
4단계: 알림 보기
Notification Services에서 알림을 생성할 때까지 약 1분 정도 기다립니다.
Windows 탐색기로 FlightNmo 예제의 Notifications 폴더를 찾습니다. FileNotifications.txt라는 파일에서 파일 기반 알림을 확인할 수 있습니다.
전자 메일 메시지가 있는 폴더로 이동합니다. 이 폴더는 일반적으로 C:\Inetpub\mailroot에 있는 폴더 중 하나입니다. SMTP 서버 상태에 따라 알림이 Pickup 폴더에 추가되거나 Queue 폴더에 추가됩니다. SMTP 서비스가 실행 중이면 메시지가 Badmail 폴더로 이동될 수 있습니다.
예제 제거
다음 단계에 따라 FlightNmo 예제를 제거합니다.
FlightNmo 예제를 제거하려면
SQL Server Management Studio 개체 탐색기에서 Notification Services 폴더를 엽니다.
FlightNmoInstance를 마우스 오른쪽 단추로 클릭한 다음 중지를 선택합니다.
FlightNmoInstance를 마우스 오른쪽 단추로 클릭하고 작업을 가리킨 다음 등록 취소를 선택합니다.
FlightNmoInstance를 마우스 오른쪽 단추로 클릭하고 작업을 가리킨 다음 삭제를 선택합니다.
참고 항목
관련 자료
SQL Server Notification Services 예제
Notification Services 보안 설정
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2006년 4월 14일 |
|
2005년 12월 5일 |
|