面向服务的体系结构建议

6 rest soa web-services saas

出于个人和大学研究的原因,我正在考虑使用面向服务的架构构建一个简单的CRM.它的意思只是解释架构本身,而不是商业用途.

我正在考虑实施一个CRM,它提供简单的分析服务和客户服务(用户存储,个人评论和其他一些事情).

我正在设计的架构定义: - WebGUI(其他服务的客户端) - AnalyticsService(接收数据,分析和收集数据的服务) - CustomerCareService(使用RESTful API应用CRUD操作的服务).

每个服务都有自己的数据库,完全独立于其他服务.他们暴露了一个公共接口.当然,接口必须提供某种身份验证,以拒绝未经授权的请求.

我想在这种架构中解释的优点是可以让所有东西都独立,并且能够将它们组合起来提供新的服务(例如,如果有一个OrderService来处理订单,很容易将它与客户使用公共API).对我来说最大的好处是,构建使用这些服务的其他客户端很容易.

我不知道什么是一些好的身份验证方法,这可能很容易实现,我也不确定如何制作这个API(使用带有GET/POST数据的XML或普通REST API).我曾经使用亚马逊,PayPal和其他公司API,他们似乎使用REST服务(paypal使用丑陋的_cmd GET参数,而亚马逊使用更好的URI)知道该怎么做,但是阅读有关SOA的东西似乎人们也使用XML.当然,我还需要考虑到Web界面必须能够识别登录用户,获取权限(令牌或其他任何内容)并将其与服务一起使用以显示信息.所以我不确定SOA是我真正构建的那种架构......它是SaaS而不是SOA吗?我认为最好使用RESTful应用程序,使用JSON或类似的东西来实现它(我不是XML的忠实粉丝,我觉得它太冗长了).

为清楚起见,我在这里列出我的问题:

  1. 这种架构是SOA还是SaaS(或两者兼而有之)?
  2. 对于我想要获得的内容,有什么好的实现?(请尽可能详细地解释)
  3. 哪种身份验证更适合客户端(用户令牌与OAuth或类似)
  4. 你对这类项目有什么建议吗?

我有大约3个月的时间去做,所以我不能做一些真正复杂的事情(除了对单个程序员来说这是不现实的事实).

我知道Python(WSGI框架),Ruby on Rails,C/C++和其他语言(.net排除),我想在Linux环境下开发它(MySQL或Postgres,如果你有任何建议,甚至是NoSQL)正确的选择),我还可以将几种语言结合起来作为这些服务的独立程序.

我在这里想要的是有一些好的观点和一些好的建议.

谢谢!

Mar*_*mer 1

我将 SaaS 定义为一种商业模式,而不是一种架构;然而,就像所有业务领域需求一样,它会影响系统架构,但它本身却不会。您所定义的内容对于面向服务的架构至关重要。

您的陈述“独立且能够将它们组合起来提供新服务”是建议 SOA 的基本非功能性设计要求。

SOA 的良好实现在于拥有定义明确且灵活的接口,以及非常清晰的职责划分。然而,很难对这个主题做出规定。证据就在吃中;它是否提供了灵活的重用。我的建议是花时间阅读 SOA 设计模式资源,并了解有关适当使用上下文的定义特征。然后应用单一职责原则适当的抽象级别。cf (域)基于空间的架构是一种 SOA 元模式。

关于授权,我建议遵循服务方法,使用分布式目录服务系统(如开放 LDAP),并注意,对于服务提供者和用户来说,拥有自己的凭据是完全合理的,并且您可以使用公钥-私钥来签名消息。

主要建议是学习和借鉴别人的经验: