我想用SOA设计实现一个Web应用程序。我正在考虑将芹菜与Django结合使用来做到这一点。但我有一些问题:
同样,我应该在Django中使用Celery进行上述操作吗?
答案 0 :(得分:9)
消息队列(例如由celery代理的rabbitmq)是处理SOA组件之间通信的完美方式。此外,如果您需要实时通信而不在服务之间共享数据库,则REST基本上是为此而制定的。在Django之上实现REST服务有几种选择,Tastypie和Django-Rest-Framework是受欢迎的选择。
至于在组件之间传递身份验证,Django有几种选择。与流行的观点相反,Django身份验证框架非常灵活,支持对您可以编写后端的任何内容进行授权/身份验证。有关此问题的文档,请参阅https://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend。
已经有很多例子:
至于发布身份验证,选项较少,但其中包括:
我强烈建议您使用已经构建并经过自行测试的提供程序包。实施SSO看似棘手。
答案 1 :(得分:4)
Django并不是真正为SOA而构建的。在身份验证的情况下,Django有一个定义明确的身份验证框架,可以轻松地在Web,API等上重用它。
一般来说,如果您希望灵活地定义自己的架构,Django可能不适合您。你可能想要考虑一些更简约的东西,比如web.py。