C# 使用F#和Datomic构建反应式应用程序的基础知识

C# 使用F#和Datomic构建反应式应用程序的基础知识,c#,f#,reactive-programming,datomic,C#,F#,Reactive Programming,Datomic,我们希望展示反应式应用程序的功能(上下文是一个学术项目)。我们的目标是与F#和Datomic合作,构建一个具有多个应用程序的项目。本项目由以下部分组成: 事件生成器:生成与模拟人类行为的时间戳关联的GPS坐标 第一个事件侦听器连接到POI(兴趣点)数据库,该数据库返回最接近的相关POI。一行由GPS坐标和表示营业时间的2个时间戳组成。我们可以将此应用程序与Gmail背后的实时应用程序相类似,Gmail可以扫描最后一位用户的电子邮件,这些电子邮件谈论降雪,并显示关于保暖衣物的广告 第二个事件监听

我们希望展示反应式应用程序的功能(上下文是一个学术项目)。我们的目标是与F#和Datomic合作,构建一个具有多个应用程序的项目。本项目由以下部分组成:

  • 事件生成器
    :生成与模拟人类行为的时间戳关联的GPS坐标
  • 第一个
    事件侦听器
    连接到POI(兴趣点)数据库,该数据库返回最接近的相关POI。一行由GPS坐标和表示营业时间的2个时间戳组成。我们可以将此应用程序与Gmail背后的实时应用程序相类似,Gmail可以扫描最后一位用户的电子邮件,这些电子邮件谈论降雪,并显示关于保暖衣物的广告
  • 第二个
    事件监听器
    ,用于在Datomic中保存每个用户的移动
  • (可选)查看Datomic并尝试查找用户相关信息的应用程序。(通常接近该POI、工作时间等)
Datomic和F#(或函数式编程)都是新手,我们有一些未回答的问题

F#:

  • 事件生成器生成其事件并被两个外部应用程序监听(目前运行在同一台机器上)的最佳实践是什么?我们可以使用消息,但这里重要的一点是事件生成器不知道侦听器
  • 对于这种代码,最好使用C(我们希望GPS坐标看起来是真实的,所以它基本上是一些
    随机数
    循环
Datomic:

  • 从F#查询datomic的最佳方法是什么?我们的观点是使用,因为我们没有看到任何其他方法。欢迎提供有关此主题的任何资源,以帮助我们了解如何使用datomic
  • Datomic是POI数据库的一个好选择,还是我们应该选择一个好的旧关系数据库?到目前为止,POI表将是原始的;这意味着我们不会做任何努力将POI组织在网格或树中,以避免为每个已处理的事件查询整个数据库。(我们知道这是不好的,但现在我们只想让它工作,(让它工作->让它正确->让它快速…对吗?)

欢迎部分回答。如果需要,我们将撰写一个完整的回答,以帮助未来对该主题感兴趣的人。

有一个比使用REST API简单得多的解决方案。为了侦听外部事件,为什么不将事件发布到可观察对象,并使用一个套接字侦听器作为订阅方
onNext
是否会写入任何已连接客户端的套接字?