【问题标题】:Is an Email Service an appropriate "service" in a SOA?电子邮件服务是否是 SOA 中合适的“服务”?
【发布时间】:2010-11-17 16:51:59
【问题描述】:

创建一个只负责为其他服务发送电子邮件的服务是否有意义?

让我尝试更清楚地表达我的疑问并提供一些背景信息。顺便说一句,如果您愿意,可以忽略“SOA”一词。我包含它的目的是传达我正在谈论按功能分区的分布式系统。

我不确定“电子邮件服务”是否合适的原因是:

  1. 提供技术功能 而不是一个组织 功能。它不构成 电子邮件,它只是处理 他们。有没有意义 电子邮件服务构成 通过响应域的消息 事件?这是有益的还是 有害吗?

  2. 好像引入依赖 进入所有其他服务 利用它。特别是我做不到 看看如何避免 RPCish 客户与客户之间的互动 电子邮件服务。即使你使用 消息,消息将是 命令样式(告诉电子邮件 发送电子邮件的服务)作为我 理解它不适合 服务之间的通信 因为它们增加了耦合,因为 客户必须具备的知识 关于它所使用的服务 命令它告诉它该做什么。 当然,除非电子邮件服务 编写消息以响应 来自其他服务的领域事件 (见第 1 点)。

  3. 多少值得商榷 它提供的“服务”。其他 话说,SMTP服务器不是已经 “电子邮件服务”?当然, 自定义“电子邮件服务”可能会提供 诸如排队和解析之类的事情 交货报告。多少和什么 应该在电子邮件服务中 真的有必要吗?

另一种方法是让组织内的每个服务负责发送它自己的电子邮件消息。但是,这意味着每个服务都必须依赖于 SMTP 服务器,但这与依赖于自定义“电子邮件服务”有什么不同吗?这也意味着每个服务都将负责排队和交付管理。这是有益还是有害?

此外,电子邮件消息被视为域实体,这意味着组织对消息本身感兴趣,除了引发它们的事件和它们携带的信息。这意味着用户将有兴趣查看在上下文中发送的消息。例如,您可能会查看客户的帐户并要求查看发送给该客户的消息(这些消息可能包括:帐户创建确认、下订单确认、订单发货通知、体验反馈请求等)。

如果我的问题做出某些假设或不清楚,我深表歉意,但根据我所写的内容,任何人都可以提出一种方法或讨论他们采取的方法以及效果如何?我已经四处寻找类似的问题,并在该主题上搜索了谷歌,但没有找到任何真正适用的东西,但如果有人能指出任何资源,我将不胜感激。我也会对指出我可能忽略或误解的事情的答案感兴趣。任何形式的关于此事的讨论对我来说似乎都很有价值。

【问题讨论】:

  • 当您说 service 时,您是指 Web 服务(公开可调用“远程”端点的东西)还是在更广泛的意义上谈论服务,例如如 DDD 中所述?
  • 我的意思是广义上的,所以我想您可以从域服务的角度来考虑它。但是,我正在开发的系统由多个应用程序组成,这意味着为了供每个应用程序使用,它必须是远程的,否则,每个应用程序中必须包含本地版本。

标签: email architecture service soa


【解决方案1】:

这取决于上下文。什么是服务?它是技术资源还是业务资源?

如果您从事技术层面的工作,将大型技术解决方案划分为较小的部分(关注点分离等),那么我同意电子邮件服务可能很适合这种情况。

如果服务是商业服务(例如:“客户信用检查”),那么电子邮件服务不适合。

当然,您没有理由同时拥有两者:业务服务的“顶层”,由(技术)解决方案(由各种子系统和层组成)实现其中包括一系列技术服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    相关资源
    最近更新 更多