实现 WebApi 自托管服务宿主于 WinForms 及其交互
实现 WebApi 自托管服务宿主于 WinForms 及其交互
在 Windows 平台 Web 服务一般托管于 IIS. 在开发中, 会遇到 WinForms 或 WPF 服务端程序需要提供对外 API 作为服务. 在本文详细介绍 WebApi 自托管于 WinForms 中, WPF 或 Console 程序实现类似.
0. 完整示例演示
1. 新建解决方案以及 WinForms 工程
1.1. 新建解决方案及工程
如下图所示:
- 建立空白解决方案及 Winforms 工程,
- 新建
Controllers
文件夹用于存放 WebApi 代码, - 新建
Services
文件夹用于存放服务代码.
1.2. 拖拽控件
绘制必要控件, 布局如下:
备注: 绘制一个 NumericUpDown 和两个 Button 控件.
1.3. 引用相关 NuGet 包
Microsoft.AspNet.WebApi.Client
Microsoft.AspNet.WebApi.Core
Microsoft.AspNet.WebApi.SelfHost
2. 开发 HTTP 服务类
/// <summary>
/// HTTP service.
/// </summary>
public class HttpService : IDisposable
{
/// <summary>
/// HTTP server's listening port.
/// </summary>
public int Port {
get; set; }
/// <summary>
/// HTTP self hosting.
/// </summary>
private readonly HttpSelfHostServer _server;
/// <summary>
/// HTTP server.
/// </summary>
/// <param name="port">Listening port.</param>
public HttpService(int port)
{
this.Port = port;
var config = new HttpSelfHo