如何最好地在两个 ASP.NET 核心服务器应用程序之间进行通信?

How best to communicate between two ASP.NET Core server apps?

我有两个 ASP.NET Core Web 应用程序(在不同的物理服务器上),并且都使用 EF Core。虽然两者都是 "servers",但其中一个也从另一个收集数据(即其中一个也是 "client")。

ASP.NET核心不同,因为没有"MVC"和"WebAPI",它结合了两者。我不确定要使用哪些新 API。

我应该如何将数据从一个传输到另一个?

我最初的想法是 "client" 应用程序具有经过身份验证和授权的 GET 操作,其中 return 是数据。但是怎么办?可以直接return一个EF实体吗,还是我负责序列化to/fromJSON?应该 return IActionResult 还是其他?应该是常规请求还是 AJAX 请求? OWIN 是否与此有关?

ASP.NET Core 现在是否有任何智能技术可用?我不需要解决方案,只需要一些正确方向的指示。

虽然框架可能有新的助手methods/objects/etc。在这里或那里,关于客户端和服务器之间的 HTTP 通信并没有真正改变。确实,从客户端的角度来看,无论后台使用什么技术,服务器都没有区别。

Can it directly return an EF entity

当然可以,正如 Web API 过去所做的那样。像这样简单的东西:

public Widget Get(int id)
{
    return _widgetRepository.Get(id);
}

(假设这里实现了某种存储库,但您明白了。)

默认的 HTTP 响应通常是 JSON-formatted 响应 body 和 200 OK 响应代码。您可以通过各种框架帮助器更好地控制它,其中有一些不错的概述和介绍 here

无论您如何 return 来自服务器的任何给定结果,客户端仍会像其他任何响应一样获得 HTTP 响应。代码、headers、内容等