面向服务的架构建议

2024-03-09

出于个人和大学研究的原因,我正在考虑使用面向服务的架构构建一个简单的 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 应用程序,使用 JSON 或类似的东西来实现它(我不是 XML 的忠实粉丝,我发现它太冗长了)。

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

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

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

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

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

Thanks!


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

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

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

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

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

  • http://www.soapatterns.org/ http://www.soapatterns.org/
  • http://martinfowler.com/eaaCatalog/ http://martinfowler.com/eaaCatalog/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面向服务的架构建议 的相关文章

随机推荐

  • 错误的snakemake glob_wilcards 和 wildcard_constraints

    在我的 Snakemake 管道中 我试图检索正确的通配符 我研究过 wildcard constraints 和这个帖子 https stackoverflow com questions 66882849 snakemake how t
  • 使用 jersey 和 grizzly 启用 JSON

    我正在玩 Grizzly 托管的 Jersey 并且希望能够使用和生成 JSON 但是我在 get 请求中从服务器收到 500 并且 POST 中不支持媒体类型 我的服务器代码是 org glassfish jersey server Re
  • Safari 9.0无法播放存储服务器上的mp4视频

    以下视频链接无法用safari 9 0 最新版本 播放 但老版本的 safari chrome 和 firefox 都可以玩 http assets00 grou ps 0F2E3C wysiwyg files Videos saksuka
  • 执行迁移时 Npgsql 找不到 NpgsqlException

    当我做一个update database我得到的数据库发生错误 System Runtime Serialization SerializationException 类型不是 已解决成员 Npgsql NpgsqlException Np
  • Holo 主题可以与自定义标题栏一起使用吗?

    我有一个应用程序 它使用以下样式为应用程序主题绘制自定义标题栏 这并没有给我全息主题 所以我将其设置为parent android style Theme Holo 这会使应用程序崩溃并出现以下错误 E AndroidRuntime 204
  • 使用 CAMediaTimingFunction 计算时间 (t) 处的值

    在Cocoa Touch中 CAMediaTimingFunction代表四个控制点 它们指定定时函数的三次贝塞尔曲线 对于我正在编写的应用程序 我希望能够在任意时间 t 0 gt 1 提取所述贝塞尔曲线的结果 让我困惑的是 当我查找如何d
  • CBOW 与Skip-gram:为什么要颠倒上下文和目标词?

    In this https www tensorflow org versions r0 9 tutorials word2vec index html vector representations of words页面上 据说 skip
  • SQL Server 2005 Unicode字符串排序问题

    我有一张名为 Soum 的表 这张表有NVARCHAR 100 字段命名 Name 但排序依据name 那个错误的工作 请看图片 执行查询后 第一个红行排序错误 我不明白为什么这是错误的工作 我检查了字符是否相同 但红色行中的 字符是相同的
  • git:如何从远程分支获取并合并到本地分支?

    我分叉自 github com mantisbt mantisbt https github com mantisbt mantisbt 这导致 github com MYACCOUNT mantisbt 从我克隆它的地方并将分支 我感兴趣
  • 命名空间 .AspNetCore.Hosting 与 .Extensions.Hosting

    在我的 ASP NET Core 2 0 项目中 我一直在使用 Microsoft Extensions Hosting 命名空间中的 IHostingEnvironment 和 IApplicationLifetime 在 ASP NET
  • 如何在 C# 中将字符串数据作为 ZIP 存档上传到 FTP 服务器

    这是我的代码 我想导出 上传这个 dat文件以 zip 格式传输到 FTP 服务器 我尝试了很多但没有找到任何解决方案 任何人都可以帮助我解决这个问题 public string ExportVoid FileSetups fileSetu
  • WebSocket 慢 - Java 和 JavaScript

    我正在处理我的世界插件的编码 但现在我遇到了以下问题 我的 websocket 服务器响应非常非常慢 这是我的 WebSocketClass 用于插件 套接字服务器类 package me mickerd pcoc import java
  • 约束包含仅适用于概念吗?

    考虑这个例子 template
  • 以与输入 R 相同的格式在 R 中输出向量

    也许我在想象这一点 但我认为有一个内置的 R 函数 可以让您以用于输入该对象的格式打印 R 向量 以及可能的其他对象 如矩阵和数据帧 返回为一个字符串 例如 gt x lt c 1 2 3 gt x 1 1 2 3 gt magical f
  • 从表中随机获取3条记录

    我已经阅读了类似查询的多个答案 但似乎没有一个能切中要害 假设我有一个包含 10 行的表 如何使用实体框架从该表中检索 3 个随机行 不只是 1 个随机行 而是 3 个随机行 每行都彼此不同 提前致谢 var threeRandomFoos
  • 如何在Android应用程序中自动填充编辑文本?

    我正在开发一款安卓应用程序 其中我有一些产品和购买该产品的表格 在订单表格中 我有一个 编辑文本作为产品 指产品名称 在我的应用程序中 用户必须输入产品名称 但我想知道有什么方法可以 EditText 字段会自动填充特定的产品 就像 Fli
  • c# 使用linq对数据表中的多列进行分组

    我的数据表中有三列 字符串 日期时间和小数 我想按字符串和小数列进行分组 对于分组的行 我想对小数值求和 我知道如何进行求和部分 但是如何对数据表中的两个不同列进行分组 这是我到目前为止无法正常工作的代码 var newSort from
  • Java - 在两个不同的数组中查找唯一元素

    我需要找到两个不同数组中的唯一元素 public static void main String args TODO Auto generated method stub int arr1 new int 1 2 3 4 5 6 int a
  • 如何清除mysql中的查询缓存?

    我在 root 提示符下尝试过此操作 但没有帮助 mysql gt RESET QUERY CACHE 这显示了 Query OK 0 rows affected 0 00 sec 但历史依然存在 如何清除或删除我输入的查询的历史记录 查询
  • 面向服务的架构建议

    出于个人和大学研究的原因 我正在考虑使用面向服务的架构构建一个简单的 CRM 其意义只是解释架构本身 并非商业用途 我正在考虑实施一个 CRM 提供简单的分析服务和客户服务 用户存储 个人评论和其他一些东西 我正在设计的架构定义 WebGU