이벤트 원본 및 이벤트 싱크 사용(StreamInsight)

 

StreamInsight 서버는 이벤트 원본, 쿼리를 사용하여 이벤트 스트림을 검사하는 고정 프로세스 집합, 결과를 처리하는 이벤트 싱크로 구성됩니다. StreamInsight는 IObservableIEnumerable 인터페이스, IQbservable, IQueryableIQStreamable 인터페이스를 구현하는 이벤트 원본 및 싱크를 지원합니다.

StreamInsight는 IObservableIEnumerable 인터페이스를 구현하는 이벤트 원본 및 이벤트 싱크를 지원합니다. 이러한 인터페이스는 응용 프로그램 구성 요소 간의 데이터 끌어오기(IEnumerable) 및 밀어넣기(IObservable)를 위한 .NET Framework의 주요 범용 계약입니다.

IEnumerableIEnumerator 인터페이스가 .NET 개발자에게 이미 익숙한 반면에 IObservableIObserver 인터페이스는 .NET Framework 4에서 최근에 도입되었습니다. IObservable 개발 모델은 Observable/Observer 디자인 패턴을 기반으로 합니다. 이 디자인 패턴에서는 다음과 같습니다.

  • observer는 다른 개체의 상태가 변경될 때 알림을 받게 할 임의의 개체입니다.

  • observable은 다른 개체가 관심 항목을 등록할 수 있는 밀어넣기 기반 시퀀스입니다.

StreamInsight 응용 프로그램에서 Observable은 이벤트 원본입니다. 쿼리는 이 원본의 Observer 역할을 하며 해당 결과를 역시 쿼리의 Observer인 이벤트 싱크에 Observable로 제공합니다. 자세한 내용은 MSDN에서 Observer 디자인 패턴 살펴보기를 참조하십시오.

응용 프로그램 개발자는 이 개발 모델을 사용하기 위해 최소한의 작업만 수행하면 됩니다.

  1. IObservable 또는 IEnumerable 인터페이스를 이벤트 생성자로 구현하는 클래스를 제공합니다.

  2. IObserver 인터페이스를 구현하는 클래스나 IEnumerable을 이벤트 소비자로 소비하는 클래스를 제공합니다.

  3. 이러한 개체를 쿼리에 바인딩합니다.

이 개발 모델에서는 이벤트의 임시 속성을 정의하기 위한 주요 학습 또는 프로그래밍 투자가 필요하지 않고 핵심 어댑터 모델의 기본 상태 전환을 알아야 할 필요도 없습니다. 여기에는 이 개발 모델이 적합한 몇 가지 시나리오가 나와 있습니다.

  1. 기록 쿼리. 재무 분석가 Alice는 대형 데이터 집합에 대한 임시 쿼리를 실행하여 기록 시장 데이터에서 패턴을 식별합니다. 이 경우 입력 스트림에는 한정된 끝이 있습니다. 즉, 마지막 데이터 요소가 처리된 후 쿼리는 끝나야 합니다.

  2. 라이브 원본에 대한 임시 쿼리. 서버 관리자 Bob은 서비스 거부 공격을 의심하고 있습니다. Bob은 모니터링하는 중인 네트워크 데이터의 스트림에 대한 일련의 반복된 임시 쿼리를 통해 공격의 소스를 식별합니다.

  3. 사용자 지정 응용 프로그램에 포함됨. 사용자 인터페이스 개발자 Charlie는 Windows 이벤트에 대한 임시 쿼리를 사용하여 마우스 제스처의 패턴을 분석합니다. StreamInsight는 사용자 지정 응용 프로그램에 포함됩니다.

이러한 각 경우에 클라이언트 응용 프로그램이 결과를 수신하는 데 관심이 있는 경우에만 쿼리가 존재합니다.

Observable 및 열거 가능 원본과 싱크에 대한 프로그래밍 고려 사항

Observable 및 열거 가능 원본과 싱크는 포함된 솔루션과 서버 솔루션에서만 지원됨

Observable 또는 열거 가능 이벤트 원본과 싱크는 StreamInsight 서버가 응용 프로그램에 포함되어 있는 호스팅된 배포 모델에서 지원되고 쿼리 및 싱크를 서버에 배포할 때 독립 실행형 서버 또는 원격 서버 배포 모델에서 지원됩니다. 배포 모델에 대한 자세한 내용은 StreamInsight 서버 배포 모델을 참조하십시오.

API 기능이 StreamInsight의 임시 요구 사항을 지원함

API는 CTI 이벤트를 큐에 넣는 것을 비롯한 StreamInsight의 임시 모델에 대한 요구 사항을 완전하게 충족합니다.

  • Observable 및 열거 가능 입력에서 다음과 같습니다.

    • To[Point|Interval|Edge]Stream 메서드는 입력 데이터를 StreamInsight 이벤트로 래핑하고 원본 데이터의 임시 특성을 지정합니다.

    • AdvanceTimeSettings 클래스의 도우미 메서드와 속성은 개발자가 CTI 이벤트를 큐에 넣는 빈도를 지정하여 입력 데이터의 활성화를 결정하는 데 도움을 줍니다.

  • Observable 및 열거 가능 출력에서 개발자는 To[Point|Interval|Edge]ObservableTo[Point|Interval|Edge]Enumerable 메서드를 통해 시점, 간격 또는 가장자리 이벤트 형태로 시간 정보를 통합할지 여부를 선택할 수 있습니다.

현재 LINQ to Objects, LINQ to SQL, 및 .NET용 Reactive Extensions 등 다양한 LINQ 공급자가 존재합니다. StreamInsight에는 개발자가 CepStream 유형에 대해 임시 쿼리를 표현할 수 있는 고유 LINQ 공급자가 있습니다.

시퀀스 및 임시 스트림에서의 LINQ 쿼리 컴퍼지션을 지원하려면 StreamInsight가 원본 유형의 IQueryable, IQbservableIQStreamable 특수화 구현을 표시합니다. 이러한 인터페이스는 System.Linq, System.Reactive.LinqMicrosoft.ComplexEventProcessing.Linq 네임스페이스에 정의됩니다.

사용자는 메서드 연결을 사용하여 원본 유형(IQueryable, IQbservableIQStreamable) 간에 전환할 수 있습니다. 메서드 연결은 접두사 "To"로 시작됩니다. 예를 들면 사용자는 ToObservable() 메서드를 사용하여 IQStreamable 유형을 IQbservable 유형에 연결할 수 있습니다. StreamInsight에서 지원되는 메서드 연결은 그림 1에 표시되어 있습니다. 서명(확장)은 StreamInsight의 IQbservable, IQueryable, IQStreamable에 대한 API 지원에서 찾을 수 있습니다.

원본 유형 간의 브리지 메서드
그림 1: 메서드를 연결하여 원본 유형 간에 전환

표시: