소프트웨어 아키텍처 - 28(Non-buffered Event-Based Implicit Invocations Architecture Style)

박승현·2023년 10월 16일
0

아키텍처

목록 보기
28/30
post-thumbnail

Non-buffered Event-Based Implicit Invocations Architecture Style

  • 구조
    • 두 파트로 분리
      • 이벤트 소스(이벤트 발생)와 이벤트 리스너(이벤트가 발생하면 이를 처리할 수 있는 객체 또는 함수)
    • 이벤트 등록 프로세스
      • 이벤트 소스와 이벤트 리스너 간의 등록 프로세스가 중요
      • 리스너는 특정 이벤트를 처리하려고 할 때 해당 이벤트 소스에 등록
      • 등록 프로세스를 통해 두 파트 간의 연결이 이루어짐
    • 버퍼 없는 통신
      • 중요한 특징은 두 파트 간에 버퍼가 없다는 것
      • 이벤트가 발생하면 이벤트 소스에서 직접 리스너에게 전달


  • 사용자 정의 이벤트 소스 및 이벤트 수신자를 위한 클래스 다이어그램
    • 사용자가 정의한 이벤트 소스와 이벤트 수신자를 나타내는 다이어그램
  • 이벤트 소스
    • 사용자가 정의한 이벤트를 생성 및 발생
  • 이벤트 수신자
    • 사용자가 정의한 이벤트를 수신 및 처리
  • 이벤트 클래스
    • 발생하는 각각의 이벤트를 나타냄
  • 이벤트 소스와 이벤트 수신자 간의 상호 작용
    • 화살표로 나타냄
  • 다중 스레드
    • 병렬 및 동시성 향상

Non-buffered Event-Based

  • oracle developer 데이터베이스 애플리케이션
    • 트리거 함수로 데이터베이스 내의 이벤트나 조건이 충족될 떄 다른 작업을 트리거
  • IDE for CASE도구(통합 개발 환경)
    • 코드 편집 컴파일 디버깅 등의 이벤트에 기반 트리거 발생
  • 디버깅 처리
    • 디버깅 도구에서 중단점에 도달하면 이벤트가 발생
  • 재고 관리 시스템
    • 사용자가 특정 주식의 상한 하한 임계값 설정
    • 임계값 도달시 이벤트 발생

적용 도메인

  • 상호작용하는 GUI컴포넌트 간의 통신 및 IDE도구
  • 컴포넌트 간에 느슨한 결합이 필요하며 비동기 작업을 트리거해야 하는 어플
  • State Machine구현
  • 응용 프로그램 내에서 이벤트 처리가 예측하기 어려운 경우

장,단점

  • 장점
    • 컴포넌트의 재사용
      • 새로운 이벤트 핸들러를 쉽게 플러그인 가능
    • 시스템 유지 보수 및 진화
      • 이벤트 소스와 타겟 모두 업데이트하기 쉬움
    • 독립성 및 유연한 연결
      • 실행 중에 동적으로 이벤트 등록 및 해제 가능
    • 이벤트 처리의 병렬 실행
      • 이벤트 핸들링 작업은 병렬 실행 가능
  • 제한사항(단점)
    • 이벤트 소스와 리스너 간의 응답 및 응답 순서 예측이 어려워 디버깅이 힘듬
    • 버퍼 없는 이벤트 기반 시스템에서 메시지 큐 또는 메시지 토픽을 사용하면 소스와 리스너 간의 결합이 강해질 수 있음

profile
KMU SW

0개의 댓글