Skip to content

Latest commit

 

History

History
43 lines (30 loc) · 2.19 KB

设计理念.md

File metadata and controls

43 lines (30 loc) · 2.19 KB

设计理念

Alan Kay 创造 "OOP(面向对象)" 一词时, 包含以下三个含义:

  1. 一切都是对象
  2. 对象通过消息进行沟通
  3. 对象解释它所理解的消息

Smalltalk 展示了如何实施这些想法。

许多编程语言都支持面向对象风格的编程, 它们通常关注第 1 点, 而对 2, 3 点缺少关注。

Dynatalk 致力于对象之间的交流, 尤其关心不同语言/环境之间的互操作。

Dynatalk 提供的通信对象被抽象化为 Agent, 它在行为上类似于 Actor 模型。

为何重新设计 Dynatalk

早先的 Dynatalk 存在以下问题:

  • 核心不够清晰(与 Roblox Agent 项目有很多耦合)
  • 基于 Agency 实现。Agency 在关注点分离上做得不理想。新版本的过度设计使项目变得复杂。

新的 Dynatalk 打算兼容 Agency(1.6.1) 的消息结构, 数据结构的兼容使得它们可以进行互操作。根据需要, 可以复用之前的资产。

一些设计决策

  • 消息管道: MQTT。 如有需要, 可以轻松替换为 RabbitMQ 、 ZeroMQ、进程间的消息机制...
    • MQTT 拥有庞大的生态: MosquittoMQTT.jsMQTTX(MQTT client) 。 这些工具对于实现 可观察性 等特性会有帮助
    • MQTT 基于pub/sub 模式
      • 在 pub/sub 之上可以构建有应答和无应答的请求(client)
      • 对象解释消息使其有服务能力(server)
    • 相比于 websocket 等服务, 提供了更多的功能: 账号, 桥接器...
  • 在探索性环境(Lively, Squeak, Snap!...)中构建早期原型

参考