问题是:为什么延续(在中)和协程(在Python语言中)不能更广泛地用于网络编程?
服务器端web编程由于在请求之间保持状态的问题而变得困难。两个优雅且相关的解决方案是continuations (在Scheme、Ruby和Smalltalk中可以找到)和协程(在Python和Go中可以找到)。
Bruce Tate在他的<超越Java >(O‘’Reilly,2005)中谈到Ruby on Rails和是网络编程中令人兴奋的新发展。对我来说,Smalltalk Seaside 才是真正的突破:使用Smalltalk continuations,Seaside让编写复杂的请求/响应序列变得非常容易。
我知道在Tornado和Twisted中使用Python协程来减少回调,但与在单个协程中编写视图/控制器来处理一系列HTTP请求以完成在线购买相比,这有点低级。
我想知道为什么这些在纸上看起来很好的想法没有在和Ruby中得到更广泛的应用。这只是一个文化问题吗?在这些语言中实现的工具的限制?或者,在Web开发的上下文中,这些方法是否存在根本缺陷?
发布于 2012-08-29 10:40:35
我使用过Seaside和continuations,这是开发客户端服务器for应用的一个很好的模型。它们简化了传统的客户机/服务器应用程序,我不敢相信为什么没有其他语言可以做到这一点。
但不幸的是,webapps已今非昔比。不同于只请求一个页面,现在使用ajax可以在不同的时间有多个请求。这就是为什么延续不像以前那么有用了。
甚至Avi Bryant (Seaside的原始作者)也说过,在ajax下,使回调更容易(事件驱动编程)比继续更重要。
有关更多信息,请查看quora讨论:http://www.quora.com/Whats-the-best-continuation-based-web-framework
发布于 2012-08-31 23:29:56
你的应用程序应该写在延续/协程框架上,以及支持库。对于初学者来说,这不是一个容易理解的模型。此外,还有更简单的框架,如gevent,它提供了相同的可能性来制作绿色线程,并且更容易使用,因为有了猴子补丁。
发布于 2012-10-13 23:31:02
主要是因为非技术原因。知道Seaside甚至Smalltalk的人很少,所以没有大量廉价的程序员可以雇佣。因此,知道如何安装和维护Seaside系统的服务提供商的数量也很少。
https://stackoverflow.com/questions/12168583
复制相似问题