3

我想用 SOA 设计实现一个 Web 应用程序。我正在考虑将 celery 与 Django 结合使用来做到这一点。但我有一些问题:

  1. 这是为 Django 实现 SOA 设计的正确方法吗
  2. 假设这是要走的路,我将如何在 Django 框架中完成身份验证。具体来说,我希望身份验证与生产者和消费者模式分离。这样,可以使用 REST api(或其他任何东西)来生成身份验证凭据,并且可以使用消费者(在 Django 框架内)来读取凭据并对其进行操作。

同样,我应该在 Django 中使用 Celery 执行上述操作吗?

4

2 回答 2

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 看似棘手。

于 2012-05-01T21:05:28.107 回答
4

Django 并不是真正为 SOA 构建的。在身份验证的情况下,Django 有一个定义良好的身份验证框架,可以轻松地允许您跨 Web、API 等重用它。

一般来说,如果你想灵活地定义自己的架构,Django 可能不适合你。您可能需要考虑一些更简约的东西,例如web.py

于 2012-04-29T00:30:25.997 回答