【问题标题】:Service Oriented Architecture suggestions面向服务的架构建议
【发布时间】:2012-04-11 11:35:15
【问题描述】:

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

我正在考虑实施一个提供简单分析服务和客户服务(用户存储、个人 cmets 和其他一些东西)的 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 应用程序,使用 JSON 或类似的东西来实现它(我不是 XML 的忠实粉丝,我觉得它太冗长了)。

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

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

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

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

我想在这里有一些好的观点和一些好的建议。

谢谢!

【问题讨论】:

    标签: web-services rest soa saas


    【解决方案1】:

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

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

    良好的 SOA 实现是关于定义良好且灵活的接口,非常清晰地划分职责。然而,它很难被规范。证据在吃;它是否提供了灵活的重用。我的建议是花时间阅读 SOA 设计模式资源,并了解与使用的适当上下文有关的定义特征。然后应用单一职责原则适当的抽象级别。参考文献(Domain) Space Based Architecture 是一种 SOA 元模式。

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

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

    【讨论】:

    • 谢谢,很棒的答案!你没看错,资源很有帮助,我也买了一些书,很有意思的生意!
    【解决方案2】:

    SOA 不强制使用 XML。

    目前,网络技术占主导地位,并定义了未来。 所以我们公司选择 JSON RESTful 服务作为基础。并将 SOA 作为原则。

    建议语言是没有意义的,因为 SOA 和良好实现的目的是 - 启用任何语言或框架

    (仅供参考,我们将 Java 与基于 Spring MVC 的 Web 服务、Node.js、PHP 一起使用)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2021-06-20
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多