我想开始将我的应用程序拆分为微服务。我的首要任务是删除我们每个应用程序中重复的功能。诸如电子邮件发送,导出,搜索索引等操作-在每个应用程序中重复相同或相似代码的操作。

我只是觉得有点不知所措,开始努力。我知道微服务的目的是可以为工作选择正确的语言,但是出于我们当前的目的,我假设.NET将是构建所有内容的主要框架。

基本上,首先,我想创建一个微服务,该服务仅发送我们所有应用程序都可以交谈的电子邮件,并告知他们发送所需的电子邮件。我当时的想法是电子邮件发件人具有发送电子邮件的逻辑,但是每个应用程序都需要告诉收件人,正文等。

我正在努力解决以下问题:

  • 应用程序应使用哪种协议(protocol)与该服务进行通讯?通过HTTP REST?如果是这种情况,那么发送微服务的电子邮件是否将仅仅是Web API 2应用程序(如果我要构建REST api,这就是我个人会使用的应用程序)。
  • 如果我要使用REST,从后端发出 Restful call 的最佳方法是什么?现在,我们系统中的大多数电子邮件都是通过后端代码发送的。我已经看到了RestSharp名称,这通常被认为是最好的方法吗?
  • future 的计划,我认为拥有某种了解所有服务的网关将是有益的,这样每个应用程序只需要了解此网关,然后网关便可以与它需要的任何服务进行对话。这仅仅是应用程序和微服务之间的另一个REST API吗?

  • 对所有问题都感到抱歉,为了开始在我的工作场所工作,您可以开始所有这类工作(以及一般的体系结构),这对我目前有所帮助。

    最佳答案

    由于电子邮件是一个固有的异步过程(即生即忘),并且通常需要使用一些不可靠的资源,因此最好通过消息队列(MSMQ,RabbitMQ等)与它们集成,并且它们通常具有相当不错的.net蜜蜂。

    如果您不喜欢电子邮件之类的简单事物,那么可能值得花时间查看队列周围的大型框架,以便为重试,错误管理,事务管理等提供更好的支持。这些通常称为“服务总线”技术, .net中有几个不错的免费OSS,包括MassTransitRebus。如果/当您寻找一个完全受支持的.net服务总线时,您可能会发现NServiceBus,出于全面披露的目的,我是原始作者。

    10-07 19:43
    查看更多