两个ASP.NET Core服务器应用之间的最佳通信方式是什么?

5
我有两个ASP.NET Core Web应用程序(在不同的物理服务器上),两者都使用EF Core。虽然两者都是“服务器”,但其中一个还从另一个收集数据(即其中一个也是“客户端”)。
ASP.NET Core不同之处在于没有“MVC”和“WebAPI”,它将两者结合起来。我不确定要使用哪些新API。
我该如何将数据从一个应用程序传输到另一个应用程序?
我的初步想法是,“客户端”应用程序具有经过身份验证和授权的GET操作,返回数据。但是如何实现呢?它可以直接返回EF实体,还是我需要负责序列化/反序列化为JSON?它应该返回IActionResult还是其他内容?它应该是常规请求还是AJAX请求?OWIN与此有关吗?
ASP.NET Core现在是否有任何智能技术可用?我不需要解决方案,只需要指出正确的方向。

3
从客户端的角度来看,无论服务器是“核心”、“Web API”还是其他技术,都没有任何区别。不管使用什么框架,其外部行为都是相同的。我想你会有返回数据的操作(通常是 JSON 格式,但你可以使用任何格式),就像在之前的 Web API 版本中一样。 - David
@David 当然可以,但是Core是新的和闪亮的,我怀疑可能有一些很酷的东西可以使所有这些变得容易。例如,它允许从操作返回各种数据,这以前是不可能的。基本上,我不想重新发明轮子。 - grokky
在之前的 Web API 版本中,如果你想要“返回一个 EF 实体”,那么你只需要从该方法中“返回”该对象。我认为这已经无法再简单了。在 C# 中,当你想要从一个方法返回某个东西时,你就会“返回”它。无论新版本有多么新奇,该框架仍然使用 C#。也许你可以用一个例子来说明你想要简化的是什么? - David
@David 我不知道你可以简单地返回一个实体。我在 asp.net core文档站点 上找不到任何提及这个的信息。它会自动序列化为JSON吗? - grokky
这看起来很适用:https://learn.microsoft.com/en-us/aspnet/core/mvc/models/formatting。根据您需要控制响应的程度,有各种选项可供选择。当返回任何对象时,带有“200 OK”响应代码的JSON格式响应体通常是默认值。但是,您可以通过使用特定的框架结果类型和辅助方法(例如Ok()Json())来更好地控制HTTP响应。 - David
1个回答

2
虽然框架可能会有一些新的帮助方法/对象等,但是客户端和服务器之间的HTTP通信并没有真正改变。实际上,从客户端的角度来看,无论使用什么技术,服务器都没有区别。
“它能直接返回EF实体吗?”当然可以,就像Web API过去所做的那样。以下是一个简单的例子:
public Widget Get(int id)
{
    return _widgetRepository.Get(id);
}

假设这里有某种存储库的实现,但您可以理解这个想法。
这种情况下,默认的HTTP响应通常是一个JSON格式的响应主体和200 OK响应代码。您可以使用各种框架助手来更好地控制它,这里有一些很好的概述和介绍here
无论如何从服务器返回任何给定结果,客户端仍然会像其他任何HTTP响应一样获得HTTP响应。代码、头文件、内容等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接