出于个人和大学研究的原因,我正在考虑使用面向服务的架构构建一个简单的 CRM。它的意义只是为了解释架构本身,而不是商业用途。
我正在考虑实施一个提供简单分析服务和客户服务(用户存储、个人评论和其他一些东西)的 CRM。
我正在设计的架构定义: - WebGUI(其他服务的客户端) - AnalyticsService(接收数据、分析和收集数据的服务) - CustomerCareService(使用 RESTful API 应用 CRUD 操作的服务)。
每个服务都有自己的数据库,完全独立于其他服务。它们公开了一个公共接口。该接口当然必须提供某种身份验证,以拒绝未经授权的请求。
我想在这种架构中解释的优点是所有事物都独立的可能性以及将它们组合起来以提供新服务的能力(例如,如果有一个 OrderService 来处理订单,那么很容易将它与使用公共 API 的客户)。对我来说最大的优势是构建使用这些服务的其他客户端很容易。
我不知道什么是好的身份验证方法,可以很容易实现,我也不确定如何制作这个 API(使用 XML 或带有 GET/POST 数据的普通 REST API)。我曾与 Amazon、PayPal 和其他公司 API 合作过,他们似乎使用 REST 服务(paypal 使用丑陋的 _cmd GET 参数,而 Amazon 使用更好的 URI)来知道该怎么做,但是阅读一些关于 SOA 的东西似乎人们也使用XML。当然,我还需要考虑到 Web 界面必须能够识别登录用户、获取权限(令牌或其他任何内容)并将其与服务一起使用以显示信息。所以我不确定 SOA 是不是我真正构建的那种架构……是 SaaS 而不是 SOA?我认为使用 RESTful 应用程序会更好,
为清楚起见,我在这里列出我的问题:
- 这种架构是称为 SOA 还是 SaaS(或两者兼有)?
- 对于我想要获得的东西,什么是好的实现?(请尽可能详细地解释)
- 哪种身份验证更适合客户端(用户令牌与 OAuth 或类似)
- 您对此类项目有什么建议吗?
我有大约 3 个月的时间来做这件事,所以我不能做一些真正复杂的事情(除了这对于单个程序员来说是不现实的事实)。
我知道 Python(WSGI 框架)、Ruby on Rails、C/C++ 和其他语言(.net 除外),我想在 Linux 环境下开发它(MySQL 或 Postgres,如果您有任何建议,甚至可以使用 NoSQL正确的选择),我还可以将这些服务独立程序的几种语言结合起来。
我想在这里有一些好的观点和一些好的建议。
谢谢!