为 IoT 构建和连接 ASP.NET Web API

发布日期:2026-07-13 10:34:03   来源 : 杭州电子商务研究院    浏览量 :0
杭州电子商务研究院 发布日期:2026-07-13 10:34:03  
0

介绍

如果您符合以下情况,本指南适合您:

  1. 物联网开发人员或与物联网人员合作,为连接的设备提供通信支持
  2. 对为设备构建 Web 服务感兴趣
  3. ASP.NET 开发人员
  4. 任何想要构建原生 HTTP Web 服务的人

我在本指南中的目标是说服您至少考虑使用 ASP.NET Web API 作为为 IoT 连接设备编程 Web 服务的主要框架。

阅读我之前的指南《物联网的 ASP.NET Web API 性能》,了解有关性能的更多信息。

构建小型 Web 服务

ASP.NET Web API 控制器用于定位和控制如何执行 URL 映射以向客户端提供结果和响应。

要创建新的 Controller,我们使用System.Web.Http.ApiController类作为对象的基类。稍后,为该路由设置 HTTP 动词函数。使用ASP.NET Web API 框架的Route属性设置路由。其余部分基于 C# 编程,从函数返回值并接受函数作为参数的值。

      // Add the namespace imports
namespace Sample {

  // Add the route attribute, this would be accessible at: localhost:12345/api/microcontrollers/
  [Route("api/microcontrollers")]
  public class MicroControllers : ApiController { // Note the inheritance
    // Adding the HTTP helpers
    public string Get() {
      return "Hello, world!";
    }

    [Route("api/microcontrollers/{name}")]
    public void Post(string name) {
      dataModel._name = name; // Save the naem
    }

    [Route("api/microcontrollers/{id}")]
    public void Delete(int id) {
      dataModel.Delete(x => x._id == id); // Sample function to delete the data.
    }

    /*
    * You can add other functions named with the HTTP verb
    * such as:
    * 1. PUT
    * 2. OPTIONS
    * etc.
    */
  }
}
    

这是用于控制器的完整 Web API。虽然它不支持 API 的许多功能,但它应该可以帮助您了解映射 Web API 的优势。注意到这个程序有多简单了吗?其余工作由处理方法完成,您可以在其中定义如何为 URL 映射定义例程。

编写其他 HTTP URL 帮助程序

由于该程序非常简单,我将向您展示如何在应用程序的特定控制器中添加更多要处理的 URL。请注意,我们已使用控制器操作上的Route[("path")]属性将应用程序路由到 HTTP 请求。我们可以在其他操作上使用这些,以在同一个控制器中定义不同的路由。

查看上面的代码并查看 HTTP GET 操作处理程序。如果我们想处理另一个 GET 请求怎么办?

为此,我们可以更改想要映射到的 URL,并仍然在此控制器下处理该请求。像这样:

      Route("api/microcontrollers/anotherurl")]
public string Get() {
  return "Hello world
    

现在,如果我们将请求更改为 URL localhost:12345/api/microcontrollers/anotherurl,我们将被映射到一个操作,并且结果将从该操作生成。这确实很有帮助,并且可以轻松处理同一控制器下的多个 URL 和操作,而无需为每个要映射的 URL 创建单独的模块或引发错误

连接到 Web 服务

我们知道,我们的服务是基于 HTTP 的基本服务,可以使用任何 HTTP 客户端轻松使用。大多数框架都支持 HTTP 通信,每个操作系统都有允许通过网络进行基于 HTTP 的通信的 API。

基本上,在开始工作之前,您无需担心任何事情。HTTP 客户端以 C#、Java、C++、Python 和几乎所有其他编程语言提供,以促进应用程序内网络通信。我将带您了解允许与您的服务进行 HTTP 通信的 .NET 框架的 HTTP 客户端。

Http客户端

.NET 框架通常使用HttpClient对象(与WebClient相对)。这为您的应用程序提供了对网络通信的访问,并允许您使用 HTTP 动词(如GETPOST等)发送请求。您还可以在序列化发布过程的数据后将内容发布到服务器。

与其他IDisposable对象一样,HttpClient还允许您将其余的内存清理和资源处置工作留给 .NET 框架。这样,大多数时候,您就可以专注于网络编程,而不是内存清理。

接下来,让我们看看如何在 .NET 应用程序中使用HttpClient对象连接到服务。

请注意,如果您可以在应用程序中定位System.Net.Http命名空间,则可以在任何项目或应用程序中使用HttpClient 。

该程序的主要功能如下所示:

      // // Namespace import
using System.Net.Http;

// Deep inside the function
using (var client = new HttpClient()) {
  // Use the API here.
}
    

这是您使用应用服务时应使用的模板。例如,从 API 获取“Hello world”消息的基本程序如下所示:

      using (var client = new HttpClient())
{
  // It is recommended to add a base address, instead of pushing this to the HTTP request functions.
  client.BaseAddress = new Uri("http://localhost:12345/");

  // Get the response from the API
  var response = await client.GetAsync("api/microcontrollers/");

  // Check if the request succeeded.
  if (response.IsSuccessStatusCode)
  {
    // Get the message.
    var msg = await response.Content.ReadAsStringAsync();
    Console.WriteLine(msg); // Hello, world!
  }
}
    

这样,您就可以远程访问 API。其他 ASP.NET 基础知识类似。例如,HttpClient允许您使用其他函数执行其他 HTTP 请求,例如POST,您可以在其中将一些内容发布到服务器。请注意,发布需要一些复杂的方法,您还必须包装并以字节数组的形式将数据传递给服务器。然后在服务器端加载和读取此数据。

对于微控制器来说,这没什么意义,因为您不太可能传输媒体(因此使用字节数组)。因此,您当然可以查看有关微控制器上 .NET 框架中的网络编程的众多文章之一。

结论

感谢您的阅读。我希望您现在了解了 ASP.NET 与传统 WCF 框架相比的诸多优势。此外,我希望平台之间的相似性能让您意识到 IoT 的概念实际上并不像人们所认为的那样“新”!

以上内容来自杭州电子商务研究院推送
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据