使用芹菜在 Django 中实现 SOA



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

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

同样,我应该在 Django 中使用芹菜做上述操作吗?

消息

队列(例如由芹菜代理的 rabbitmq(是处理 SOA 组件之间通信的一种完美方式。 此外,如果您需要实时通信而不在服务之间共享数据库,那么REST基本上就是为此而设计的。 在Django之上实现REST服务有几个选项,Tastypie和Django-Rest-Framework是流行的选择。

至于在组件之间传递身份验证,Django 有几个选项。 与流行的观点相反,Django 身份验证框架非常灵活,支持针对您可以为其编写后端的任何内容进行授权/身份验证。 有关此内容的文档,请参阅 https://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend。

已经有很多这样的例子了:

  • 使用 ZenDesk 的 SSO:http://www.jongales.com/blog/2009/05/12/zendesk-remote-authentication-with-django/
  • 从众多社交网络使用SSO:django-social-auth或django-allauth
  • 使用 LDAP:http://packages.python.org/django-auth-ldap/

至于发布身份验证,选项较少,但其中包括:

  • 萨姆尔:https://opensourcemissions.wordpress.com/2010/08/19/django-saml-2-0-identity-provider/
  • 奥斯:http://djangopackages.com/search/?q=oauth

我强烈建议使用已经构建和测试的提供程序包,而不是滚动自己的提供程序包。 实现 SSO 看似棘手。

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

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

相关内容

  • 没有找到相关文章