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

C# 如何在两个ASP.NET核心服务器应用程序之间进行最佳通信?,c#,asp.net,asp.net-core,asp.net-core-mvc,asp.net-core-webapi,C#,Asp.net,Asp.net Core,Asp.net Core Mvc,Asp.net Core Webapi,我有两个ASP.NET核心web应用程序(在不同的物理服务器上),都使用EF核心。虽然两者都是“服务器”,但其中一个也从另一个收集数据(即其中一个也是“客户机”) NET内核的不同之处在于它没有“MVC”和“WebAPI”,而是将两者结合起来。我不确定要使用什么新的API 我应该如何将数据从一个传输到另一个 我最初的想法是“客户端”应用程序有一个经过身份验证和授权的GET操作,该操作返回数据。但是怎么做呢?它可以直接返回EF实体,还是我负责JSON的序列化?它应该返回IActionResult还

我有两个ASP.NET核心web应用程序(在不同的物理服务器上),都使用EF核心。虽然两者都是“服务器”,但其中一个也从另一个收集数据(即其中一个也是“客户机”)

NET内核的不同之处在于它没有“MVC”和“WebAPI”,而是将两者结合起来。我不确定要使用什么新的API

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

我最初的想法是“客户端”应用程序有一个经过身份验证和授权的GET操作,该操作返回数据。但是怎么做呢?它可以直接返回EF实体,还是我负责JSON的序列化?它应该返回
IActionResult
还是其他什么?应该是常规请求还是AJAX请求?奥文和这有什么关系吗


ASP.NET Core现在有什么智能技术可用吗?我不需要解决方案,只需要一些指向正确方向的指针。

虽然框架可能有新的帮助器方法/对象/等等。在这里或那里,关于客户端和服务器之间的HTTP通信实际上没有什么变化。事实上,从客户机的角度来看,无论在后台使用什么技术,服务器都没有区别

它可以直接返回EF实体吗

它当然可以,就像Web API在过去一样。简单到:

public Widget Get(int id)
{
    return _widgetRepository.Get(id);
}
(这里假设实现了某种类型的存储库,但您已经明白了这一点。)

默认的HTTP响应通常是JSON格式的响应体和
200OK
响应代码。你可以通过各种各样的框架助手来更好地控制它,这里有一些不错的概述和介绍


无论您如何从服务器返回任何给定的结果,客户端仍然会像其他任何客户端一样获得HTTP响应。代码、标题、内容等。

从客户端的角度来看,服务器是“核心”还是“Web API”或任何其他技术都没有区别。无论引擎盖下使用的是什么框架,最终的外部行为都是相同的。我想你会有返回数据的操作(可能是JSON格式,不过你可以使用任何你想要的格式),就像在以前版本的Web API中一样。@David当然,但Core是新的和闪亮的,我怀疑可能有一些很酷的东西可以让这一切变得简单。例如,它允许从操作返回以前无法执行的所有类型的数据。基本上,我不想重新发明轮子。在以前版本的Web API中,如果你想“返回一个EF实体”,那么你只需从该方法返回该对象即可。我不明白怎么会比这更简单。在C#中,当您想从方法返回某个内容时,您可以
返回它。不管它有多新,该框架仍然使用C#。也许你可以用一个例子来说明你想简化什么?@David我不知道你可以简单地返回一个实体。我在报纸上找不到有人提到那件事。它是否自动序列化为JSON?这看起来很适用:根据您对响应的控制程度,有多种选择。返回任何对象时,带有
200 OK
响应代码的JSON格式的响应正文通常是默认值。但是,通过使用特定的框架结果类型和帮助器方法,您可以对HTTP响应进行更多的控制。(例如
Ok()
Json()