用于物联网的 ASP.NET Web API 的性能
介绍
如果您符合以下情况,本指南适合您:
- 物联网开发人员或与物联网人员合作,为连接的设备提供通信支持
- 对为设备构建 Web 服务感兴趣
- ASP.NET 开发人员
- 任何想要构建原生 HTTP Web 服务的人
我在本指南中的目标是说服您至少考虑使用 ASP.NET Web API 作为为 IoT 连接设备编程 Web 服务的主要框架。
阅读我之前的指南《为什么使用 ASP.NET Web API 进行物联网?》以了解更多信息。
表现
WCF 和 ASP.NET 的性能都很好。在这种情况下,这两个框架都不会导致任何问题。让我们考虑一个简单的 API 调用。
public string Get() {
// Return the list of the data
return dataList;
}
性能取决于某些因素:
- 可供程序运行的 CPU 和 RAM 资源;ASP.NET Web API 可以托管在程序中。
- 网络带宽和吞吐量。
- 其他服务在后台运行。
- 数据引擎返回数据或从内存或文件加载数据所需的时间。
其余部分由 ASP.NET Web API 执行,将数据序列化为 JSON 格式并通过网络发送数据。大多数情况下,数据的序列化和反序列化可能需要一些时间。幸运的是,ASP.NET Web API 使用 Newtonsoft.Json API执行数据(反)序列化操作,速度非常快。
即使是 ASP.NET Web API 的入口级和出口级门也经过了精细调整,不会给任何性能因素带来困难。这使得 ASP.NET Web API 成为一个非常强大的框架,可以在 HTTP 协议之上创建 Web 服务。
无论内存基准有多小,WCF 都会使用大量低效的服务来上传和运行整个项目,并使用 TCP/IP 进行处理。HTTP 基于 TCP,不会在通信中引起同样的问题。
服务自托管
如果您认为 ASP.NET 和 WCF 都需要以相同的方式运行整个项目,那您就错了!
ASP.NET Web API 是一个开源项目,您可以在最小的控制台应用程序中托管该项目。这种托管方法允许项目将 RAM 和 CPU 资源用于所需的请求处理,而不是用于其他根本不需要的服务。
是的,在控制台程序中托管 Web API 所需的唯一代码如下,
// Namespace references
using System.Web.Http;
using System.Web.Http.SelfHost;
/*
* This goes in the main function
* The main function is required, rest is optional.
*/
// Create a new object with the address where you want to host the application at.
var configuration = new HttpSelfHostConfiguration("http://localhost:12345");
// Add the routing scheme, this is required.
config.Routes.MapHttpRoute("Default", "api/{controller}/{id}", new { id = RouteParameter.Optional });
// Start the service.
using (var apiServer = new HttpSelfHostServer(configuration))
{
apiServer.OpenAsync().Wait();
// Wait for the server manager to close it. Until then, anyone can connect.
Console.WriteLine("Press Enter to quit.");
Console.ReadLine();
}
这是托管服务所需的代码,您可以在任何地方托管该服务。其余的工作是使用 ASP.NET Web API 的代码,您使用它来实际处理请求。此代码会将请求转发给 API 控制器,它们将根据所使用的 HTTP 动词执行操作。这使您的 Web 服务能够以非常低的内存运行,并且消耗很少的 CPU 时钟周期。
以下是一些使 ASP.NET Web API 成为我个人最喜欢的用于为连接设备构建 Web 服务的框架的原因。
跨平台支持
流行的 WCF 框架还有另一个关键问题:在 Android、iOS 和微控制器等平台上使用服务很困难。使用 TCP/IP 或 HTTP 等本机协议可以解决该问题。
本机协议允许所有设备轻松实现这些协议而不会出现问题。与 WCF 不同,本机协议不需要服务器颁发任何客户端证书。ASP.NET Web API 可以托管在小型环境中,也可以发布到服务器上,您的企业库和云解决方案可以在这些服务器上为客户端提供弹性、快速的响应。这样,您就可以允许通过 HTTP 协议与任何客户端进行通信。
如今,TCP/IP 和 HTTP 协议可以在每个平台上进行编程,例如:
视窗
- Windows 运行时(Windows 8 和 Windows 10 应用程序)
- .NET 框架
- 本机 Windows 服务
Linux
- 安卓
- Ubuntu
- 其余 Linux 发行版
Apple 产品
微控制器
因此,原生服务可以在每个平台上使用,因此您完全不必担心底层框架。此外,使用原生服务还可以让您访问原生 GUI 和原生 UX 指南,因为您可以访问应用程序本身中的数据并将其呈现在屏幕上、将其说出来或打印数据。当您跨平台时,一切皆有可能。
下一步
继续阅读我的下一篇指南《为 IoT 构建和连接 ASP.NET Web API》,深入了解如何构建和连接 ASP.NET Web API。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~