"메시지 전달"과 "이벤트 기반"의 혼동은 아키텍처와 구현 세부 사항과 관련이 있습니다. 실제로 OS 제공 메시지를 사용하여 구현하는 이벤트 중심 시스템을 보았습니다. 나는 당신이 정말로 건축 아이디어를 언급하고 있다고 생각합니다.
많은 사람들이 이미 지적한 것처럼 "메시지 전달"과 "이벤트 기반"은 모호성을 피하기에 충분한 용어가 아닙니다.
"메시지 전달"시스템과 "이벤트 기반"시스템의 상대적인 장점은 무엇입니까?
메시지 전달
"메시지 전달"시스템이라고 말할 때 한 객체가 특정 다른 객체에 메시지를 보내는 시스템에 대해 이야기하고 있다고 생각합니다. 이 패러다임을 기반으로 한 시스템을 생각할 때, 더 일반적으로 무언가를 감지하는 물체가 무언가에 대해 알아야 할 사람을 알고있는 시스템을 생각합니다. (알고있는 방법을 지정하지 않고 알고 있습니다.)
이 유형의 아키텍처는 생산자와 소비자가 잘 알려진 시스템에 매우 적합합니다. 메시지 제작자는 메시지를받는 사람을 알고 있거나 소비자는 메시지를받을 사람을 알고 있어야합니다.
뱅킹 응용 프로그램을 작성하는 경우 거래를 누가 보내고 있는지, 누가 누구인지 알고 싶어 할 것입니다.
이벤트 기반
"이벤트 기반"시스템이라고 말할 때 내가 생각하고있는 다른 시스템은 어떤 사람이 누구에게 응답하는지 알지 못하고 객체가 "이벤트"를 발생시키는 시스템입니다.
이러한 유형의 이벤트 중심 아키텍처는 생산자가 이벤트를 소비하는 사람을 신경 쓰지 않거나 소비자가 실제로 누가 이벤트를 생산했는지 신경 쓰지 않는 시스템에 매우 유용합니다.
일반적으로 이러한 시스템은 소비자와 생산자 간의 관계를 모르고 관계가 역동적 일 것으로 예상되는 곳에서 유용합니다.
내가 사용한 한 시스템은 응용 프로그램이 실제로 런타임에로드 된 동적으로 구성된 모듈 (플러그인)으로 구성된 시스템이었습니다. 모듈이로드되면 모듈은 관련된 이벤트를 등록합니다. 그 결과 기능 확장이 매우 쉬운 시스템이 탄생했습니다.
예를 들어 조건 A가 이벤트 EA를 발생시켜 일반적으로 응답 RA가 발생했다고 가정 해 봅시다. 응답 RA를 발생시킨 오브젝트는 단순히 이벤트 EA를 수신하도록 등록하고 도착했을 때 조치를 취했습니다. 이제 RA_1이라는 EA에 새로운 응답을 추가하려고합니다. 이를 위해 EA를 찾고 응답 RA_1을 생성하는 새 객체를 추가하기 만하면됩니다.
다음은 몇 가지 예입니다 (용어 사용).
- "메시지 전달" : 상사가 시간표를 작성하라는 메시지를 표시합니다.
- "이벤트 주도" : 부서 비서가 모든 사람에게 자신의 작업 표 마감일을 알리는 이메일을 보냅니다.