30일
- In Process PubSub 이 필요 해서 구현
- In Process 이다보니 Publish 를 할때 두가지 방식이 가능함
kind, type 같은 string 을 지정하고, 이를 기반으로 Event 를 분류하고 전달하는 방법
- eg)
publish("button.clicked", Event{foo:bar})
subscribe("button.clicked")
- Event 자체의 type 을 기반으로 Event 를 분류하고 전달하는 방법
- eg)
publsh(ButtonClickedEvent{foo:bar})
subscribe(ButtonClickedEvent{})
- 각각의 방식은 장단점이 있음.
- string 방식
- 이후 Multi instance 로 확장하기 좋음.
- 구분자나 prefix matching을 통해 계층 구조를 만들기 좋음
- eg)
page.* 을 구독하면 page.button.clicked Event 를 전달 받을수 있음.
- kind 별로 Event 상세 내역이 달라지므로, parser나 selector, type 추론 구문 등이 필수가 됨
- 때때로 잘못된 Parsing이나 type 추론으로 인한 오류가 발생할수 있음.
- type 방식
- Type 그 자체가 kind 가 되므로 별도의 parser 등이 간결해짐
- In Process의 경우 언어에서 지원되는 형변환 으로 즉시 Data 사용 가능
- 즉, Event scheme registry 를 만들 필요가 없음.
- Multi instance 로 확장하기 어려움
- 계층 구조를 만들기 어려움.