将数据(复杂数据/原始数据)发送到服务并获取响应(复杂数据/原始数据)的最佳方式(WCF 或 WEB API)

Posted

技术标签:

【中文标题】将数据(复杂数据/原始数据)发送到服务并获取响应(复杂数据/原始数据)的最佳方式(WCF 或 WEB API)【英文标题】:Which is the best way (WCF or WEB API) to send data(complex data/primitive data) to a service and get the response(complex data/primitive data) 【发布时间】:2018-11-03 12:58:44 【问题描述】:

我有一个场景,假设 A 是一个基于 Web 的应用程序,需要根据从组件 B 返回的数据在屏幕上显示一些数据。 现在 A 向 B 发送事件的一些数据(这将是组件 B 的输入参数),组件 B 将对输入参数进行计算并将数据返回给 A。 A 和 B 都由不同的组织处理,那么它们之间的最佳通信方式是 WCF 还是 WEB API(也建议我们如何实现这种场景)?

我正在考虑在这里为组件 B 创建 Web API,以便 A 可以使用它并调用组件 B,并以 JSON 格式传输数据。 但是这种方法的问题是,这个请求将是 GET 请求,我们不能在 GET 请求上发送复杂类型。即使我们是通过JSON格式进行通信,我们如何在GET请求中发送大量数据。如果我的理解有误,请纠正我。

输入参数的数量在 10 到 20 之间,对组件 B 的请求次数非常频繁,因此我们还必须注意性能。

更新 1: 第一个问题是我们无法在请求正文中为 GET 发送数据。

【问题讨论】:

还取决于其他事情(可靠的消息传递、数据加密......)。为什么不能将 WebApi 与 POST 一起使用? WebApi 实现简单性和速度 / WCF 实现复杂性和安全性 使用 POST 获取数据是否正确,我们是否违反了 GET 的目的? 我会写答案,这样它会更易读 【参考方案1】:

通常问题是WCF for complexity and securityWebApi for simplicity and speed。如果不需要 WCF 功能,我会选择 WebApi。如果您需要通过请求发送复杂的数据,您可以使用 POST。 使用 POST 请求数据是完全正确的,只有很小的限制。 看这里:https://www.w3schools.com/jquery/jquery_ajax_get_post.asp

【讨论】:

这个答案对我来说似乎是解决方法,但不能消除我的疑问,因为如果系统正在获取 POST 请求的数据,那么实际上这违反了 REST 原则。

以上是关于将数据(复杂数据/原始数据)发送到服务并获取响应(复杂数据/原始数据)的最佳方式(WCF 或 WEB API)的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法正确获取图像数据或无法将数据发送到服务器?

zabbix自动生成监控报表并定时发送邮件

目标 c - 尝试将“原始”“应用程序/json”数据发布到服务器 API

IT兄弟连 JavaWeb教程 使用AJAX发送POST请求并获取响应

使用 GET 将数据作为复杂对象从 API 控制器请求数据

Java将udp数据包发送到dns服务器