Edit Files
Login Register

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 로 확장하기 어려움
        • 계층 구조를 만들기 어려움.