core.async是取代了拉米纳,还是打算取代拉米纳?
如果没有,是否有一种比另一种更可取的明显情况?
发布于 2014-11-07 17:26:27
我是“Lamina”的作者。我认为core.async是一个精心制作的库,它的设计比Lamina要清晰得多.有些事情我认为Lamina更擅长,主要与内省、性能和可扩展性有关。
我在core.async中遇到的最大问题是,除了流抽象之外,它还带来了一个执行模型(一切都发生在core.async线程池上),这意味着如果您在任何地方使用它,它都会限制代码库中其他所有内容的设计和实现。
我已经看到了许多将流公开为core.async通道的“异步”库,这意味着只有在您满意地使用core.async执行模型的情况下才能使用这些库。
我即将发布一个库,它试图成为一种“最小”的流表示,可以用来代替core.async、Lamina、Java阻塞队列等,称为Manifold。流形流可以被胁迫到core.async通道、Lamina通道等等,而这些东西中的任何一个都可以强制返回到流形流中。
我认为“异步”景观还很年轻,还有很多未经探索的问题。抽象的规模有多大,在生产中调试起来有多容易,等等。JVM提供了许多内省工具,但是由于异步机制使用的是完全不同的执行模型,我们基本上从头开始。我不会告诉您在core.async上使用Lamina,但是我要提醒您,core.async是应用程序级的抽象,而不是库级的抽象。
发布于 2014-11-07 12:21:07
core.async和Lamina是两个不同的项目,它们并不打算相互替代。实际上,他们可以一起玩得很好,-if你想-。
Lamina是一种面向流的方法,而core.async是面向消息的。
该用哪一种取决于你。在Lamina中,重要的是您为通道定义的回调,而在core.async中,通道和go块是解耦的,这是更加灵活和模块化的。
https://stackoverflow.com/questions/26801027
复制相似问题